The game keeps three Spacemaster settings for the whole game rather than for each race. They are the Spacemaster password, a text value, and two on or off switches for Spacemaster mode and designer mode. No race carries a Spacemaster status of its own. Every window reads the game-wide Spacemaster switch directly. Only the toolbar commands, the hotkeys and the tactical map change the two switches, as the table lists.

Entry path Trigger What happens Effect on state
Tactical map toolbar Click on the Spacemaster toolbar button Runs the Spacemaster toggle command, then refreshes the tactical map’s own Spacemaster controls Toggles Spacemaster mode
Galactic map toolbar Click on the Spacemaster toolbar button of the galactic map Runs the same toggle command, then refreshes the Trigger Supernova button Toggles Spacemaster mode
Hotkey F12 with Control or Shift+Control Runs the same toggle command Toggles Spacemaster mode and refreshes no window controls
Designer hotkey Control+Alt+F12 Flips designer mode, refills the tactical map race list and repaints the map Toggles designer mode
Designer toolbar button A designer-mode toolbar button The tactical map would respond to such a button, but no toolbar button with that name exists No click reaches it
Tactical map load The tactical map opens Designer mode is reset Sets designer mode off

When Spacemaster mode is off and the stored password is empty, the toggle turns the mode on without a prompt. Otherwise it opens a text entry dialogue labelled “Enter Spacemaster Password” with an empty box. It compares the returned text with the stored password exactly, character by character and case-sensitive. Equal text turns the mode on. Any other text shows “Incorrect Password”. A cancelled prompt also lands there, because the text entry dialogue starts out marked as cancelled and only its OK button returns the entered text. When the mode is already on, the toggle turns it off with no prompt.

After either outcome the toggle asks every open tactical and galactic map to swap the image of its Spacemaster toolbar button. The swap cannot find either map’s Spacemaster button, so the image swap fails and the game shows the error Function #1644. The mode has already changed by then, so the toggle takes effect and the error message follows it. The matching designer image swap looks for a designer button that neither map has, and it recognises the galactic map by its window title only.

The hotkey route differs from the toolbar route in one respect. The tactical map hands every key press to the hotkey handling and does nothing more, so a hotkey toggle never refreshes the tactical map’s Spacemaster controls. The designer hotkey accepts the modifier set Control+Alt. The ordinary function-key hotkeys exclude only Control and Shift+Control, and Alt alone has its own keys, so Control+Alt also reaches the plain function keys, where F12 runs the automatic-turns command. One Control+Alt+F12 press toggles designer mode and automatic turns together.

The default game settings that the Game Information window builds use an empty password. When the form shows a game’s settings, it copies the stored password into both the password box and the confirmation box. Neither box masks its characters, so the form shows the stored password in clear text to anyone who opens it.

The settings save runs on the Save Settings button and at the start of game creation. It applies these steps in order.

  1. When the password text differs from the confirmation text, it shows a message box and stops.
  2. On creation it copies the new game name into the selected game’s settings.
  3. It applies every form field to the selected game, and also to the loaded game when both share a GameID.
  4. It opens a database connection and a transaction, writes the game record, and commits.

The settings transfer converts the numeric fields to whole numbers before it reaches the password. A non-numeric entry earlier in the list stops the transfer with the error Function #1710, so the password and every later field keep their previous values. The settings save still writes the record after that error.

Writing the game record deletes the game’s FCT_Game row, sets LastViewed = 0 on every game row, then inserts the record with LastViewed 1 and the password in SMPassword. At startup the tactical map loads the game with the highest LastViewed, so saving another game’s settings makes that game the next one loaded. If the game record cannot be written, the error is ignored, and the settings save then commits the transaction anyway. The game does not roll the transaction back in that case.

Game creation ignores the early stop of the settings save and goes on to create the game. A mismatched pair during creation therefore skips the name copy and the settings transfer. The new game then takes its rule fields from the default settings, with an empty password and no name. Its creation arguments, such as the race counts, still come from the form boxes. Creation then requests the Spacemaster image swap without changing the mode. That request meets the same failed button search described above and raises Function #1644, because the main tactical map window is open. The automatic-turns image swap that follows fails the same way on its own button search, so creation shows Function #1644 twice. When a game loads, the game reads SMPassword back into the stored password. Changing the password does not change Spacemaster mode, so a session already in Spacemaster mode stays in it.

Each window checks Spacemaster mode when it opens. Only the two maps check it again when the mode is toggled. A few other windows check it again on later events, as the table lists.

Window Controls shown in Spacemaster mode When the check runs
Tactical map SM: Disable Sensors checkbox, all-races event checkbox On opening, on a toolbar toggle
Galactic map Trigger Supernova On opening, on a toolbar toggle
System view Edit tools panel, jump point and mineral panels, nine system buttons On opening
Economics Installation, atmosphere, hydrosphere, population, wealth, shipyard, fuel and supply edits, Instant RST On opening, on a research radio button change, on a population display refresh
Naval Organization window Repair all, refuel, partial refuel, fill ship, fill class On opening
Diplomacy Eight SM buttons On opening
Commanders Add Extra, Replace All, and Restore on retired commanders On opening, on selecting a commander entry
Race window Save Species On opening
Events Show all races On opening
Design windows for missiles, turrets, projects, ground units and classes Instant create, instant build On opening, and on a race change in class design

