Mode state and entry
Section titled “Mode state and entry”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.
Password on the game details form
Section titled “Password on the game details form”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.
- When the password text differs from the confirmation text, it shows a message box and stops.
- On creation it copies the new game name into the selected game’s settings.
- It applies every form field to the selected game, and also to the loaded game when both share a
GameID. - 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.
Window visibility checks
Section titled “Window visibility checks”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.
Tactical and galactic map operations
Section titled “Tactical and galactic map operations”| 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.
System view operations
Section titled “System view operations”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.
Star and body editing forms
Section titled “Star and body editing forms”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.
Economics window operations
Section titled “Economics window operations”| 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.
Fleet diplomacy and personnel windows
Section titled “Fleet diplomacy and personnel windows”| 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.
Creation and deletion helpers
Section titled “Creation and deletion helpers”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.
Race and technology interventions
Section titled “Race and technology interventions”| 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 and Spacemaster-only events
Section titled “Designer mode and Spacemaster-only events”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.
Paths described on other pages
Section titled “Paths described on other pages”- Instant create of components, missiles, turrets, projects and species is described in preview, create, research and prototype and turning technology into a component.
- Shipyard modification writes capacity and slipways at once and is described in shipyard activity costs.
- Class unlock is described in locking and refit compatibility.
- Extra commanders and Restore are described in recruitment and retirement. The commander lifecycle page lists Add Extra and Replace All among its creation sources, and its assignment clearing section covers how Replace All removes active commanders.
- Ground formation moves with the Spacemaster override are described in transfers.
- The race creation gate, Create Race on a body and instant research and build with starting points, is described in homeworlds and spending remaining points.
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.
What an intervention does not trigger
Section titled “What an intervention does not trigger”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
PlanetNumberandOrbitNumberwithout 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
SurveyDonetrue. - 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.
Exception handling and partial edits
Section titled “Exception handling and partial edits”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.
Worked examples
Section titled “Worked examples”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.8million km. Entering “600” stores600 / 150.0 = 4.0AU. With a system scale factor of 0.08 the clamp is40 x 0.08 = 3.2AU, 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 readsRadiusback 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 setsRadiationLevelto 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 theirStarIDis 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
RaceIDdiffers from the race’s. The tech remains and lists no component. At the next save the shared component row,GameID0, 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.
Persistence and reload
Section titled “Persistence and reload”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.
Concept map
Section titled “Concept map”- Mode state and entry, the game-wide Spacemaster and designer switches and how the toolbar and hotkeys flip them.
- Password on the game details form, where the password is stored and written at once.
- Window visibility checks, which windows show Spacemaster controls and when they check the mode.
- Tactical and galactic map operations, sensor suppression and the supernova trigger.
- System view operations, the world-editing tools for systems, surveys, minerals and jump points.
- Star and body editing forms, what star, body, planet and moon edits recalculate.
- Economics window operations, colony, wealth, shipyard and stockpile edits.
- Fleet diplomacy and personnel windows, ship, diplomacy and species edits.
- Creation and deletion helpers, wrecks, fixed asteroids, ruins, constructs and object removal.
- Race and technology interventions, instant research, tech removal and empty-colony deletion.
- Designer mode and Spacemaster-only events, NPR filters and the unused event mark.
- What an intervention does not trigger, the follow-ups no edit runs.
- Exception handling and partial edits, error messages and the text prompt’s placeholder values.
- Persistence and reload, the body save rules and what loading skips.
- Game-rule options and effects, the rule options that share the game details form.
- Application colours and theme, toolbar images and form styling.
- Star system and planetary generation, the normal generation that the editing tools rerun.
- System lifecycle, one system from creation to deletion, including Spacemaster deletion.
- System disasters, whole-system cleanup and supernova spread.
- Jump point network, the network effect of jump point edits.
- Exploration surveys and discovery, the survey records that the survey buttons set and clear.
- Salvage and archaeology, what ruins, constructs and wrecks lead to.
- Component design, instant creation in the design windows.
- Technology to deployment, how researched tech becomes components.
- Shipyard development and ship work, the Spacemaster shipyard modification.
- Ship and station design, class unlock.
- Commander lifecycle, extra and replaced commanders.
- Research and scientific personnel, recruitment and retirement paths.
- Ground force organisation, formation moves with the Spacemaster override.
- Player race creation, Create Race and starting points.
- NPR race generation, the NPRs that designer mode reveals.
- Event types and hidden events, the Spacemaster-only event mark and event filters.
- Displayed state and refresh, why open windows show stale data after an edit.
- Object identity and reload, how removed objects and missing references behave on reload.
Resources
Section titled “Resources”Related community documentation and developer posts. These may describe a different game version.