This page covers five separate mechanisms. They are stellar disasters, expanding supernova fronts, body radiation and atmospheric dust, , and the special Sol orbital decay known as the Earth death spiral. They stay distinct. A system deleted by a radiation disaster starts no supernova front, and atmospheric dust on a body is not the interstellar nebula density of a system. Equations and examples below follow the game’s arithmetic exactly, including strict boundaries and the effects of update order. Database columns are named where a save stores the state.

Game time and state refresh covers when each update runs. Movement and logistics covers body movement and the dust speed limit of a system. Terraforming covers temperature, gas freezing and habitability. Colony lifecycle covers support, growth and unrest. Space combat covers hit resolution and bombardment.

Each construction cycle converts its elapsed time to elapsed years, y = elapsed seconds / 31,536,000, with a fixed year of 31,536,000 game seconds. It then runs these steps in order:

  1. System disasters.
  2. Radiation and dust decay.
  3. The ordinary orbital update.
  4. Expired lifepods, Sorium harvesting .
  5. Water vapour condensation and evaporation.
  6. Ark ship colonist growth.
  7. Removal of empty ground formations.
  8. Body population totals.
  9. The environment and state refresh of every colony.

New disaster or rift radiation can therefore decay in the same cycle that adds it. Rift exposure uses body positions from before that cycle’s ordinary orbital update. The elapsed time y belongs to the construction cycle. It is not necessarily the increment selected on the time buttons, and it is not one movement subpulse.

The system disaster update runs existing supernova fronts first, then every star whose disaster status is anything other than No Disaster, then the game-wide Earth death spiral. All three parts share one error message, Function #1552. An error that no lower message catches ends the whole system disaster update for that cycle, and the changes made before the error stay applied. It does not protect each reached system or body on its own. The luminosity step of a star shows Function #2937 and ends only that step. The climate refresh of the star’s bodies shows Function #2938 and ends only that refresh, and the new luminosity stays. The radiation step shows Function #3971 and ends only that step for that star. Full system cleanup shows Function #1661 and the Earth orbit reduction shows Function #3010, and each ends only itself. In each case the system disaster update goes on with the next star or part.

A star’s disaster status is stored in FCT_Star.DisasterStatus. The game-wide choice is the Sol Disaster option (FCT_Game.SolDisaster) of the Game Information window, and both columns use the same values.

Stored value Sol Disaster entry Effect on the star
0 No Disaster None
1 to 3 Sol Warming 1% Year, Sol Warming 2% Year, Sol Warming 3% Year Luminosity rises with k = 1, 2 or 3
4 to 6 Sol Cooling 1% Year, Sol Cooling 2% Year, Sol Cooling 3% Year Luminosity falls with k = 1, 2 or 3
7 to 9 Earth Death Spiral 0.01 AU, Earth Death Spiral 0.02 AU, Earth Death Spiral 0.03 AU Luminosity unchanged, and the climate refresh below still runs for the star. The game-wide setting drives the Sol death spiral
10 to 12 Solar Radiation 0.05 x Year^3, Solar Radiation 0.075 x Year^3, Solar Radiation 0.1 x Year^3 Radiation with c = .005, .0075 or .01

The three radiation labels show ten times the coefficient the game applies.

The stellar step does nothing for a star with No Disaster and hands the three radiation statuses to the radiation step. Warming and cooling use the star’s Luminosity at the start of the step:

new luminosity = old luminosity x (1 + k x y / 100) for warming, or old luminosity x (1 - k x y / 100) for cooling, where k = 1, 2 or 3 for the matching level.

The change is linear within one cycle and compounds across cycles. The step applies no luminosity floor, no subdivision of the elapsed time and no end date. After the luminosity change it updates every body of that star. A star with an Earth Death Spiral status keeps its luminosity but still reaches this update. Each body that is not a moon receives BaseTemp = max(4, 255 / square root(DistanceToParent / square root(luminosity))). Moons then copy their parent’s base temperature. Each body then receives a surface temperature update, an atmospheric pressure update and a dominant terrain update, in that order. The distance is the stored current distance to the star, DistanceToParent, and not necessarily the semimajor axis.

Radiation uses the absolute game time in years, t = current game time / 31,536,000, rather than the years since the disaster was assigned. When t > 50, the step first computes a destruction threshold H = (t - 50) x 200 x y. A d10,000 roll strictly below H returns the entire system for deletion, before any radiation is added. A roll equal to H survives. The threshold has no cap. H = 1 can never succeed, H = 10,000 fails only on a roll of 10,000, and H above 10,000 always succeeds. A d10,000 roll is a uniform whole number from 1 to 10,000.