Most actions do not check the mode again when they run. A window opened in Spacemaster mode keeps its controls after the mode is turned off, until the window is opened again. Only a few actions check the mode at the moment they run. Class unlock checks it. Fleet teleport to a population or to a waypoint checks it. Ground formation drag checks it. Mineral stockpile double-click checks it. The shipyard activity list includes “Spacemaster Modification” only when the mode is on while the list is built.

Two system view buttons escape the check. The visibility check hides six of the eight buttons in the system action panel, but it never hides “No Grav Survey”, “Regen Min” or the panel that holds them. Nothing else in the system view changes their visibility. They stay visible in normal mode, but their panel sits at y 878, below the client area of the 898-pixel window with its fixed border, until Spacemaster mode moves the panel up. These layout values suggest the two buttons sit off-screen in normal mode.

Control Effect Side effects Persistence
SM: Disable Sensors Sets sensor suppression for the selected system, 1 when checked and 0 when cleared The detection pass skips every system with a nonzero value FCT_System.NoSensorChecks at the next save
Show events for all races Display only Lists other races’ events in the latest-increment overlay Stored as the race’s checkbox state
Trigger Supernova After confirmation, starts a supernova of force 1.0 in the system Clears the system contents at once and keeps the system record Next save

The tactical map never sets the checkbox from the selected system. It reads the checkbox only when the box itself changes. After a system change the box keeps the state it had for the previous system. Toggling it then writes to the newly selected system. The supernova consequences, including the immediate cleanup, are described in supernova initiation.

The system view holds most of the world-editing tools. Every row below changes the game in memory, and nothing reaches the database before the next save. The body save distinguishes new bodies (never saved), clean bodies (unchanged since the last load or save) and dirty bodies (marked as changed). Persistence and reload lists which columns each kind writes.

Control Effect Side effects Persistence
Create System New system from the system generator Optional known-star picker, survey record for the selected race New rows at save
Create Habitable Same generator with the habitable requirement Skips race and special-feature creation New rows at save
Delete System After two confirmations, clears the system contents and removes the system record Removes fleets, colonies and surveys Removed bodies deleted at save
Full Grav Survey Records every survey location as surveyed by the race, charts the jump points, sets SurveyDone List refresh Full rewrite at save
No Grav Survey Removes the race from survey locations 1 to 30 Leaves SurveyDone and charted points Full rewrite at save
Full Geo Survey Surveys every body for the race without generating minerals Adds body survey records New survey rows at save
No Geo Survey Removes the race’s body survey records Sets the full survey rewrite flag Full survey rewrite at save
Regen JP Removes and unlinks every jump point of the system, then creates new ones Prompts for a minimum count Full rewrite at save
Regen Min Clears and regenerates deposits on unpopulated bodies Reassigns Sol ruins in Sol Full rewrite at save
Name Sol Bodies Adds a race name record to each Sol body that lacks one None Full rewrite at save
Special-race creation Next save
Create Race Creates a race on the body through a dialogue Refills the race lists Next save
Explore JP Explores the selected jump point Refreshes open maps Next save
Add Jump Point Creates one jump point with no distance limit None Full rewrite at save
Del Jump Point Removes the jump point Unlinks the peer Full rewrite at save
Stabilise or Destabilise JP Sets JumpGateStrength to 1000 or 0 None Full rewrite at save
Change Position Sets the jump point distance, bearing and coordinates Clamps distance Full rewrite at save

The jump point network page covers the network side of the jump point buttons. Jump gate construction describes what strength 1000 changes and notes that Stabilise and Destabilise leave the gate owner untouched. Connection selection describes how Explore JP picks the far system. System removal and unlinking describes the peer reset that Del Jump Point, Regen JP and Delete System apply.

Add Jump Point places the new point at a random bearing from 1 to 360 degrees and at a distance of d4000 / 100 x the system scale factor AU. A point that would fall inside the primary star’s radius moves out to radius + radius x d10 x 0.1. With the distance limit off, a distance above 30 AU is kept instead of being rolled once more. Jump point creation also renumbers the system’s jump points by distance, gives them gate strength 1000 when the all-jump-points-stable game option is on, and creates survey entries for the races.

Create System and Create Habitable differ in two settings. Create System runs without the habitable requirement and allows race and special-feature creation. Create Habitable sets the habitable requirement and skips race creation. Both show the known-star picker first when the Known Star Systems game option (FCT_Game.UseKnownStars) is 1. Create Habitable gives the homeworld candidate it finds minerals with multiplier 1, and Create System passes the same multiplier but never reaches that step. Both generate the system as a neutral system. A neutral system gets a race chance of 0, so no race is rolled on its planets and moons for either button. The special-feature step runs when race creation is not skipped, the system is not Sol, and the habitable requirement is off. Create Habitable never reaches it. With the habitable requirement, the generator keeps an attempt only when a planet or moon that is not a gas giant or superjovian, on a star that passes the nearby Lagrange point check at 80 AU, qualifies as a homeworld candidate. A planet must also be no farther than 80 AU from its star, and a moon is not distance-checked. That body then receives homeworld minerals. The generator removes each failed attempt as a whole system and tries again. When the known-star picker returned a system, every attempt regenerates the same catalogue entry.

