Game log records
Section titled “Game log records”This page follows a game log event from the moment a game rule writes it to the windows that show it and the tables that keep it. Game time and state refresh covers the subpulse cycle and the auto-turn cycle that react to interrupts. Event colours covers colour editing, the colour picker presets and colour import and export. Contact notifications covers which contact tracks produce a notification and what each intelligence event means. Designer mode and Spacemaster-only events covers designer mode and the Spacemaster-only marker as a mode feature. Each mechanic that writes an event, such as combat, production or survey, has its own page. This page lists which game activity writes which event type but does not restate those mechanics.
The game log is a list of events grouped by time increment. Each increment keeps its own event list, its ID (IncrementID), start time (GameTime) and length in seconds (Length), the columns of FCT_Increments. The length defaults to 5. The game keeps every increment indexed by its ID and treats one increment as current. The current increment receives new events.
Each event holds these items. The “Stored as” column names the FCT_GameLog column that keeps the item in a save.
| Item | Stored as | Meaning |
|---|---|---|
| Recipient race | RaceID |
Recipient race. Every display filter, hidden check and colour lookup reads this race. |
| Event type | EventType |
Row of the event type catalogue DIM_EventType. |
| System | SystemID |
Optional system. The Events window shows the recipient’s known name for it. |
| Population | PopulationID |
Optional population, used to select a colony in the Economics window. |
| Increment | IncrementID |
Owning increment. |
| Category | IDType |
Category chosen by the game rule that logs the event, not by the event type. |
| Time | Time |
Game seconds at the moment of logging. |
| Coordinates | Xcor, Ycor |
Map coordinates used to centre the tactical map. |
| Overlay hit box | not saved | Top and bottom y of the event’s row on the tactical map overlay, set while the overlay draws. |
| Spacemaster-only marker | SMOnly |
Marks an event as for the Spacemaster only. No display filter reads it. |
| Message | MessageText |
Message shown in the log. |
Each DIM_EventType row holds EventTypeID, the integers CombatDisplay and DamageDisplay, the yes or no flags AttackEvent, PlayerInterrupt and AIInterrupt, and Description. The game reads the whole table into memory once each time a game loads. Only the two interrupt flags and Description are used by the rules described here. CombatDisplay, DamageDisplay and AttackEvent are read when a game loads and nowhere else.
The game defines 241 event types in all. The catalogue has 240 rows. Nine catalogue IDs (25, 35, 116, 155, 177, 186, 187, 203 and 204) are not among the 241, and ten of the 241 have no catalogue row.
Writing an event to the log
Section titled “Writing an event to the log”The game logs every event in the same way. A game rule that logs an event gives the event type, the message, the recipient race, an optional system, an optional population, the map coordinates and the category. Logging also accepts an admin-only marker, a Spacemaster-only marker and an interrupt target race, but every logging rule leaves both markers off and gives no target race.
The game writes events from 492 places. Each place names its category itself. 488 places name a fixed event type. Four places take their event type from the contact selection described in contact event type selection.
Event logging runs these steps in order.
- Create a new event record.
- When no current increment is set, make the increment with the largest start time (
GameTime) current. - Stop at once when the catalogue has no row for the event type. No event is stored and no interrupt marker is set.
- Copy the increment, the catalogue row, the category, the recipient race, the current game time, the coordinates, the Spacemaster-only marker, the message and the population. Copy the system only when one is given.
- Append the event to the current increment’s event list.
- Set the interrupt markers as interrupt flags and their consumers describes.
The admin-only marker has no effect. The interrupt target needs a target race, and no rule supplies one. The game checks whether the recipient race is an NPR only after the event is added to the list. An event with no recipient race therefore stays in the list, sets no interrupt, and the game shows error Function #1715. The logging routine ends there.
The game creates a new increment at the start of every time step and makes it current. The new increment starts at the current game time and takes the selected increment length. When the subpulse setting is automatic, or when the selected length divided by the selected subpulse exceeds 500, the game picks the subpulse length itself and rounds the increment length down to a whole number of subpulses. The subpulse length never exceeds the increment length. New game creation creates one increment before Sol is generated, so events written during creation have an increment. Loading a game starts with no current increment. The first event logged before the next time step goes to the loaded increment with the largest start time.
An event’s Time is the game time when the event is logged. During the subpulses of a time step the clock advances before the subpulse work runs, so an event raised during a subpulse carries the end time of that subpulse. Events raised after the last subpulse carry the end time of the whole increment.
Two event types that the game does log have no row in the shipped catalogue. Type 48 holds landing failure messages, logged from five places in fleet landing, for example when a ship cannot land because the mothership has insufficient hangar space, or when the destination fleet does not contain the specified mothership. Type 84 holds unable-to-unload messages, logged from nine places in ship unloading, for example when a ship cannot unload minerals or installations for lack of cargo shuttles, or cannot unload ground units because the target ground unit does not exist. With the shipped catalogue, step 3 discards all fourteen messages. A database whose DIM_EventType contains IDs 48 and 84 would log them. The table in event types in the game without a catalogue row lists all ten event types that have no row.
Interrupt flags and their consumers
Section titled “Interrupt flags and their consumers”Two game-wide markers carry interrupts. The increment interrupt stops the subpulses of the current time step. The player interrupt stops the auto-turn cycle.
| Recipient race | Catalogue flag tested | Markers set |
|---|---|---|
| NPR | AIInterrupt |
Increment interrupt |
NPR whose type lacks AIInterrupt |
An interrupt target race that is itself an NPR | Increment interrupt. No rule supplies a target. |
| Not an NPR | PlayerInterrupt |
Increment interrupt and player interrupt |
The test uses the recipient race’s NPR flag. An NPR event whose type has only PlayerInterrupt sets nothing, and a player event whose type has only AIInterrupt sets nothing. Event logging does not test the category, the hidden-event list or the colour settings, so a hidden event type still interrupts. The shipped catalogue marks 71 types with PlayerInterrupt and 17 with AIInterrupt. Thirteen types carry both flags. They are Ship Destroyed (27), Damage Report (28), System Damaged (97), Jump Point Detected (138), New Alien Race (147), New Hostile Contact (181), New System Discovered (195), Ramming Attempt (227), New Alien Ship (233), Invalid Unload System (266), Successful Ramming Attack (365), Ship Rammed (366) and System Destroyed (368). Four carry only AIInterrupt. They are Missile Launch (15), Target Hit (20), Conversion Halted (276) and New Combat Contact (285).
One rule sets the increment interrupt without an event. It runs when a race detects a fleet that has just transited a jump point, during the sensor checks for transiting fleets. When the detecting race holds a record of the transiting race with ContactStatus Hostile, the rule sets the increment interrupt. For an NPR detector it first gets or creates a transit point of interest at the jump point. The direct interrupt applies to player and NPR detectors alike, and it does not set the player interrupt. When the detecting race has not charted the jump point, the same rule logs Jump Point Detected (138) in category Jump Point and marks the jump point charted. That event can then set both markers through its catalogue row.
Three places react to the markers.
- Subpulses. Each time step clears the increment interrupt just before its subpulses start. Subpulses continue while the marker is clear or the increment length is exactly 5, and while the elapsed seconds are below the increment length.
- Movement. A fleet moving inside a subpulse sets its remaining subpulse seconds to zero when the increment interrupt is set.
- Auto turns. Without auto turns, a time increment button runs one increment. With auto turns on, the button clears the player interrupt once, then repeats whole increments until the marker is set or auto turns are switched off. This is the only place in the game that clears or reads the player interrupt.
The consequences follow from that order. An interrupt shortens the current increment at the next subpulse boundary, and the increment’s length becomes the elapsed seconds. An increment interrupt raised during the preparation of a time step is cleared by the reset of the same step, and one raised after the last subpulse is cleared by the reset of the next step, so neither shortens anything. With auto turns on, a player interrupt raised at any point in a step stops the auto-turn cycle after that step. Game time and state refresh covers the full timing and the length-5 exception.
Contact event type selection
Section titled “Contact event type selection”Contact notifications pick their event type through two selections. Both take the observer’s contact status for the contact race. The possible statuses are Hostile, Neutral, Friendly, Allied, Civilian, None and Combat. The status comes from the detecting race’s record of that alien race, and it is None when the contact has no race or the detecting race holds no record of it.
The new-contact selection maps each status to one type.
| Status | Event type |
|---|---|
| Hostile | New Hostile Contact (181) |
| Neutral | New Neutral Contact (182) |
| Friendly | New Friendly Contact (183) |
| Allied | New Allied Contact (184) |
| Combat | New Combat Contact (285) |
| Civilian, None | Civilian Contact (191) |
Selection fails with error Function #465 |
New Hostile Contact (181) |
The update selection also takes the contact itself and checks whether the detecting race’s survey of the contact’s system records that alien race as the controlling race of the system. It checks in this order.
- Hostile returns Hostile Contact Update (206) with no control check.
- Neutral with a matching controlling race returns Neutral Contact Update - AC (362).
- Neutral otherwise returns Neutral Contact Update (207).
- Friendly with a matching controlling race returns Friendly Contact Update - AC (363).
- Friendly otherwise returns Friendly Contact Update (208).
- Friendly with a matching controlling race would return Allied Contact Update - AC (364). Step 5 has already returned for every Friendly status, so this step never returns anything.
- Allied returns Allied Contact Update (209) with no control check.
- Any other status, including Combat and None, returns Civilian Contact Update (210). When the selection fails, the game shows error
Function #466and the result is New Hostile Contact (181).
The report of new and re-established contacts uses the new-contact selection or the update selection, and logs the result in category Ship. It skips Civilian statuses before either selection, so Civilian Contact (191) comes only from a None status. Explosion, electronic warfare impact and secondary contacts bypass both selections and log New Combat Contact (285) directly in category Combat. When a race updates a ship contact, a strength change and a re-established contact use the update selection as well. These log in category Ship and skip Civilian statuses first. Contact notifications covers which tracks reach these reports.
Categories and the type-to-category mapping
Section titled “Categories and the type-to-category mapping”The game has 19 event categories. The rule that writes an event also gives its category. The catalogue has no category column, and the game has no table that maps an event type to a category. The Events window lists every category in the order below. Its label is the category’s display name, or the category’s internal name when it has no display name. Categories 2, 16, 17, 18 and 19 have no display name, so the window shows their internal names. Category 16 appears as the words Missile Salvo run together with no space.
A log point is one place in the game rules that writes an event. The “Short name” column gives the name this page uses for the category in table cells.
| Value | Short name | Window label | Log points | Double-click opens |
|---|---|---|---|---|
| 0 | All | All Event Categories | 3 | nothing |
| 1 | Population Production | Population Production Events | 10 | Economics, Industry tab |
| 2 | Commander | Commander | 33 | nothing |
| 3 | Population Mining | Population Mining Events | 7 | Economics, Mining tab |
| 4 | Population Environment | Population Environment Events | 9 | Economics, Environment tab |
| 5 | Population Shipbuilding | Population Shipbuiding Events (spelled this way in the window) | 7 | Economics, Shipyards tab |
| 6 | Population Ground Units | Population Ground Units Events | 12 | Economics, GU Training tab |
| 7 | Population Research | Population Research Events | 13 | Economics, Research tab |
| 8 | Combat Results | Combat Results Events | 49 | tactical map |
| 9 | Ship | Ship-based Events | 115 | tactical map |
| 10 | Fleet | Fleet-based Events | 100 | tactical map |
| 11 | Jump Point | Jump Point Events | 4 | tactical map |
| 12 | System | System Events | 8 | tactical map |
| 14 | Population Summary | Population Summary Events | 20 | Economics, Summary tab |
| 15 | Intelligence | Intelligence | 52 | tactical map |
| 16 | Missile Salvo | Missile Salvo, shown as one word | 7 | tactical map |
| 17 | Combat | Combat | 14 | tactical map |
| 18 | SYUpgrade | SYUpgrade (shipyard upgrade) | 10 | Economics, Shipyards tab |
| 19 | Diplomacy | Diplomacy | 19 | nothing |
The log point counts cover every place in the game that writes an event, with the four contact selection points counted under Ship. Value 13 does not exist.
The category filter in the Events window is an equality test, so an event logged with category All appears only when the window shows all categories. Because the logging rule chooses the category, one event type can appear under several categories. In the catalogue, 21 of the 194 types that the game logs are logged under more than one category. Mineral Shortage (64), for example, is logged under Population Production, Population Shipbuilding, Population Ground Units and SYUpgrade, from the mineral limits on industrial projects and on shipyard tasks. Event type Diplomacy (180) and category Diplomacy (19) are separate numbers in separate lists.
Event type catalogue
Section titled “Event type catalogue”The tables below list all 240 rows of DIM_EventType in the game database as shipped, with the columns Description, CombatDisplay, DamageDisplay, AttackEvent, PlayerInterrupt and AIInterrupt. An edited database can change these values. Each row sits under its primary category. The primary category is the one that most of the type’s log points pass, with the lower category value winning a tie. The “Other categories” column counts log points under the remaining categories. “Log points” counts the distinct places that write the type, and “Logged during” names up to two of the game activities that write it. The contact types count the contact selection points that normally return them. Error fallbacks do not add log points to these counts. Rows that no game activity logs form a separate table.
The display and attack columns hold integers or yes or no values, and no rule in play reads them. The PlayerInterrupt and AIInterrupt columns drive interrupt flags and their consumers. The activities behind the rows belong to their own pages, among them space combat resolution, ground combat and conquest, boarding and ship capture, commander lifecycle, production mechanics, shipyard development and ship work, terraforming mechanics, salvage and archaeology and exploration surveys and discovery.
The stored descriptions of rows 342 (Boarding Damage) and 343 (Acid Damage) end with a space. The stored description of row 117 (Message Continued) starts with two spaces. Row 355 has a description of a single space and shows as blank.
All Event Categories (0)
Section titled “All Event Categories (0)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 212 | New Shipping Line | 0 | 0 | no | no | no | 1 | none | shipping line creation |
| 368 | System Destroyed | 0 | 0 | no | yes | yes | 1 | none | system disasters |
Population Production Events (1)
Section titled “Population Production Events (1)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Production | 0 | 0 | no | yes | no | 1 | none | industrial projects |
| 64 | Mineral Shortage | 0 | 0 | no | yes | no | 8 | Population Shipbuilding 1, Population Ground Units 2, SYUpgrade 2 | mineral limit on industrial projects, mineral limit on shipyard tasks |
| 135 | Fuel Shortage | 0 | 0 | no | no | no | 1 | none | industrial projects |
| 276 | Conversion Halted | 0 | 0 | no | no | yes | 1 | none | industrial projects |
| 279 | Insufficient Population | 0 | 0 | no | no | no | 1 | none | industrial projects |
| 319 | Fighter Construction | 0 | 0 | no | no | no | 1 | none | industrial projects |
| 320 | Production Started | 0 | 0 | no | no | no | 1 | none | industrial projects |
Commander (2)
Section titled “Commander (2)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 90 | Commander Promoted | 0 | 0 | no | no | no | 6 | none | commander promotion |
| 98 | New Naval Officer | 0 | 0 | no | no | no | 1 | none | commander creation |
| 99 | Commander Health | 1100 | 1100 | no | no | no | 10 | Ship 2, Combat 2 | commander health, retirement and service medals |
| 129 | Command Assignment | 0 | 0 | no | no | no | 6 | none | commander assignment to a ship, commander assignment to a ground formation |
| 256 | New Administrator | 0 | 0 | no | no | no | 1 | none | commander creation |
| 257 | New Scientist | 0 | 0 | no | no | no | 1 | none | commander creation |
| 280 | Commander Experience | 0 | 0 | no | no | no | 1 | none | commander bonus increase |
| 289 | Senior Officer Required | 0 | 0 | no | no | no | 2 | none | naval admin command preparation |
| 291 | New Ground Force Officer | 0 | 0 | no | no | no | 1 | none | commander creation |
| 292 | Retirement | 0 | 0 | no | no | no | 2 | none | commander health, retirement and service medals |
| 296 | Medal Awarded | 0 | 0 | no | no | no | 1 | none | medal award |
| 325 | Commander Restored | 0 | 0 | no | no | no | 2 | none | the Restore button of the Commanders window |
| 370 | Scientist Experience | 0 | 0 | no | no | no | 1 | none | commander bonus increase |
| 371 | Administrator Experience | 0 | 0 | no | no | no | 1 | none | commander bonus increase |
| 372 | Unassigned Experience | 0 | 0 | no | no | no | 1 | none | commander bonus increase |
Population Mining Events (3)
Section titled “Population Mining Events (3)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 66 | Mineral Exhausted | 0 | 0 | no | no | no | 2 | none | sorium harvesting, mining |
| 143 | Geo Survey Complete | 0 | 0 | no | no | no | 1 | none | ground geological survey |
| 211 | Civilian Mining Colony | 0 | 0 | no | no | no | 4 | none | civilian mining complex expansion, civilian mining colony founding |
Population Environment Events (4)
Section titled “Population Environment Events (4)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 76 | Gas Removed | 0 | 0 | no | yes | no | 2 | none | terraforming |
| 77 | Terraforming Report | 0 | 0 | no | yes | no | 1 | none | terraforming |
| 81 | Ice Sheet Melted | 0 | 0 | no | yes | no | 1 | none | hydrosphere change |
| 284 | Change to Dominant Terrain | 0 | 0 | no | no | no | 4 | none | dominant terrain update |
| 316 | Ice Sheet Frozen | 0 | 0 | no | no | no | 1 | none | hydrosphere change |
Population Shipbuiding Events (5)
Section titled “Population Shipbuiding Events (5)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 3 | Ship Repair | 0 | 0 | no | yes | no | 2 | none | shipyard tasks |
| 4 | Ship Refit | 0 | 0 | no | yes | no | 1 | none | shipyard tasks |
| 7 | Ship Scrapped | 0 | 0 | no | yes | no | 1 | none | shipyard tasks |
| 317 | Shipyard Task Abandoned | 0 | 0 | no | yes | no | 2 | Population Summary 1 | combat reports and aftermath, automatic refit queue |
Population Ground Units Events (6)
Section titled “Population Ground Units Events (6)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 9 | Unit Trained | 0 | 0 | no | yes | no | 1 | none | ground unit training and replacements |
| 82 | Morale Increase | 0 | 0 | no | no | no | 1 | none | ruin installation recovery |
| 101 | Factory Restored | 0 | 0 | no | no | no | 2 | none | ruin recovery, ruin component recovery |
| 299 | Breakthrough Achieved | 0 | 0 | no | no | no | 1 | none | ground combat round |
| 323 | Formation Training Task | 0 | 0 | no | no | no | 1 | none | start of queued training tasks |
| 359 | Ground Unit Unloaded | 0 | 0 | no | no | no | 2 | none | unloading a ground formation, unloading all ground formations |
| 369 | No Replacements Required | 0 | 0 | no | no | no | 1 | none | ground unit training and replacements |
Population Research Events (7)
Section titled “Population Research Events (7)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 60 | Research Completed | 0 | 0 | no | yes | no | 5 | none | research completion |
| 63 | Inactive Lab | 0 | 0 | no | yes | no | 1 | none | research projects |
| 88 | Research Started | 0 | 0 | no | no | no | 1 | none | research projects |
| 127 | Tech Downloaded | 0 | 0 | no | yes | no | 1 | none | ship technical data download |
| 229 | Overallocation of Labs | 0 | 0 | no | no | no | 1 | none | research projects |
| 238 | Tech Data Learned | 0 | 0 | no | no | no | 2 | none | component disassembly |
| 367 | Interrogation Update | 0 | 0 | no | no | no | 2 | none | prisoner interrogation |
Combat Results Events (8)
Section titled “Combat Results Events (8)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 15 | Missile Launch | 90 | 90 | yes | no | yes | 2 | Ship 1 | combat reports and aftermath, anti-missile point defence launches |
| 220 | Boarding Combat | 0 | 0 | no | no | no | 4 | Ship 2 | boarding combat |
| 294 | Acid Burn | 1056 | 1056 | yes | no | no | 2 | Ship 1 | ongoing acid damage, combat reports and aftermath |
| 301 | Element Loss Summary | 0 | 0 | no | no | no | 3 | none | ground combat aftermath |
| 304 | Element vs GUC Report | 0 | 0 | no | no | no | 1 | none | ground combat reports |
| 331 | Energy Point Defence | 0 | 0 | no | yes | no | 1 | none | combat reports and aftermath |
| 332 | STO Point Defence | 0 | 0 | no | yes | no | 1 | none | combat reports and aftermath |
| 333 | AMM Point Defence | 0 | 0 | no | yes | no | 2 | none | combat reports and aftermath |
| 334 | Ship Combat - Energy | 0 | 0 | no | yes | no | 3 | none | combat reports and aftermath |
| 335 | Ship Combat - Missile | 0 | 0 | no | yes | no | 3 | none | combat reports and aftermath |
| 336 | STO Combat | 0 | 0 | no | yes | no | 2 | none | combat reports and aftermath |
| 337 | Missile vs Ship | 0 | 0 | no | yes | no | 3 | none | combat reports and aftermath |
| 338 | Attacked by STO | 0 | 0 | no | yes | no | 1 | none | combat reports and aftermath |
| 339 | Attacked By Energy Weapons | 0 | 0 | no | yes | no | 4 | none | combat reports and aftermath |
| 340 | Attacked By Missiles | 0 | 0 | no | yes | no | 3 | none | combat reports and aftermath |
| 341 | Attacked By AA Fire | 0 | 0 | no | yes | no | 1 | none | combat reports and aftermath |
| 342 | Boarding Damage | 0 | 0 | no | yes | no | 1 | none | combat reports and aftermath |
| 344 | Collaterall Damage | 0 | 0 | no | yes | no | 1 | none | combat reports and aftermath |
| 345 | Damage Summary | 0 | 0 | no | yes | no | 1 | none | internal damage |
| 346 | Fighter Point Defence | 0 | 0 | no | yes | no | 1 | none | combat reports and aftermath |
| 347 | Fighter Combat - Energy | 0 | 0 | no | yes | no | 2 | none | combat reports and aftermath |
| 348 | Fighter Combat - Missile | 0 | 0 | no | yes | no | 2 | none | combat reports and aftermath |
| 349 | Fleet PD Summary | 0 | 0 | no | yes | no | 1 | none | point defence summaries |
| 352 | Bombardment Summary | 0 | 0 | no | no | no | 1 | none | bombardment damage summary |
| 354 | Population PD Summary | 0 | 0 | no | yes | no | 1 | none | point defence summaries |
| 355 | (blank) | 0 | 0 | no | no | no | 2 | none | point defence summaries |
| 365 | Successful Ramming Attack | 1 | 1 | yes | yes | yes | 1 | none | combat reports and aftermath |
| 366 | Ship Rammed | 1 | 1 | yes | yes | yes | 3 | none | combat reports and aftermath |
Ship-based Events (9)
Section titled “Ship-based Events (9)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 2 | Ship Construction | 0 | 0 | no | yes | no | 4 | Population Production 1, Population Shipbuilding 1 | shipyard tasks, industrial projects |
| 10 | Commander Update | 1090 | 1090 | no | no | no | 4 | none | ship removal, ship evacuation |
| 14 | Targeting Problem | 40 | 0 | yes | yes | no | 9 | none | missile salvo target selection, population target selection |
| 16 | Out of Ammo | 50 | 0 | yes | yes | no | 4 | none | fleet missile launch at assigned targets, ship missile launches |
| 27 | Ship Destroyed | 1080 | 1080 | no | yes | yes | 1 | none | internal damage |
| 28 | Damage Report | 1000 | 1000 | no | yes | yes | 2 | Combat 1 | combat reports and aftermath |
| 58 | No Spare Parts | 0 | 0 | no | no | no | 1 | none | damage control repairs |
| 59 | Successful Repair | 0 | 0 | no | no | no | 1 | none | damage control repairs |
| 65 | Low Fuel | 0 | 0 | no | no | no | 4 | none | low fuel warnings |
| 80 | Harvester Capacity | 0 | 0 | no | no | no | 1 | none | sorium harvesting |
| 97 | System Damaged | 0 | 0 | no | yes | yes | 3 | none | boarding combat losses, component damage |
| 111 | Components Scrapped | 0 | 0 | no | no | no | 2 | Population Summary 1 | colony component scrapping, ship component scrapping |
| 119 | Fire Delay | 20 | 0 | yes | no | no | 4 | none | combat fire resolution, direct fire |
| 122 | Overhaul Complete | 0 | 0 | no | no | no | 1 | none | maintenance, overhauls and failures |
| 133 | Civilian Construction | 0 | 0 | no | no | no | 1 | none | shipping line construction |
| 139 | Civilian Activity | 0 | 0 | no | no | no | 1 | none | shipping line handling of damaged ships |
| 146 | Maintenance Problem | 0 | 0 | no | no | no | 3 | none | internal damage, maintenance failure while firing |
| 147 | New Alien Race | 0 | 0 | no | yes | yes | 1 | none | first contact with an alien race |
| 178 | Ship Surrender | 0 | 0 | no | yes | no | 2 | none | ship surrender |
| 181 | New Hostile Contact | 0 | 0 | no | yes | yes | 1 | none | new and re-established contact reports |
| 182 | New Neutral Contact | 0 | 0 | no | no | no | 1 | none | new and re-established contact reports |
| 183 | New Friendly Contact | 0 | 0 | no | no | no | 1 | none | new and re-established contact reports |
| 184 | New Allied Contact | 0 | 0 | no | no | no | 1 | none | new and re-established contact reports |
| 191 | Civilian Contact | 0 | 0 | no | no | no | 1 | none | new and re-established contact reports |
| 201 | Overhaul Clock Reduced | 0 | 0 | no | no | no | 2 | none | shipyard tasks |
| 206 | Hostile Contact Update | 0 | 0 | no | yes | no | 3 | none | new and re-established contact reports, ship contact update |
| 207 | Neutral Contact Update | 0 | 0 | no | no | no | 3 | none | new and re-established contact reports, ship contact update |
| 208 | Friendly Contact Update | 0 | 0 | no | no | no | 3 | none | new and re-established contact reports, ship contact update |
| 209 | Allied Contact Update | 0 | 0 | no | no | no | 3 | none | new and re-established contact reports, ship contact update |
| 210 | Civilian Contact Update | 0 | 0 | no | no | no | 3 | none | new and re-established contact reports, ship contact update |
| 219 | Boarding Attempt | 0 | 0 | no | no | no | 9 | none | boarding attempt from a move order |
| 227 | Ramming Attempt | 0 | 0 | no | yes | yes | 2 | Fleet 1 | ramming attempt |
| 232 | New Alien Class | 0 | 0 | no | no | no | 1 | none | new alien class record |
| 233 | New Alien Ship | 0 | 0 | no | yes | yes | 1 | none | new alien ship record |
| 253 | Shore Leave Complete | 0 | 0 | no | no | no | 1 | none | deployment, morale and shore leave |
| 254 | Life Support Failure | 0 | 0 | no | no | no | 3 | none | deployment, morale and shore leave |
| 277 | Lifepods Launched | 0 | 0 | no | no | no | 1 | none | ship evacuation |
| 283 | Ship Overcrowded | 0 | 0 | no | no | no | 1 | none | deployment, morale and shore leave |
| 285 | New Combat Contact | 1088 | 1088 | no | no | yes | 2 | Combat 1 | new and re-established contact reports |
| 290 | Maximum Fleet Training | 0 | 0 | no | no | no | 1 | none | fleet training |
| 297 | Boarding Underway | 0 | 0 | no | no | no | 4 | none | boarding combat |
| 305 | Ship vs GUC Report | 0 | 0 | no | no | no | 1 | none | ground combat reports |
| 310 | Orbital Support Reassigned | 0 | 0 | no | no | no | 1 | none | ground combat round |
| 311 | Ground Support Reassigned | 0 | 0 | no | no | no | 2 | none | ground combat round |
| 313 | Target Out of Range | 1 | 0 | no | no | no | 1 | none | combat fire resolution |
| 318 | Training not Possible | 0 | 0 | no | no | no | 1 | none | fleet training |
| 321 | Deployment Time Exceeded | 0 | 0 | no | no | no | 1 | none | deployment time morale |
| 326 | Incorrect Ordnance | 0 | 0 | no | yes | no | 4 | none | fleet missile launch at assigned targets, ship missile launches |
| 327 | Fleet Transfer | 0 | 0 | no | no | no | 2 | none | fleet transfer to another race |
| 350 | Civilian Ship Scrapped | 0 | 0 | no | no | no | 2 | none | fleet move orders, shipping line retirement of a replaced ship |
| 351 | Damage Control | 0 | 0 | no | no | no | 1 | none | internal damage |
| 357 | Alien Salvage | 0 | 0 | no | no | no | 1 | none | wreck salvage completion |
| 361 | Maintenance Failure | 0 | 0 | no | no | no | 3 | none | internal damage, maintenance failure while firing |
| 362 | Neutral Contact Update - AC | 0 | 0 | no | no | no | 3 | none | new and re-established contact reports, ship contact update |
| 363 | Friendly Contact Update - AC | 0 | 0 | no | no | no | 3 | none | new and re-established contact reports, ship contact update |
Fleet-based Events (10)
Section titled “Fleet-based Events (10)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 41 | Orders Assigned | 0 | 0 | no | no | no | 25 | none | join operational group standing order |
| 42 | Orders Not Possible | 0 | 0 | no | yes | no | 18 | none | cycling of completed move orders |
| 44 | Ruins Located | 0 | 0 | no | yes | no | 3 | System 1, Missile Salvo 1 | fleet move orders, geological survey by missile salvos |
| 45 | Orders Completed | 0 | 0 | no | yes | no | 11 | none | detachment order |
| 46 | Insufficient Fuel | 0 | 0 | no | no | no | 1 | none | fuel use during movement |
| 54 | Transit Failure | 0 | 0 | no | yes | no | 4 | none | sub-fleet detachment for a transit, transit check |
| 71 | Fuel Exhausted | 0 | 0 | no | no | no | 2 | none | fleet move orders, movement of a fleet anchored to another fleet |
| 83 | Pickup Failed | 0 | 0 | no | yes | no | 10 | Ship 4 | loading a ground formation into troop transports |
| 92 | Life Pod Expired | 0 | 0 | no | no | no | 2 | none | lifepod expiry |
| 93 | Search and Rescue | 0 | 0 | no | no | no | 2 | none | survivor rescue |
| 107 | Fleet Message | 0 | 0 | no | yes | no | 1 | none | fleet move orders |
| 108 | Wreck Salvaged | 0 | 0 | no | no | no | 1 | none | wreck salvage completion |
| 128 | Tech Data Scanned | 0 | 0 | no | no | no | 1 | none | technical data scanning |
| 140 | Illegal Order | 0 | 0 | no | yes | no | 3 | none | fleet move orders |
| 145 | No Freighter Overhaul | 0 | 0 | no | no | no | 1 | none | start of an overhaul |
| 195 | New System Discovered | 0 | 0 | no | yes | yes | 5 | none | jump point exploration |
| 260 | 0 | 0 | no | no | no | 3 | System 1, Missile Salvo 1 | fleet move orders, geological survey by missile salvos | |
| 266 | Invalid Unload System | 0 | 0 | no | yes | yes | 2 | none | colonist unloading |
| 288 | Ground Survey Potential | 0 | 0 | no | no | no | 2 | Missile Salvo 1 | fleet move orders, geological survey by missile salvos |
| 295 | Intact Ship Salvaged | 0 | 0 | no | no | no | 1 | none | intact ship salvage completion |
| 312 | Installations Salvaged | 0 | 0 | no | no | no | 2 | none | population salvage |
| 353 | Transit Delay | 0 | 0 | no | no | no | 1 | none | transit check |
Jump Point Events (11)
Section titled “Jump Point Events (11)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 138 | Jump Point Detected | 0 | 0 | no | yes | yes | 4 | none | detection of a fleet transiting a jump point, sensor checks |
System Events (12)
Section titled “System Events (12)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 37 | System Surveyed | 0 | 0 | no | yes | no | 1 | none | gravitational survey completion |
| 157 | Successful Espionage | 0 | 0 | no | yes | no | 7 | All 1, Intelligence 3 | random alien race intelligence reward |
| 218 | Geological Survey Data | 0 | 0 | no | no | no | 1 | none | geological survey treaty sharing |
| 314 | Ground Combat Intelligence | 1 | 0 | no | no | no | 1 | none | ground combat round |
Population Summary Events (14)
Section titled “Population Summary Events (14)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 57 | Ruins Exploited | 0 | 0 | no | yes | no | 3 | Population Ground Units 1 | xenoarchaeology |
| 115 | Pop Status Change | 0 | 0 | no | no | no | 1 | none | political status progress |
| 141 | New Mineral Deposit | 0 | 0 | no | no | no | 4 | Fleet 1, Missile Salvo 1 | fleet move orders, geological survey by missile salvos |
| 142 | Accessibility Increase | 0 | 0 | no | no | no | 1 | none | mineral generation after a ground survey |
| 148 | Unrest Increasing | 0 | 0 | no | no | no | 1 | none | unrest and stability |
| 286 | Admin Command Update | 0 | 0 | no | no | no | 2 | none | admin command relocation to a naval headquarters |
| 287 | Training Task Abandoned | 0 | 0 | no | no | no | 1 | none | combat reports and aftermath |
| 324 | Planet Destroyed | 0 | 0 | no | yes | no | 1 | none | orbital decay |
| 328 | Installation Scrapped | 0 | 0 | no | no | no | 2 | none | installation scrapping, ordnance scrapping |
| 329 | Ground Units Scrapped | 0 | 0 | no | no | no | 1 | none | ground unit scrapping |
| 360 | Stockpile Warning | 0 | 0 | no | no | no | 2 | none | colony production |
Intelligence (15)
Section titled “Intelligence (15)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 106 | Intelligence Update | 0 | 0 | no | no | no | 29 | Ship 1 | alien class weapon intelligence, alien ground unit class weapon reveal |
| 258 | POWs Rescued | 0 | 0 | no | no | no | 2 | none | colony control transfer |
| 293 | New Alien Population | 0 | 0 | no | no | no | 1 | none | new alien population record |
| 298 | New Alien Ground Unit | 0 | 0 | no | no | no | 1 | none | new alien ground unit class record |
| 300 | Ground Attack Summary | 0 | 0 | no | no | no | 2 | none | ground combat reports |
| 302 | Attack vs GUC Summary | 0 | 0 | no | no | no | 2 | none | ground combat reports |
| 303 | Ground Defence Summary | 0 | 0 | no | no | no | 2 | none | ground combat aftermath |
| 306 | GUC vs GUC Summary | 0 | 0 | no | no | no | 2 | none | ground combat reports |
| 307 | Formation Attack Summary | 0 | 0 | no | no | no | 1 | none | ground combat reports |
| 308 | Formation Loss Summary | 0 | 0 | no | yes | no | 1 | none | ground combat aftermath |
| 309 | Orbital vs GUC Summary | 0 | 0 | no | no | no | 1 | none | ground combat reports |
| 315 | Alien Communication | 0 | 0 | no | yes | no | 8 | Ship 2, Population Summary 2 | territorial claim diplomacy |
| 330 | Orbital Support Summary | 0 | 0 | no | no | no | 1 | none | ground combat reports |
Missile Salvo (16)
Section titled “Missile Salvo (16)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 52 | Target Lost | 41 | 0 | yes | no | no | 2 | none | missile salvo movement |
| 200 | Missile Self-destruct | 0 | 0 | no | no | no | 1 | none | missile salvo movement |
Combat (17)
Section titled “Combat (17)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 75 | Ground Combat Update | 0 | 0 | no | yes | no | 6 | none | ground combat status update, ground combat surrender |
| 169 | Increment Adjustment | 0 | 0 | no | no | no | 1 | none | increment preparation |
| 173 | Reparations | 0 | 0 | no | yes | no | 1 | none | colony control transfer |
| 174 | Planet Looted | 0 | 0 | no | yes | no | 1 | none | colony control transfer |
| 356 | New Wreck Detected | 0 | 0 | no | no | no | 1 | none | wreck creation |
SYUpgrade (18)
Section titled “SYUpgrade (18)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 125 | Shipyard Modified | 0 | 0 | no | yes | no | 8 | none | shipyard modification |
Diplomacy (19)
Section titled “Diplomacy (19)”| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt | Log points | Other categories | Logged during |
|---|---|---|---|---|---|---|---|---|---|
| 55 | Communication | 0 | 0 | no | no | no | 6 | none | alien communication attempts |
| 180 | Diplomacy | 0 | 0 | no | no | no | 14 | Intelligence 1 | diplomatic threshold changes |
Event types that no game activity logs
Section titled “Event types that no game activity logs”No game activity passes these IDs to event logging, either directly or through a contact selection. The rows still load into memory with the catalogue, can appear in saved logs written by other game versions, and can carry colour or hidden settings. IDs 25, 35, 116, 155, 177, 186, 187, 203 and 204 are also not among the 241 event types the game defines.
| ID | Description | Combat display | Damage display | Attack | Player interrupt | AI interrupt |
|---|---|---|---|---|---|---|
| 0 | No Event Type | 0 | 0 | no | no | no |
| 11 | Shield Recharge | 0 | 0 | no | no | no |
| 12 | Targeting | 10 | 0 | yes | no | no |
| 17 | No Missile Assigned | 60 | 0 | yes | yes | no |
| 18 | Weapon Reloading | 70 | 0 | yes | no | no |
| 19 | Chance To Hit | 95 | 95 | yes | no | no |
| 20 | Target Hit | 100 | 100 | yes | no | yes |
| 21 | Target Missed | 110 | 110 | yes | no | no |
| 22 | Weapon Recharging | 80 | 0 | yes | no | no |
| 25 | System Intact | 0 | 0 | no | no | no |
| 26 | Secondary Explosion | 1070 | 1070 | no | no | no |
| 35 | Team Skill | 0 | 0 | no | no | no |
| 43 | Minerals Located | 0 | 0 | no | no | no |
| 53 | Missiles Lost | 42 | 0 | no | no | no |
| 87 | Jump Gate Underway | 0 | 0 | no | no | no |
| 91 | Conditional Order | 0 | 0 | no | no | no |
| 100 | Mine Restored | 0 | 0 | no | no | no |
| 116 | Insufficient JGC | 0 | 0 | no | no | no |
| 117 | Message Continued | 0 | 0 | no | no | no |
| 149 | Unrest Decreasing | 0 | 0 | no | no | no |
| 155 | Morale Increase | 0 | 0 | no | no | no |
| 177 | Overkill | 102 | 102 | no | no | no |
| 179 | Breathable Atmosphere | 0 | 0 | no | yes | no |
| 186 | Wreck Contact | 0 | 0 | no | no | no |
| 187 | Mineral Packet Contact | 0 | 0 | no | no | no |
| 203 | Thermal Contact Lost | 0 | 0 | no | no | no |
| 204 | GPD Contact Lost | 0 | 0 | no | no | no |
| 215 | Outstanding New Officer | 0 | 0 | no | no | no |
| 216 | Exceptional New Officer | 0 | 0 | no | no | no |
| 217 | Promising New Officer | 0 | 0 | no | no | no |
| 221 | Crew Losses | 0 | 0 | no | no | no |
| 224 | Wreck Components | 0 | 0 | no | no | no |
| 228 | Empire in Debt | 0 | 0 | no | no | no |
| 235 | Crew Grade Increase | 0 | 0 | no | no | no |
| 237 | Shield Deactivation | 0 | 0 | no | no | no |
| 245 | Tractor(s) Released | 0 | 0 | no | no | no |
| 252 | Crew Morale Falling | 0 | 0 | no | no | no |
| 255 | Probe Out of Fuel | 0 | 0 | no | no | no |
| 265 | Time Check | 0 | 0 | no | no | no |
| 278 | Crew Escape | 0 | 0 | no | no | no |
| 281 | Replacement Unit Disbanded | 0 | 0 | no | no | no |
| 282 | Recovery Failure | 0 | 0 | no | no | no |
| 322 | Commander Unassigned | 0 | 0 | no | no | no |
| 343 | Acid Damage | 0 | 0 | no | yes | no |
| 358 | Test Data | 0 | 0 | no | no | no |
| 364 | Allied Contact Update - AC | 0 | 0 | no | no | no |
Event types in the game without a catalogue row
Section titled “Event types in the game without a catalogue row”These event types have no DIM_EventType row in the game database as shipped. Event logging stops before storing any event whose type has no catalogue row. Type 48 holds landing failure messages and type 84 holds unable-to-unload messages, as writing an event to the log describes. The other eight have no log point.
| Value | Log points | Categories | Logged during |
|---|---|---|---|
| 48 | 5 | Fleet 5 | landing on assigned motherships, landing on a specified mothership |
| 61 | 0 | none | none |
| 62 | 0 | none | none |
| 78 | 0 | none | none |
| 84 | 9 | Ship 8, Fleet 1 | mineral unloading to reserve levels, unloading a ground formation, installation unloading |
| 86 | 0 | none | none |
| 126 | 0 | none | none |
| 137 | 0 | none | none |
| 152 | 0 | none | none |
| 236 | 0 | none | none |
Hidden event types
Section titled “Hidden event types”A hidden event type is a record with a RaceID and an EventID. All records for a game live in one game-wide list.
- Test. An event type is hidden for a race when the list holds a record with that race’s
RaceIDand the event type. The game scans the list from the start on each test and stops at the first match. - Toggle. Toggling removes the first matching record when one exists and otherwise adds a new one.
- Window control. The Hide Event button toggles the event type of the selected row for that event’s recipient race, not for the race chosen in the window. With Show All Races checked, a button press can therefore hide a type for another race. With no event row selected, the button shows “Please select an event to hide or unhide”.
The hidden list changes what three displays show and nothing else.
| Display | Effect of a hidden type |
|---|---|
| Events window increment selection | The type never counts toward the event limit, even with Show All Events checked. |
| Events window rows | The row is skipped unless Show All Events is checked. |
| Tactical map overlay | The row is always skipped. Show All Events has no effect here. |
Event logging stores and saves a hidden event like any other and sets its interrupt markers. No AI or simulation rule tests whether a type is hidden. Only the two Events window displays and the overlay do.
Event colours
Section titled “Event colours”An event colour entry holds an event type, a text colour, an alert (background) colour and a race ID. Each race keeps its entries indexed by event type ID. The Events window creates entries through its Back Colour, Text Colour, Copy Colour and Import Colours buttons. Copy Colour copies the entry to all races. When a population is granted independence, the new independent race receives a copy of every colour entry of the race that granted independence.
The game gives a new race no default colours. The game database as shipped contains a DefaultEventColour table, but no rule in play reads it. When a race has no entry for a type, the Events window gives the event type cell no colour of its own for either text or background. The overlay then draws the type in its standard light yellow (RGB 255, 255, 192) with no rectangle.
The list colours only the event type cell of the first line of each event. The rest of the row keeps the list’s normal colours. Event colours covers the colour dialogues, the presets and the CSV format.
Events window
Section titled “Events window”The Events window shows one race’s log by default. When it opens it restores its saved position, fills the category list, copies the game’s stored day limit (MaxEventDays) and event limit (MaxEventCount) into its two text boxes over their form defaults of 30 and 300, fills the race list and sets its tooltips. It shows the Show All Races check box only in Spacemaster mode. The race list holds player races, plus NPRs in designer mode, ordered by race title.
| Control | Behaviour |
|---|---|
| Race list | Selects the race and refreshes. It passes the race change to other open windows, except when the window is opening or when another window set the race. |
| Category list | Sets the category filter and refreshes. Changes are ignored while the window is opening, so the window opens on All. |
| Event Days text box | On leaving the box, stores the value rounded up in MaxEventDays and refreshes. |
| Max Events text box | On leaving the box, stores the value rounded up in MaxEventCount and refreshes. |
| Show All Events | Shows hidden types in the rows. |
| Show All Races | Adds every player race’s events, and NPR events in designer mode. Visible only in Spacemaster mode. |
| Refresh | Rebuilds the list. |
| Hide Event | Toggles the selected event’s type for its recipient race. |
| Text Colour, Back Colour, Copy Colour, Import Colours, Export Colours | Colour editing, covered by event colours. |
| Full Height | Sets the window height to the screen working area minus 10 and relabels itself Normal Height, or returns to 890 pixels. |
| Text File | Hidden and does nothing when clicked. |
| Double-click | Opens the event’s context. |
| Keys | Alt+F4 closes the window. Other keys go to the selected race’s toolbar hotkeys. |
Each refresh rounds both text box values up to whole numbers and rebuilds the list from the selected race, both check box states and the category. Text that is not a number makes the game show an error, Function #3197 when leaving the day box, Function #3198 when leaving the event box, or Function #647 during a refresh. The end of every time increment refreshes every open Events window. Scrapping and disassembly actions in the Economics and Naval Organization windows also refresh it.
The list builds in two passes.
- It clears the list and adds a header row with Race, Event Type, System and Event.
- It sets the cutoff to the current game time minus the day limit times 86400 seconds, and takes the increments whose start time is strictly greater, newest first.
- It adds whole increments to the display set and adds each increment’s visible count to a running total. An event counts when its race is the selected race, or when Show All Races is checked and the race is not an NPR or designer mode is on, and its type is not hidden for its race. The pass stops after the first increment that lifts the total above the event limit. The limit therefore admits whole increments and can exceed the maximum. The count ignores the category filter and Show All Events.
- It walks the chosen increments oldest first. Each one gets a blank row and a row with the formatted end time (start time plus length) and the text “Last Time Increment N seconds (dd:hh:mm:ss)”.
- It applies the race filter, then the category filter when the category is not All, then the hidden filter unless Show All Events is checked.
- Each event shows the recipient’s race title, the type’s
Description, the recipient’s known name for the system or “N/A”, and the message wrapped to 770 pixels. Continuation lines belong to the same event, so a double-click on any line opens that event. - It scrolls the last row into view.
The selected race’s own events pass the race filter even when that race is an NPR. A player can select an NPR only in designer mode. The window ignores the Spacemaster-only marker.
Tactical map event overlay
Section titled “Tactical map event overlay”The tactical map draws the overlay on each repaint while its Events check box is checked. The overlay shows the increment with the largest start time, which is the latest time step or, after a load, the latest saved increment.
- Filter. It drops NPR events unless designer mode is on, even when the NPR is the active race. It then keeps the active race’s events, or every race’s events when the all-races check box is checked. It skips hidden types while drawing. It applies no category filter.
- Layout. The header row sits at y 152 and shows the increment end time and the text “Last Time Increment N seconds (dd:hh:mm:ss)”. The first event row sits at y 172. Each further line adds 20. The event type column starts at x 345, the system column at 495 and the message column at 615. With all races shown, those three move right by 150 and the race title takes x 345. Messages wrap at 670 pixels.
- Colour. With a colour entry, the overlay fills a 145 by 18 rectangle at the event type, starting 2 pixels above the text, in the alert colour and draws the type in the text colour. Other text uses light yellow (RGB 255, 255, 192).
- Hit box. It stores the top and bottom y of each drawn event as that event’s overlay hit box.
The overlay keeps the filtered list, hidden events included, as the list of displayed events. A double-click with x from 345 to 1285 while the Events check box is checked opens the first listed event whose range from top (included) to bottom (excluded) contains the click y. The overlay does not reset the hit box of a hidden event it skips. A new event starts with both bounds at 0 and never matches. An event drawn once and then hidden keeps its old bounds, and the game does not exclude it from the hit test.
The all-races check box is visible only in Spacemaster mode. Both check states are restored from the active race and saved on the race record as chkEvents and chkEventsAllRaces. A new race starts with both unchecked.
Opening an event’s context
Section titled “Opening an event’s context”A double-click in the Events window or on the overlay opens the event’s context. Nothing happens when there is no event or the event has no recipient race.
- Map categories. Fleet, Ship, Jump Point, Combat Results, Missile Salvo, Intelligence, System and Combat centre the tactical map on the event’s coordinates in the event’s system, as seen by the recipient race. When that race has no survey record for the system, nothing happens. When the system is already selected, the map recentres and refreshes. Otherwise it recentres and selects the system.
- Economics categories. Population Production opens the Industry tab, Population Research the Research tab, Population Summary the Summary tab, Population Mining the Mining tab, Population Ground Units the GU Training tab, Population Shipbuilding and SYUpgrade the Shipyards tab, and Population Environment the Environment tab. When any Economics window is open, every open one switches to that tab and selects the event’s population. Otherwise a new Economics window opens on that tab and population.
- Other categories. All, Commander and Diplomacy open nothing.
The category alone decides the target. An event logged without a population in an Economics category leaves each open Economics window’s current population selected, because no colony in the window’s list matches. A new window opens with no population selected. The game does not check for a missing population.
Worked examples
Section titled “Worked examples”These examples use catalogue flags from the game database as shipped.
A player interrupt shortens a one-day step. The player selects 86,400 seconds with automatic subpulse. The automatic subpulse rule picks 1,800 seconds for lengths from 28,801 seconds up to but not including 86,401 seconds, giving 48 subpulses. During subpulse 10 a player race receives New Alien Race (147), which has PlayerInterrupt 1. Event logging sets both markers. The game finishes subpulse 10 and stops at the boundary, so the increment’s length becomes 18,000 seconds. The end-of-increment work still runs once. With auto turns on, the auto-turn cycle then stops because the player interrupt is set.
An NPR ignores the player flag. An NPR receives Production (1), which has PlayerInterrupt 1 and AIInterrupt 0. For an NPR event logging tests only AIInterrupt, so neither marker changes and the time step runs its full length.
A hidden type still interrupts. A player hides Ship Destroyed (27). A later Ship Destroyed event for that race sets both markers, stops the time step and stops auto turns. The overlay and the Events window skip the row, and the event is saved.
The event limit admits whole increments. The window uses 60 days and a limit of 300. The three newest increments in range hold 120, 150 and 40 visible events. The running total is 120, then 270, then 310. The pass stops after the third increment because 310 is greater than 300, and the window lists up to 310 events. With the category set to Fleet, the window still selects those three increments and then shows only their Fleet events.
Retention tests the increment start. At save, the current game time is T. An increment that started at T - 157,680,000 fails the strict test (less than 157,680,000 seconds, five years) and its events are dropped, even an event logged an hour after that start. An increment that started one second later is kept.
The load limit counts skipped rows. A save holds 12,000 log rows inside the retention window, and 500 of the newest belong to a race that no longer exists. The load reads the 10,000 rows with the highest IncrementID, skips the 500, and restores 9,500 events. The 2,000 oldest rows stay in the table until the next save rewrites it without them.
A control-race update. A Friendly alien controls a system in the detecting race’s survey. A strength change on that alien’s ship logs Friendly Contact Update - AC (363) in category Ship. In a system the alien does not control, the same change logs Friendly Contact Update (208). An Allied controller always gives Allied Contact Update (209).
Persistence and reload
Section titled “Persistence and reload”A save writes increments first, then the game log and event colours. Hidden events are written later, after the ship class templates. The catalogue table DIM_EventType is read-only. No save writes it.
Log retention at save
Section titled “Log retention at save”The save deletes the game’s FCT_Increments rows and writes every increment with IncrementID, GameID, GameTime and Length. It applies no age limit to increments.
The save then deletes the game’s FCT_GameLog rows. It writes the events of every increment whose start time is less than five years old, that is, the current game time minus the increment’s GameTime is less than 157,680,000 seconds. The test reads the increment’s start time, not the event’s Time. Each row carries IncrementID, GameID, RaceID, SMOnly, Time, EventType, MessageText, SystemID, Xcor, Ycor, IDType and PopulationID. IDType stores the category. SystemID and PopulationID are 0 when the event has none. The running game never removes events from memory, so retention applies only at save.
Loading by increment
Section titled “Loading by increment”When a game loads, the game starts a fresh increment list, loads the static definitions including the event types, then loads all increments. After systems, races and populations are loaded, it loads the game log, then event colours, then hidden events.
The log load selects the game’s FCT_GameLog rows ordered by IncrementID descending, with a limit of 10,000 rows. For each row it applies these rules.
| Linked record | When it is missing |
|---|---|
| Increment | Row skipped. |
| Event type | Row skipped. |
| Race | Row skipped. |
| System | Event kept with no system. |
| Population | Event kept with no population. |
The load restores the category from IDType, the time, the coordinates, SMOnly and the message, and appends the event to its increment’s list. The limit applies when the rows are selected, before the skip rules, so skipped rows still use places. The rows are ordered only by IncrementID. Inside one increment, the reloaded order is the order the database returns, which the game does not fix. Increments whose events fell outside the limit or the retention window still load, with empty lists. Such increments still count as whole increments in the Events window selection, with zero events.
Spacemaster-only flag
Section titled “Spacemaster-only flag”The Spacemaster-only marker is set when the event is written and is saved and loaded with the event. No rule in play sets it to true. No display reads the marker. Events written during play carry false, and loaded rows keep their stored value. Designer mode and Spacemaster-only events covers the same marker from the mode side.
Hidden events, colours and window settings
Section titled “Hidden events, colours and window settings”The save deletes the game’s FCT_HideEvents rows and writes every hidden-event record with RaceID, EventID and the current GameID. When a game loads, hidden-event rows are read from FCT_HideEvents with no GameID filter. A row is kept when the game has a race with that RaceID or the RaceID is 0 or less, and the event type exists. A row from another game therefore loads when its race ID is 0 or less, or when it matches a race ID in this game, and the next save writes it under this game’s ID. Duplicate rows are not removed on load, and the toggle removes only the first match.
The save deletes the game’s FCT_EventColour rows and writes each distinct colour entry with EventTypeID, RaceID, GameID, AlertColour and TextColour, the two colours as ARGB integers. On load, a row with an unknown event type is skipped, alpha is forced to 255, and the entry is dropped when the race does not exist.
FCT_Game stores MaxEventDays and MaxEventCount, which default to 60 and 300. FCT_Race stores the overlay check states chkEvents and chkEventsAllRaces.
The save keeps neither interrupt marker, the current increment, the overlay hit boxes, or the Events window’s category and check box states. After a load no increment is current until the next time step or the next event, as writing an event to the log describes.
Concept map
Section titled “Concept map”- Game log records, the event record, its increment and the catalogue row it points to.
- Writing an event to the log, how the game records each event.
- Event type catalogue, all 240
DIM_EventTyperows with flags, categories and the activities that log them. - Interrupt flags and their consumers, how catalogue flags stop time.
- Interrupt boundaries and automatic continuation, the subpulse and auto-turn timing that reacts to interrupts.
- Increment preparation and subpulse timeline, where each new increment and its subpulses come from.
- Contact event type selection, how contact status picks the contact event type.
- Contact notifications, which sensor tracks reach the contact reports.
- Event types versus UI categories, the intelligence view of the type and category split.
- Categories and the type-to-category mapping, the 19 categories and their double-click targets.
- Hidden event types, per-race hiding and the three displays it affects.
- Event colours, per-race colour entries for event types.
- Event colours, colour dialogues, presets and colour file import and export.
- Events window, the log window, its controls and its two-pass list.
- Log retention and window filtering, how retention and filters limit intelligence messages.
- Tactical map event overlay, the latest increment drawn on the map.
- Opening an event’s context, what a double-click on an event opens.
- Persistence and reload, what a save keeps of the log, hidden types and colours.
- Designer mode and Spacemaster-only events, the Spacemaster-only marker and designer-mode visibility.
- Jump point network and galaxy topology, the jump points whose detection logs or interrupts.
- Waypoints, points of interest and patrol routes, the transit point of interest an NPR creates on hostile transit.
- Space combat resolution, the source of most combat results events.
- Point defence modes, allocation and interception, the point defence events and summaries.
- Ground combat and conquest, ground combat reports and colony control transfer events.
- Boarding and ship capture, boarding and surrender events.
- Commander lifecycle, the Commander category events.
- Production mechanics, production, shortage and scrapping events.
- Shipyard development and ship work, shipyard task and modification events.
- Research and scientific personnel, research and laboratory events.
- Terraforming mechanics, the environment category events.
- Salvage and archaeology, salvage, ruin events.
- Exploration surveys and discovery, survey and discovery events.
- Civilian economy and autonomous logistics, shipping line and civilian mining events.
- System disasters and environmental hazards, the System Destroyed and Planet Destroyed events.
- Displayed state and refresh, when open windows such as the Events window refresh.
- Object identity and reload, how loaded records relink after a save.
Resources
Section titled “Resources”Related community documentation and developer posts. These may describe a different game version.