If the system survives, each body of the star gains:

added radiation = c x t³ x y / a², with c = .005, .0075 or .01 for the first, second and third radiation level.

Here a is the body’s OrbitalDistance in AU, and a moon uses its parent’s orbital distance. The step uses this stored orbital distance, not the actual distance to the star at that moment, and it applies to every class of body attached to the star. It adds no atmospheric shielding, magnetic field term, dust term or rounding, and it does no direct damage to civilians or installations. Nothing in the step guards against an orbital distance of zero.

When a star’s step returns its system as destroyed, the update logs one System Destroyed event (event names are rows of DIM_EventType) for each race survey of that system. The text reads “The system primary of (system name) has suffered a catastrophic event, which has destroyed the entire system. Any jump point connections have been severed.” The update then runs full system cleanup with the system record removed. It does not trigger a supernova and leaves no propagating blast.

Triggering a supernova immediately runs full system cleanup with the system record kept. It then sets SupernovaElapsedTime to 1.0 second and stores the supplied force in SupernovaForce. The player entry is the Spacemaster Trigger Supernova button on the galactic map, described under Spacemaster interventions. It asks “Are you sure you want to trigger a supernova in (system name)? This will cause massive radiation damage to many systems and potentially destroy shipping.” and supplies force 1.0 on Yes. No age-based stellar countdown and no automatic scheduled supernova exist in play. The Sol radiation disaster above has its own random deletion instead.

Each cycle the update takes every system whose SupernovaElapsedTime is above 0. It computes the old blast radius in light years as elapsed seconds / 31,536,000 and records the systems already strictly inside that radius. It adds the cycle’s elapsed seconds and computes the new radius. It then processes the systems strictly inside the new radius, except those recorded inside the old one. The front therefore advances one light year per fixed year. At exact equality with either boundary, strictly inside matters. A system exactly at the new radius waits for a later cycle. A system exactly on the old radius is still eligible once the new radius passes it. No record of which targets were hit is stored, and nothing ends the blast.

Only systems with a catalogue star entry (KnownSystemID) enter these sets. This is a requirement on catalogue coordinates, not on any player having explored the system. The exploding system needs a catalogue entry too, and without one the update fails with Function #1552 and the system disaster update ends. Every ship and body in a reached system uses the same distance d in light years, measured between the catalogue positions of the two systems. Local fleet and body positions do not change the intensity.

The inverse-square calculation is:

distance = 946,073,047,258,000,000 x d centimetres

I = 10^47 x SupernovaForce / (4 x 3.1416 x distance²), with the distance in centimetres

Each body in the reached system gains I / (AtmosPress x 100) radiation, converted to the decimal radiation level. AtmosPress is the body’s current stored atmospheric pressure. The game applies no minimum pressure. A pressure of 0 under a positive intensity gives no finite amount, the conversion to a radiation level fails, and Function #1552 ends the system disaster update. Elapsed time has already advanced, and that one error covers every system and body together. The failure therefore skips the remaining reached systems, the stellar disasters and the death spiral for that cycle, and the changes made earlier stay. On the next cycle the geometry can treat the failed system as already passed.

Ship exposure uses N = floor(I / 100,000) as a whole number. When N is 0 or less, the update skips the ship and salvo part for that reached system. Otherwise it takes every ship without a mothership, so not docked in a hangar, from every fleet in the system. Each such ship receives N hits of 1 point, one after another, and the sequence stops for a ship when a hit destroys it. Each hit is one point of ordinary external damage with no attacker, resolved like any other incoming hit. It is neither an automatic hull deletion nor a single N-point hit. Armour, shields, damage randomness and destruction follow the shared damage rules. Then all missile salvos in the system are removed through the owning race’s ordinary salvo removal. That removal also requires N above 0.

The reached-system step does not directly destroy colonies, installations, ground formations, stars or planets. Colonies take the radiation later through their ordinary modifiers. A ship that the damage actually destroys leaves through the ordinary destroyed-ship removal. That removal evacuates survivors for standard races and creates a wreck for every race . The wreck takes the fleet’s coordinates, the class minerals and up to five undamaged salvageable components (those not flagged NoScrap) for each component entry of the class. Wrecks already lying in remote reached systems are not removed by the blast. Clearing the exploding system itself is different.