Regen JP needs a selected body although it never uses one, so the button does nothing until a body is selected. It removes every jump point before it opens the prompt. It then rounds the entered minimum down to a whole number and raises a negative value to 0. A cancelled prompt keeps the default text “0”, so cancelling still regenerates with minimum 0. The regeneration creates no new survey locations, and it keeps the system’s own Sol setting.

Regen Min lists the bodies of the system that carry any population and regenerates every other body. Before regeneration it sets each unpopulated body’s ground survey to Completed. During that pass the ruin clearing works on the selected body, not on the body being regenerated. The selected body’s ruin, ruin race are therefore removed even when that body is populated, and the other bodies keep their ruins. With no body selected, the first body fails and the game shows Function #3429 after that body’s deposits have been cleared. Gas giants and superjovians use the gas giant mineral generator, comets use the comet generator, and all other bodies use the standard mineral generator. In Sol each unpopulated body then passes through the Sol ruin assignment.

The body mineral panel offers six further actions. Survey Body makes sure the selected race has one body survey record for the body. HW Minerals generates homeworld deposits with multiplier 1 on a solid body. Redo Minerals regenerates one body. For gas giants it first replaces the deposit list with an empty one. Clear Minerals empties the deposit list and marks the ground survey Completed. Specify Minerals switches between the deposit list and eleven pairs of amount and accessibility boxes, and the second press applies the boxes. Create Ruin deletes an existing ruin together with its ruin race , and marks a clean body dirty. On a body without a ruin it offers “Random Ruin” or a named template, assigns the ruin and marks a clean body dirty. Creation and deletion helpers describes how a ruin is assigned.

Change Position fills its dialogue with the distance in millions of kilometres and the bearing. A changed distance converts back to AU by dividing by 150.0, not by 149.6, the figure that matches the 149,600,000 km per AU the game uses elsewhere. The point is then clamped to 40 x system scale factor AU, and its coordinates are recomputed. The system scale factor is the square root of the primary star’s mass when that mass is 1 or less, and its cube root otherwise. The clamp runs even after a cancelled dialogue.

The system view also holds an unused action that would regenerate the minerals of every body in the system. Nothing in the system view runs it. When the system view opens, it renumbers the asteroids of any non-Sol system that holds an asteroid with OrbitNumber 0. The renumbering names every asteroid of the system “Asteroid #n”, ordered by star component and distance, and marks each one dirty.

Each editing form is modal. All except the known-star picker open only from the system view. The known-star picker also opens from the NPR generation template setup window. The table states what a confirmed edit recalculates.

Form Opened by Recalculates
Star setup Modify Star, Add Star Orbit shape, luminosity, orbiting star, all bodies of the star, orbital positions
Body setup, Update button Modify Body Mass, gravity, escape velocity, year, tidal force, tidal lock, temperature, hydrosphere, pressure, terrain, positions
Body setup, gas button Same form Total pressure, hydrosphere transition, terrain
Add planet Add Body New body or comet, optional moons, asteroid renumbering
Add moons Add Moons Up to five new moons
Change location Change Position Nothing by itself, it returns the distance and bearing text
Known-star picker Create System, Create Habitable Nothing by itself, it sets the chosen catalogue system

Planet and moon renumbering numbers the star’s planets by distance from the star, and each planet’s moons by distance from the planet. Each moon takes its planet’s PlanetNumber.

The star setup form clamps eccentricity to the range 0 to 0.95. It resets an eccentricity bearing or a star bearing to 0 when the bearing is below 0, or 360 or more. The radio buttons map Primary, B and C to orbiting components 1, 2 and 3. When adding, the form raises the system’s star count by one, writes the new component number and the orbiting component onto the shared stellar type entry, and creates the star. Star creation reads those two values back from the stellar type. It adds the star to the game before it sets the orbit. A positive orbit sets the orbit at the given bearing and generates no planets. The orbit then has periapsis = orbit x (1 - eccentricity), apoapsis = orbit x (1 + eccentricity) and semi-minor axis = orbit x sqrt(1 - eccentricity²). An orbit at or below 0 takes the known-system route. For components 2, 3 and 4 that route reads C2Orbit, C3Orbit or C4Orbit from the DIM_KnownSystems entry. The star setup form supplies no known system, so that read fails. The game shows Function #1564 after the star is already in the system and the star count already holds its increment. For a component of 5 or more no distance is set. The star then gets a random bearing on its unset orbit. An entered orbit of exactly 0 also generates a planetary system for the star unless the stellar type is a black hole, spectral class BH.