Full system cleanup runs the stages below in order. It removes records from the game’s lists and does not simulate a salvo against each asset. A supernova uses it with the system record kept, a radiation disaster with the record removed.

Stage Effect
Bodies Adds every body of the system to the removed body ledger, whose rows the next save deletes, and removes the bodies from the list of bodies.
Stars Removes every star of the system, except the primary (Component 1 or lower) when the system record is kept.
Navigation Removes jump points and unlinks their peers, and removes Lagrange points and waypoints.
Fleets Removes each fleet through its owner’s fleet removal, with warnings suppressed.
Other assets Removes the system’s missile salvos, mass driver packets, , contacts, wrecks and lifepods from the game’s lists.
Surveys Removes the race system surveys only when the system record is removed.
Colonies Removes each colony through its owner’s colony removal.
System Removes the system entry only when the system record is removed.

With the record kept, the system and its primary star remain, along with the race survey records. The star does not become a newly selected neutron star or black hole. The cleanup does not recompute every summary built from the removed records. It has no removal stage for body survey records. The “entire system” wording of the event does not mean that every reference to the system is reconciled. What survives a deletion lists the survivors for every deletion path.

A fleet removal ends without removing anything when a shipyard task refers to the fleet, or when the fleet is a colony’s destination for space station construction or for fighter factory construction. These guards apply even with warnings suppressed. They run before the colony stage later in the cleanup, and no second fleet pass follows. For fleets that pass the guards, ships are removed as deleted ships, not through the ordinary destroyed path that creates wrecks. Ground formations embarked on a deleted ship move to a colony of the same race at the fleet’s position when one exists, and are removed otherwise. The cleanup’s own wreck and lifepod stage runs after the fleet stage.

Colony removal deletes the colony’s queued research entries, the sector and naval commands based at the colony, the colony’s contacts and the movement orders that depend on them. A fleet of the same race with an order involving the colony or its contacts loses all its orders, and a civilian freighter or colony ship among them also loses its cargo. The removal then deletes the colony’s shipyards, its shipyard tasks and the ground formations based at the colony. It clears the assignments of commanders posted there and the assigned colony of fleets, and finally removes the colony record. Installations and local queues are no longer reachable once the colony is gone. No disaster-specific random installation salvage exists. Formations embarked on ships follow the ship removal instead of this colony step.

FCT_SystemBody.RadiationLevel and FCT_SystemBody.DustLevel are decimal contamination counters on each body. The game does not tie radiation to a real-world dose unit. Combat adds to both in the colony aftermath of bombardment. For an attack record with damage D = total hits x damage per hit, a missile attack adds D dust and total hits x radiation damage per hit radiation. Any other attack adds D / 20 dust and no radiation in that step. Combat resolves civilian losses and installation damage separately. A missile with a laser warhead still counts as a missile attack.

For every body with radiation or dust above 0, the decay step sums the decontamination rating Q of all ground formations based at a colony on that body. No race, diplomacy, colony size or ownership filter applies. A formation’s rating is the sum over its elements of units x total Decontamination value of the element class's components (DIM_GroundComponentType). In the game database as shipped, only Decontamination Equipment (DIM_GroundComponentType, ComponentTypeID 65) has a nonzero Decontamination value, 0.01. When the formation has a commander, the rating is multiplied by the commander’s Decontamination bonus. Formations embarked on ships without a colony do not count.

For positive radiation R, new R = max(0, R - max(R x (Q + .1) x y, 100 x y)). For positive dust, new dust = max(0, dust - 250 x y). Both are linear calculations over the cycle on the current contamination, with no rounding. They are not exponential half-life decays. The minimum radiation decay of 100 and the dust decay of 250 are per fixed year and scale with y. With Q = 0 the minimum radiation decay dominates below R = 1000. More decontamination does not speed up dust decay.

Dust decay runs a surface temperature update even when the dust reaches 0. Radiation-only decay does not. For ordinary bodies the temperature uses GHFactor = min(3, 1 + AtmosPress / 10 + unfrozen greenhouse gas atm) and AGHFactor = min(3, 1 + DustLevel / 20000 + unfrozen anti-greenhouse gas atm), with SurfaceTemp = max(1, BaseTemp x GHFactor x Albedo / AGHFactor). Gas giants and superjovians take BaseTemp unchanged. The decay step does not itself run atmospheric freezing, hydrosphere or terrain updates. Later cycles and refreshes own those effects, described under climate updates.

Radiation has three colony consequences. The radiation production modifier is max(0, 1 - R / 10,000). The growth penalty is R x .0025 percentage points, rounded to 2 decimal places with an exact half going to the even neighbour. Colonisation pressure gains R / 50. The colony environment update refreshes these after hazard and decay processing, and no radiation source applies them as immediate casualties. Radiation also enters unrest and political progress through the colony’s own rules, described under environment, infrastructure and capacity and political status.

The interstellar dust density of a system, FCT_System.DustDensity, is a separate whole number. In a system with a dust density above 0, it caps fleet speed. When fleet minimum armour thickness x 2500 / FCT_System.DustDensity is below the fleet’s speed, the speed becomes the whole-number part of that value, as described under nebula limits. It does not enter the body anti-greenhouse term. Body dust decay does not reduce it.

Diameters and coordinates are in km. Several qualifying colonies on one construct count once. The colony need not be in the rift’s system, and S has no upper limit. S = 1 stops growth, and S above 1 shrinks the rift. The diameter is not clamped when an extreme interval makes the multiplier negative. Suppression changes growth, not the radiation rate directly.

The game then collects the distinct systems known through any non-NPR race survey, leaving out systems with a nonzero SupernovaElapsedTime. Existing rifts have already grown, but radiation is skipped too. A d100,000 at or below the threshold creates a rift. A success picks uniformly among the eligible systems, and the pick does not leave out systems that already hold a rift.

A new rift starts at a diameter of 10,000,000 km. The rift sits at a random bearing of 1 to 360 degrees and d4000 / 100 x the system scale factor AU from coordinate zero, converted to km. The game holds at most one rift per system. When the chosen system already has one, the creation fails with Function #3266 and ends the creation step. The rest of rift processing then continues.

After a possible creation, when any rift exists the game applies rift radiation before its arrival roll. For each rift, every body in its system whose 2D distance from the rift centre is strictly below D / 2 receives D / 10000 x y radiation. A body exactly at D / 2 is outside. Every included body gets the same amount. There is no inverse-square falloff and no exception for atmosphere, magnetic field, species, colony presence or moons. Growth runs before exposure, so the grown radius and diameter apply to the whole interval. A newly created rift can irradiate at once, though it missed that cycle’s growth. Overlapping sources add independently.

The disaster update handles the three Earth Death Spiral entries of the Sol Disaster option separately, through the game-wide setting. It finds the first body in Sol with PlanetNumber 3, which is Earth, and the first body whose parent is Earth. It then reduces Earth’s orbit by k x .01 x y AU for k = 1, 2 or 3. The reduction is an absolute amount in AU, not a percentage of the remaining orbit. The update assumes both bodies exist and does not check that it found them. It marks Earth for a full database update at the next save. When Earth is destroyed, the update removes Earth and that moon from the list of bodies and resets the game-wide setting to No Disaster. It does not run full system cleanup.

The orbital decay subtracts the reduction from OrbitalDistance and sets the distance of Earth’s first Lagrange point to the new value. It destroys the body when OrbitalDistance x 149,600,000 is below 1,000,000 km. Equality survives. Destruction logs a Planet Destroyed event, “(colony name) has been destroyed due to the destruction of the body on which it is based”, for each colony on Earth or on its direct moons and removes that colony. It then removes the Lagrange point and reports the destruction. The disaster update removes Earth and its first moon from the list of bodies without adding either to the removed body ledger, so the save never deletes their database rows. The decay itself does not remove every child body or sweep local fleets, wrecks, constructs and waypoints.

Otherwise the decay sets Year = square root(a³ / star mass) x 8760 hours, where a is the new orbital distance in AU and the star mass is that of the star’s stellar type. It forces an extra orbital position update of 10 seconds for Earth, then copies Earth’s base temperature to each moon followed by a surface temperature update. That forced 10-second update is a real extra position refresh inside this step, and the ordinary orbital update follows later in the cycle. The orbital update recalculates base temperature, hydrosphere, pressure and terrain only for a body with nonzero eccentricity. This step is therefore not an unconditional recalculation of every climate value for a circular orbit.

When a race’s system summaries are rebuilt for the galactic map, each active supernova gives ETA = catalogue distance - stored blast radius, in light years. The game updates the system’s shared forecast values when the stored ETA is 0 or greater than the new one, and it does not reset them at the start of the forecast. The forecast intensity uses ETA x 946,073,047,258,000,000 centimetres in its denominator, while the actual impact uses the full source-to-target distance. The forecast intensity therefore changes as the front approaches and is not the radiation a body will actually receive. It also leaves out the body’s pressure divisor and the whole-number ship hit count. A negative ETA is not clamped and can take part in the minimum selection.