When editing, the form updates the star’s type and orbit. That update recomputes periapsis, apoapsis and the semi-minor axis with the formulas above, and also recomputes orbital speed. When an orbiting component is set, it also recomputes orbital period = sqrt(orbit³ / (star mass + orbited star mass)). It then recalculates every body of the star without mass changes, and updates orbital positions. Editing the primary star also recalculates the system’s survey locations.

The Update button of the body setup form reads each box on its own and skips a box it cannot read. The fallbacks are listed below.

Field Conversion Fallback
Moon distance Kilometres as entered 0 becomes 100,000 km
Other distance Millions of km times 1,000,000 divided by 149,600,000 km per AU 0 becomes 1 AU
Diameter Radius = diameter / 2 Radius at or below 0 becomes 10
Hydro extent As entered Below 0 becomes 0
Albedo, density As entered At or below 0 becomes 1
Day length Hours as entered At or below 0 becomes 24
Bearing Degrees At or below 0, or above 360, becomes 0
Radiation Decimal At or below 0 becomes 0
Dust Decimal At or below 0 sets radiation to 0
Eccentricity Planets, asteroids and comets only Clamped to 0 to 0.95

When the entered dust is zero or negative, the dust rule sets RadiationLevel to 0 rather than DustLevel. A planet distance change shifts every asteroid that orbits the planet by the same AU difference and recalculates each of them. The form then runs the full recalculation, including mass, gravity and escape velocity, on the body, and the recalculation without mass changes on each moon of the body. It forces an orbital position update for the system and renumbers the star’s planets and moons.

The body recalculation marks a body that is not new as dirty. With mass changes it sets mass = (radius / 6380)³ x density, gravity = mass / (radius / 6380)² with a floor of 0.0001, and escape velocity = sqrt(19600 x gravity x radius) / 11200. For every body that is not a moon it sets year = sqrt(orbital distance³ / star mass) x 8760 and tidal force = star mass x 26,640,000 / (orbital distance x 400)³. It then rolls tidal lock again. The body locks when (0.83 + d10 x 0.03) x tidal force x system age / 6.6 > 1, so pressing Update can flip tidal lock without any field change. Its base temperature becomes 255 / sqrt(distance to parent / sqrt(luminosity)), with a floor of 4. A moon instead takes year = sqrt((orbital distance / 398600)³ x 837 / (moon mass + parent mass)) x 24 and tidal force = parent mass x 80 / (orbital distance / 375000)³. A moon locks when its tidal force exceeds 7, and it takes its parent’s base temperature. A locked body gets tilt 0. Every recalculated body then runs the hydrosphere transition, the pressure update, the terrain update and an orbital coordinate update. The body setup form starts out marked as cancelled, and the system view ignores that mark after this form.

The gas button reads the pressure box, and an unreadable entry counts as 0. The gas pressure update removes the gas at pressure 0, adds it when absent, or overwrites it. It then recomputes total pressure and runs the hydrosphere transition, pressure and terrain updates. It recalculates colony cost for a population only when one is given, and this form gives none.

The add planet form converts the distance from millions of km and replaces a value at or below 0 with 100 AU. It offers “Planet - Terrestrial”, “Planet - Dwarf”, “Planet - Gas Giant”, “Planet - Super Jovian”, “Asteroid” and “Comet”. A comet is created around the primary star, whatever star the form was opened for. Belt width uses 500,000 km per entered unit. Other types go through the normal orbital body generator with zone limits computed when the form opens. Life zone start is 0.75, life zone end 1.4, inner system end 4 and outer system end 50 times the square root of the star’s luminosity, in AU. Moons are generated only when the moons box is checked and the new body is not tidally locked. After an asteroid insert the form renames every asteroid in the system “Asteroid #n” and rewrites OrbitNumber, ordered by star component and distance. The form does not reset the cancelled mark when it opens, so the system view may treat a closed form as cancelled or confirmed according to an earlier dialogue.

The add moons form reads each of its five distance boxes as a number, in thousands of km, and creates a moon for every row whose type is not None. A distance at or below 0 becomes 10,000 thousand km. Opening the form writes the planet’s orbital zone and life-zone flag as a side effect. The planet becomes inner zone at or below 4 times the square root of luminosity in AU, outer zone at or below 50 times, and distant zone beyond that. It counts as inside the life zone from 0.75 to 1.4 times that square root.

The known-star picker lists catalogue stars and hides its create button for entries this game has already used. Only the Cancel button sets the cancelled mark. Closing the window with its title bar leaves the mark clear and no system chosen, so the system view generates a random system. Its minimum mass box is read as a number when the window opens and on every sort.