The galactic map’s Time Until Supernova Impact checkbox shows the forecast for systems without an active supernova of their own. It shows the ETA in years above 1, in months (ETA x 12) above .1 and up to 1, and otherwise in days (ETA x 365). The intensity takes an “m” suffix only above 1,000,000 and a “k” suffix only above 1,000. These are display bands. They do not schedule an interrupt or an event for the exact arrival of the front.

State What a save stores and a load restores
Supernova force and elapsed time FCT_System.SupernovaForce and FCT_System.SupernovaElapsedTime. Both are fractional numbers in play, but a load reads both back rounded to the nearest whole number, an exact half going to the even neighbour. Fractions are not restored faithfully, and a value outside the whole-number range can fail to load.
Blast radius, impact ETA, projected intensity Not saved, and absent from the FCT_System columns the save writes. The radius is derived during disaster processing, and the forecast values are calculated separately.
Stellar disaster and luminosity FCT_Star.DisasterStatus and FCT_Star.Luminosity restore the ongoing stellar state.
Game-wide Sol setting FCT_Game.SolDisaster. The death spiral resets the setting in play after Earth is destroyed.
Body contamination FCT_SystemBody.RadiationLevel and FCT_SystemBody.DustLevel, loaded as decimals. Both the ordinary body update and the full body update write them. The full update also writes the orbital columns the death spiral changes, such as OrbitalDistance and Year.
Rifts The load reads diameter and coordinates as fractional numbers and skips rows whose system no longer exists. Suppression is recalculated from the current colonies and constructs.
  1. Linear warming compounds. L = 1 with Sol Warming 2% Year and y = .5 gives 1.01. Another half year gives 1.0201, while a single full-year cycle gives 1.02. At an unchanged distance the base temperature ratio is the fourth root of the luminosity ratio.
  2. Radiation plus immediate cleanup. The first radiation level (c = .005) at absolute game year 20 gives an annual addition of .005 x 20³ = 40 at 1 AU, or 10 at 2 AU. With a starting R = 0, y = .1 and no decontamination, the 1 AU body receives 4 and the minimum decay then removes 10, leaving 0 in the same cycle.
  3. Destruction roll equality. At t = 60 and y = .1, H = 200. d10,000 rolls of 1 to 199 destroy the system, and 200 survives. That is 1.99%, not exactly 2%. The destruction path adds no stellar radiation that cycle.
  4. Front crossing and shielding. A force .1 source passes a system 100 light years away. I is about 88,907.8. At 1 atm the radiation added is about 889.078, but floor(I / 100,000) = 0, so there are no ship hits and no salvo removal. At the same distance a force .2 source gives about 177,815.6, one 1-point hit per ship without a mothership, and salvo removal. These amounts come before the same cycle’s decay.
  5. Preview differs. At d = 10 light years and a stored radius of 6 light years, ETA = 4 years. The forecast uses 4² in its denominator, which makes it 6.25 times the actual intensity at 10 light years for the same force. A displayed forecast is not a body’s shielded radiation addition.
  6. Decontamination and dust. R = 2000, Q = .4, dust = 1000 and y = .2 remove 200 radiation (2000 x .5 x .2, above the minimum of 20) and 50 dust. The result is R = 1800 and dust = 950. Two half-size cycles give a different radiation result, because the second uses an already reduced R.
  7. Suppression and exposure. A rift with D = 10,000,000 km, S = .5 and y = .1 grows to 10,050,000 km. It then adds 100.5 radiation to bodies strictly within 5,025,000 km, when the system count gate lets radiation run. At S = 1 the diameter stays fixed, but the rift still irradiates.
  8. Death spiral. Starting at 1 AU, Earth Death Spiral 0.02 AU over y = .5 subtracts .01 AU and reaches .99 AU. With no other changes the destruction comparison is against about .00668449 AU, not against an orbit that reaches exactly zero.

Comets have generation, orbital and display behaviour, but the hazard update and the steps it runs contain no comet impact. Body generation values produce no periodic impact damage, asteroid collisions or tectonic disaster rolls in the hazard update described here. Ordinary climate and support changes can still make a colony uninhabitable without an explicit disaster deletion event. Initial physical states belong to star system and planetary generation. , combat target selection and civilian migration decisions are outside this page, in special race lifecycles, space combat and civilian economy.

Related community documentation and developer posts. These may describe a different game version.