Control Effect Side effects Persistence
Add Installation Adds a decimal amount to an existing installation, or creates one No list refresh when the installation already exists Full rewrite at save
Edit Installation Sets the amount as a whole number List refresh Full rewrite at save
Delete Install Removes the installation entry Confirmation Full rewrite at save
SM: Set Atm Sets a gas pressure on the colony’s body Colony cost for this population only Full rewrite at save
SM: Set Hydro Sets HydroExt, the hydrosphere type and the terrain None further The clean-body update writes these columns
SM: Edit Pop Sets the population amount, a negative value becomes 0 Total population = surface + orbital Next save
SM: Edit Wealth Sets FCT_Race.WealthPoints Window title Next save
SM: Add SY Creates a shipyard One slipway Full rewrite at save
SM: Edit Fuel, SM: Edit MSP Sets the fuel or maintenance supply stockpile, a negative value becomes 0 None Next save
Mineral double-click Sets the stockpile, or the reserve when the reserve box is checked Mining views refresh Next save
Instant RST Completes every unresearched race-specific technology Confirmation Race tech rewrite at save
Add NPR OG (designer) Refreshes NPR colony AI and removes empty colonies of no value No error trap Next save

The add-installation action stops right after it increases an existing entry, so the list still shows the old amount. The edit action reads the amount as a whole number, so a fractional amount such as “2.5” fails with an error and the edit does nothing. The gas edit raises a negative maximum to 0 and passes the population to the gas pressure update. That population’s current and maximum colony costs are recalculated, but no other population on the body is. The hydrosphere edit reads the extent as a number. It then sets the hydrosphere type from the surface temperature, vapour above 369 K, liquid above 245 K and ice sheet otherwise. It skips the phase checks that would remove the hydrosphere for a body with no atmosphere, with an atmosphere below 0.006 atm at a temperature above 245 K, or above 369 K. It then updates the dominant terrain from the climate. It does not recalculate colony cost.

Shipyard creation starts every yard at one slipway with capacity 1,000 tons, and commercial and repair yards with 10,000. The add-yard action offers exactly the three yard types, Naval Shipyard (type 1), Commercial Shipyard (type 2) and Repair Yard (type 3), and maps the chosen text back to a type. Text that matched none of them would give type 0 in FCT_Shipyard.SYType, which is no defined yard type. The selection dialogue offers only those three entries, so type 0 needs the dialogue to return text outside that list, and no way to do that has been found. The mineral double-click does nothing unless Spacemaster mode is on or the reserve checkbox is checked, and only Spacemaster mode reaches the stockpile edit. The designer button Add NPR OG removes empty NPR colonies. For each NPR population it refreshes the colony AI state and then removes empty colonies of no value.

Window and control Effect Side effects Persistence
Fleet: SM Repair All Clears the damaged components and armour damage of the selected ship No display refresh Next save
Fleet: SM Refuel Fuel = FCT_ShipClass.FuelCapacity, the class fuel capacity Ship controls refresh Next save
Fleet: SM Part Refuel Fuel = min(entered whole number, ship fuel capacity) Ship controls refresh Next save
Fleet: SM Fill Ship Fills the current loadout, the ship’s own template preferred Loadout list refresh Next save
Fleet: SM Fill Class Fills every ship of the class from the class template None Next save
Fleet: move to population or waypoint Sets orbit body, system survey, assigned population and coordinates Non-empty fleets need Spacemaster mode Next save
Diplomacy: SM Set DR Sets DiplomaticPoints on the selected alien race Refresh Next save
Diplomacy: SM Fixed DR Sets FixedRelationship to 0 or 1 Refresh Next save
Diplomacy: SM Est. Comm Sets CommStatus to established Refresh Next save
Diplomacy: SM Add Species Records a chosen species, listed from the viewing race’s own populations, as discovered by the viewing race Refresh Next save
Diplomacy: SM Race Title NPR species name, race name, race title, alien race name NPR targets only Next save
Diplomacy: SM Image, Flag, Hull Image file names on the NPR species or race Loads the image file Next save
Race: Save Species All species traits and environment ranges Derives min and max from ideal plus or minus deviation Next save

Full refuel reads the class capacity, and partial refuel reads the ship’s own fuel capacity. The two buttons can therefore set different maxima for one ship. The fill-ship action still tries to use the selected ship when none is selected, so it fails and reports Function #1027. The teleport actions write position and location only. They do not clear move orders. The diplomacy title and image actions refuse player races with “Players can only change …”. Save Species reads the integer traits as whole numbers, and it adds 273 to the entered ideal temperature before it stores it, turning degrees Celsius into Kelvin.

The game-wide helpers below do the structural work. Except for the fixed asteroid helper, a Spacemaster reaches them from the system view or the race window.

The roll always places one wreck, then places another while a d100 roll is at or below the current value. The value starts at 50 and drops by 10 after each further wreck, down to a floor of 10. Each wreck picks from the system’s planets and moons within apoapsis distance 50, ordered by current colony cost. With no such body it places no wreck. On a d4 of 1 it walks that list, rolls a fresh d4 for each body, and takes the first body whose roll is 2. The wreck then sits at that body. Without a chosen body it sits at a random bearing and at a distance of d100 / 100 x base middle survey radius x system scale factor, with a base middle survey radius of 4,000,000,000 km. The class is a random class of the owner. The helper builds the ship, then applies 10 points of internal damage again and again until the ship is destroyed, and removes the explosion contacts this produced.

The fixed asteroid helper builds an asteroid at given map coordinates with radius 1, density 1, PlanetNumber 100, zero eccentricity, barren terrain and no deposits. The body enters the game as new and gets a name record when a naming race is given. It is used by the tactical map’s deep-space population mode , not by a Spacemaster control. PlanetNumber 100 is also the belt marker that Delete Asteroids checks, together with a shared AsteroidBeltID. Only loading a game sets AsteroidBeltID. No generator sets it, because asteroid creation ignores the belt it is given. For bodies the game creates, Delete Asteroids therefore removes every PlanetNumber 100 body of the star, including other belts and fixed bodies.

Ruin assignment without a chosen template rolls d200 and takes the template with the smallest MaxChance at or above the roll. It sets the body’s abandoned factories to the template’s FactoriesBase plus a roll of a die with FactoriesRandom sides. It takes a ruin race from a body within one jump of the system the body’s system was generated from, or of the body’s own system when there is none, and generates a new ruin race when it finds none. The game database as shipped holds these templates in DIM_Ruin. The table below is an excerpt of the columns relevant here, 5 of the table’s 16 columns.

RuinID Description MaxChance FactoriesBase FactoriesRandom
1 Destroyed Outpost 40 6 5
2 Ruined Outpost 70 12 10
3 Ruined Settlement 100 24 20
4 Ruined Colony 130 48 40
5 Ruined City 160 96 80
6 Partially Intact Colony 180 180 150
7 Deserted Intact Colony 190 360 300
8 Partially Intact City 195 720 600
9 Deserted Intact City 198 1200 1000
10 Deserted Intact Cities 200 1200 2000

Otherwise it sets ResearchBonus = 1.2 + d8 / 10, a decimal, which gives 1.3 to 2.0. A type 1 construct, the type that ruin assignment creates, picks its research field from d9, so any of the nine fields. Types 2 and 3 pick from d4 among Power and Propulsion, Sensors and Control Systems, Direct Fire Weapons, and Missiles, with a Missiles result replaced by Defensive Systems.

Helper Removes Leaves in place Body persistence
Star removal Bodies of the star, Lagrange points on those bodies, constructs, populations, the star The system’s star count, fleets and orders aimed at the bodies Bodies not queued for deletion
Body removal Body, direct children, Lagrange points of the body, constructs and populations of body and children Fleets and orders aimed at the body Body and children queued
System removal Bodies, stars, jump points, Lagrange points, the system Fleets, wrecks, surveys Bodies not queued
System contents removal See system deletion See that section Bodies queued
Race deletion Fleets, populations, ship classes, the race Retired commanders, species, other races’ records of it Not applicable

How system removal and system contents removal treat jump points and their peers is described in system removal and unlinking.

Star removal renumbers components by lowering every star whose component number is above the deleted star’s, with no check on the system. Deleting component 2 in one system therefore lowers the component number of every component-3 or higher star in every system. It also never lowers the system’s star count, which is saved in the Stars column of FCT_System. It removes the star’s bodies from the game without adding them to the list of removed bodies. The system view refuses to delete component 1 and asks twice before the removal. Body removal finds children by their parent body only, and finds populations on the body or on a direct child. Delete Asteroids removes every belt asteroid sharing the star, PlanetNumber 100 and the belt ID, or every trojan sharing PlanetNumber 101 and the parent body.

Delete Lagrange is the one deletion action that repairs orders. For each fleet with a move order to the point it clears the cargo of civilian freighters and colony ships and clears all move orders. Then it removes the point and renumbers the system’s Lagrange points. Add Lagrange runs only when the body has no point. It creates the point directly, not as the result of a stabilisation order.

Race deletion removes the race’s fleets without warnings, removes its populations, retires its active commanders as retired by order, deletes its ship classes, removes the race and refills the tactical map race list. The race window’s Delete Race button runs it after two confirmations, and Spacemaster mode does not gate that button. Fleet removal can decline a fleet that shipyard tasks still reference, as the system disasters page describes, and race deletion makes no second pass.

Action Entry Effect Guards
Complete race-specific tech Instant RST Completes every FCT_TechSystem entry whose RaceID is the race’s and that the race has not researched Confirmation only
Remove tech from race Remove Tech in the Economics research tab Deletes the race’s research record of the tech Confirmation, no Spacemaster gate
Delete tech definition Delete Tech in the Economics research tab Removes missiles, components and ground unit classes, then deletes the race-specific tech definition Six usage checks, no Spacemaster gate
Clear body surveys No Geo Survey Removes each body survey record of the race None
Delete empty colonies Delete Empty in the Economics window Removes every empty colony that meets the conditions below Confirmation, no Spacemaster gate

Completion runs the normal technology completion with no population and with its follow-up updates on, so the normal completion cascade runs. Removing a tech touches only the race’s research records. Components that use the tech stay in existing classes, and no design is checked again.

Deletion runs in two layers. The Economics window first refuses when the tech appears in ship magazines, class loadout templates, population stockpiles, ground formations, formation templates or class components. After confirmation it removes every missile type, ship design component and ground unit class that references the tech. Only then does the tech deletion check that the tech belongs to the race, and show “Unable to delete this tech as it is not specific to this race” when it does not. For a shared tech the components and missiles are already gone when that message appears, and the tech definition stays. At each save the game deletes the FCT_TechSystem and FCT_ShipDesignComponents rows whose GameID is 0 or the current game’s, and inserts them again from memory with each entry’s own GameID. By these rules, a removed shared component carrying GameID 0 is not inserted again at the next save, so the shared catalogue row disappears from the database file.

Empty-colony deletion removes a population only when all of these hold. It is not flagged DoNotDelete. It has no total population, installations, minerals, ordnance or stored components. Its body has no abandoned factories and a ground survey at or below Minimal. No fleet of the race orbits the body, no formation of the race sits at the colony, and no move order of the race targets it.

Designer mode reveals NPRs. The race selectors list NPRs only when designer mode is on, and the same filter applies to the non-neutral race selector and to the race comparison. The events list and the overlay hide NPR events unless designer mode is on, and the overlay hides NPR events even when the event belongs to the active race. The game details option text says NPRs are “hidden from the Spacemaster”, which matches this filter.

Designer mode also shows the class design Auto Design button, which has no action attached. It shows the Economics Add NPR OG button. It keeps standing-order and movement controls visible for shipping line fleets, which normal mode hides.

The all-races checkboxes on the tactical map and in the events window appear only in Spacemaster mode. They widen the event lists to every race, subject to the NPR filter above. The events window and the tactical map event overlay are described on their own page.

An event record can carry a Spacemaster-only mark, stored in FCT_GameLog.SMOnly. The full logging call sets the mark from its input, and the short calls always leave it off. No event the game logs sets the mark. The mark is saved and loaded, and no display filter reads it. Events created in play therefore carry false. Loaded rows keep their stored value, and the save writes it again.

Three details of those paths are not covered on those pages. Ground unit instant research subtracts DevelopCost from StartTechPoints without checking for a positive balance, so Spacemaster use can drive the balance negative. The class design Instant Tech button does nothing. The ground drag check looks at the formation’s population a second time, so in Spacemaster mode a formation with no population fails instead of moving. Dragging an element to a population checks in the same order. Normal mode never reaches that second look in either case. The drag action reports both failures as Function #1859.

The Spacemaster actions run only the recalculations listed in their sections. The actions described here do not run the following follow-ups.

  • Window refresh. Other open windows keep their Spacemaster controls and their data until they are opened again. Only the two maps re-run their visibility checks.
  • Colony cost. Body edits in the body setup form, the hydrosphere button, mineral edits and star edits do not recompute population colony costs. The Economics gas button recomputes one population.
  • Body renumbering persistence. Planet and moon renumbering writes PlanetNumber and OrbitNumber without marking the bodies dirty, and the clean-body update omits both columns.
  • Order repair. Star, body and system deletion leave move orders that point at removed bodies. Only Lagrange deletion clears orders.
  • Knowledge. Survey clears do not remove charted jump points, contacts or alien colony records. No Grav Survey leaves SurveyDone true.
  • Strategic state. No action runs NPR system valuation, banned-body updates or design refresh. The tactical map refreshes NPR banned bodies when a game loads, and the production cycle refreshes them for standard NPRs.
  • Budget checks. Spacemaster instant actions do not require starting points, and two of them subtract the cost regardless, ground unit instant research and class instant build.

Nearly every action wraps its work in one error trap that shows an error message. The message gives the game version, then “Function #” with the error number, then the error text. No action restores state on failure, so every change made before the failure stays in memory. The designer button Add NPR OG has no error trap at all.

Partial edit Left behind Function number
Toggle Spacemaster mode Mode already changed, then the toolbar button search fails 1644
Change Position with a non-integer bearing New distance stored, coordinates not recomputed 3106
Add moons with an unreadable later box Moons from earlier rows 184
Star add with orbit at or below 0, component 2 to 4 Star inserted with no orbit set, star count already raised 1564
Regen Min with no body selected First body’s deposits cleared 3429
Game details numeric error Earlier fields applied, record still saved 1710

Several helpers handle their own errors and return a placeholder value. The text prompt returns empty text on cancel and “Error” on failure. Star creation and fixed asteroid creation return nothing on failure, and the star setup form ignores what star creation returns.

These examples follow from the rules above.

  • Password entry. With the password “Alpha”, entering “alpha” fails the exact comparison and shows “Incorrect Password”. Entering “Alpha” turns the mode on, then the toolbar button search raises the error Function #1644. The mode stays on, and the tactical map shows its two Spacemaster checkboxes because its toolbar button refreshes them after the toggle returns.

  • Moving a jump point. A jump point at 3 AU shows its distance as 3 x 149,600,000 / 1,000,000 = 448.8 million km. Entering “600” stores 600 / 150.0 = 4.0 AU. With a system scale factor of 0.08 the clamp is 40 x 0.08 = 3.2 AU, so the point ends at 3.2 AU on the unchanged bearing.

  • Editing a body. Entering diameter 12,755 km stores radius 6,377.5 and recomputes mass as (6377.5 / 6380)³ x density. The body becomes dirty, so the save writes the fractional radius. When the game loads, it reads Radius back as a whole number and rounds a half to the even neighbour, so the reloaded radius is 6,378. Mass and gravity come back from their own columns unchanged.

  • Dust and radiation. A body with radiation 40 and dust 15 is edited to dust 0. The dust rule stores 0 in DustLevel, then finds it at or below 0 and sets RadiationLevel to 0. The edit therefore clears radiation 40 that the user did not touch.

  • Deleting a companion star. System A has stars 1, 2 and 3, and system B has stars 1 to 4. Deleting A’s component 2 lowers A’s star 3 to 2, and B’s stars 3 and 4 to 2 and 3. B now has two stars numbered 2. A’s star count stays 3, so the next star added to A through the star setup form becomes component 4. The deleted star’s bodies leave the game but are not queued for deletion, so their rows stay in FCT_SystemBody. When the game loads again it skips them because their StarID is missing.

  • Deleting a shared tech. A player selects a shared base tech with one ship design component and no usage. After confirmation the Economics window removes the component, then the tech deletion refuses because the tech’s RaceID differs from the race’s. The tech remains and lists no component. At the next save the shared component row, GameID 0, is deleted and not inserted again.

  • Regenerating minerals with a ruin selected. System C has a populated body P with a ruin and an empty body Q with a ruin. With P selected, Regen Min skips P’s deposits but clears P’s ruin on the first body it handles, and regenerates Q’s deposits while Q keeps its ruin.

Spacemaster interventions change the game in memory. Only the game details form writes at once. Its settings save commits FCT_Game, including SMPassword and LastViewed, in its own transaction. Everything else waits for the next game save, which backs up the database and then writes everything inside one transaction.

State Table and column Write rule On reload
Password FCT_Game.SMPassword Immediate from game details, again at every save Read back as the stored password
Spacemaster and designer modes None Never written Off in a newly opened game, and designer mode reset when the tactical map opens
Sensor suppression FCT_System.NoSensorChecks System table rewritten Read back as an integer
Star count FCT_System.Stars System table rewritten Read back as the star count
System bodies FCT_SystemBody Removed bodies deleted, new bodies inserted, clean bodies partly updated, dirty bodies fully updated Every body marked clean
Body surveys FCT_SystemBodySurveys New rows only, unless the force flag requests a full rewrite Rebuilt from rows
Stars, jump points, Lagrange points, deposits, gases, installations, constructs, body names FCT_Star, FCT_JumpPoint, FCT_LagrangePoint, FCT_MineralDeposit, FCT_AtmosphericGas, FCT_PopulationInstallations, FCT_SystemBodyName Delete all game rows, insert from memory Rebuilt from rows
Tech definitions and components FCT_TechSystem, FCT_ShipDesignComponents Delete game rows and GameID = 0 rows, insert from memory Rebuilt from rows
Event flag FCT_GameLog.SMOnly Log rewritten for the last five years Read back into the event

The body save runs in this order. It deletes removed bodies, inserts new bodies, updates existing bodies and then saves body surveys. It is the one incremental save step, and it decides which edits survive. The list of removed bodies collects bodies from body removal and system contents removal and is never emptied, so later saves repeat the deletes harmlessly. A clean body’s update writes terrain, ruin fields, bearing, surface temperature, pressure, albedo, greenhouse factors, coordinates, radiation, dust, ground survey, name, hydrosphere, orbital distances to the centre and parent, and orbital speeds. It does not write radius, density, mass, gravity, day length, eccentricity, planet number or orbit number. Those reach the database only when the body is dirty. The save resets each dirty body to clean. The body recalculation keeps a new body new, but asteroid renumbering marks every asteroid dirty without that check. By these rules, a new asteroid renumbered by the system view before its first save gets no insert, and the dirty update finds no row to change. Generated asteroids receive orbit numbers when their system is generated. The fixed asteroid helper sets the asteroid body type and never sets OrbitNumber. A deep-space population body created in a non-Sol system therefore has OrbitNumber 0. Opening the system view before the next save renumbers it and loses that body’s row.

No Geo Survey depends on the full survey rewrite flag. Without it the survey save only inserts new rows, so removed records would come back on reload. The save clears the flag after the rewrite. The flag itself is not saved, and closing without a save discards the clear.

Missing references are skipped rather than repaired. Loading skips a body row whose system or star is missing. Alien race rows whose observed race no longer exists are skipped. Commanders whose race no longer exists, including those retired by race deletion, are skipped. A body’s ruin returns only when abandoned factories are positive and both RuinID and RuinRaceID are set. When abandoned factories are positive but one of the two is missing, loading sets the abandoned factories and both identifiers to zero. With abandoned factories at or below 0, loading keeps the two identifiers and attaches no ruin.

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