Organisation model
Section titled “Organisation model”Below the administrative command, the game groups ships in three containers. A sub-fleet is a named group inside a fleet, and sub-fleets can nest. A squadron is a group of docked ships hung from a parent ship, the carrier. This page follows fleet creation, the sub-fleet tree, carrier squadrons, the totals each group shows, the rules that pick a group’s senior officer, and every path that detaches ships, a squadron or a sub-fleet into a new fleet.
Naval administration covers administrative commands and the command each fleet belongs to. Carriers, parasites and hangar transfers covers hangar capacity, landing eligibility and carrier replenishment. Jump transit and scatter of squadrons and sub-fleets are in squadron transit and transit by sub-fleet. Formation movement of anchored fleets is in anchored fleet formation movement. Carrier launch data and the squadron operating range are in combat targeting pass setup, and the NPR fighter return logic is in fighter return to carriers. Order and cargo consequences of membership changes are in fleet membership changes, and the identity of split and merged fleets is in transfers, refits, splits and merges. Fleet naming themes belong to naming themes, automatic naming and hull numbers. This page describes only the names that organisation actions produce.
Each container is recorded in a different place. A fleet holds an explicit list of its ships. A sub-fleet holds no list. Its membership is each ship’s sub-fleet assignment, saved as FCT_Ship.SubFleetID, and every sub-fleet total scans every ship in the game for ships assigned to it. A squadron holds no list either. Its membership is each ship’s squadron assignment, saved as ParentSquadronID, and the squadron itself sits in the squadron list of its parent ship.
| Container | Where the game keeps it | Membership test | Parent link |
|---|---|---|---|
| Fleet | The game’s fleet list, keyed by FleetID |
The fleet’s ship list and each ship’s fleet (FCT_Ship.FleetID) |
Administrative command (ParentCommandID) |
| Sub-fleet | The game’s sub-fleet list, keyed by SubFleetID |
Ships whose sub-fleet assignment is this sub-fleet | Parent fleet (ParentFleetID), optional parent sub-fleet (ParentSubFleetID) |
| Squadron | The squadron list of its parent ship, keyed by SquadronID |
Ships whose squadron assignment is this squadron | Parent ship (ParentShipID) |
A sub-fleet carries its race, its parent fleet, an optional parent sub-fleet, its ID and the saved parent sub-fleet ID, a name, a tree expansion flag, and the same formation settings that a fleet carries. These are the anchor fleet, the specific threat, the anchor bearing offset, the anchor distance, guard nearest hostile contact, guard nearest known warship and use anchor destination, saved as AnchorFleetID, SpecificThreatID, AnchorFleetBearingOffset, AnchorFleetDistance, GuardNearestHostileContact, GuardNearestKnownWarship and UseAnchorDestination. Formation movement picks only fleets that have an anchor fleet, so a sub-fleet does not move in formation while it is inside its parent fleet. The formation settings take effect only when the sub-fleet becomes a fleet, because detachment copies them onto the new fleet.
A squadron carries its parent ship, its ID, a name and a tree expansion flag. Its name starts as “New Squadron” until the creating action sets it.
Each ship records three more organisation links. Its mothership is the carrier it is docked in (MothershipID). Its assigned mothership is the carrier it returns to (AssignedMSID). AssignedSquadronID remembers a squadron after the ship’s squadron membership has been cleared, so that landing on the assigned mothership can restore the membership.
The Naval Organization window tree has no node type for a squadron. Its node types are none, administrative command, fleet, sub-fleet, ship, shipping line, and a seventh unnamed type (value 6) that no part of the Naval Organization window refers to.
Fleet creation
Section titled “Fleet creation”The game creates every fleet through one shared creation process. A quick way to create a fleet works out the location first and then runs that process. It starts from the capital system at coordinates (0, 0). It replaces that with the position of the parent command’s population, or with the fleet position of the parent command’s ship. It then replaces it again with the system and coordinates of the orbit body when one is given. The quick way reads the parent command’s population without checking that a command was given. With no parent command it fails, shows the error Function #2467 and creates no fleet.
The creation process works in this order.
- It takes a new ID from the fleet ID counter and sets the race, the system, the coordinates, the last coordinates, the increment start coordinates and the orbit body.
- For an NPR race, a request for no operational group (value 0) becomes Reinforcement Group (
OperationalGroupID11 inDIM_OperationalGroup). The fleet takes the operational group, clears its standing orders, adds the group’sPrimaryStandingOrderat priority 1 and itsSecondaryStandingOrderat priority 2, and starts its own NPR fleet AI. - A non-empty name becomes the fleet name. An empty name would give “New Fleet #” plus the ID, but that name is never applied, so the fleet has no name at all.
- A fleet with no parent command goes under the race’s root administrative command.
- The fleet joins the game’s fleet list and gets a “Created on” history entry with the current game date.
Adding a standing order ignores a missing order and the None order (OrderID 0 in DIM_StandingOrders), so an operational group whose secondary order is None leaves priority 2 empty. Reinforcement Group, for example, stores primary order 48 (MV: Operational Group) and secondary order 0, so its new fleets get one standing order.
The Naval Organization window’s Create Fleet button requires a selected administrative command node. It opens the name dialogue with “New Fleet” as the default and uses the quick way to create a fleet, with the body of the command’s population or the orbit body of the command ship’s fleet. A command with neither a population nor a ship creates nothing and shows no message.
Most fleets come from other paths. Ship creation creates a fleet named after the hull abbreviation and the ship name when it receives an administrative command or when its assigned fleet is missing. In the administrative command case it then renames the fleet to the ship’s display name. The NPR starting navy and the operational group fleets are described in operational groups and fleets. Every detachment path on this page creates its fleet through the creation process, at the source fleet’s system, coordinates and orbit body, under the source fleet’s parent command.
Sub-fleet creation, renaming and deletion
Section titled “Sub-fleet creation, renaming and deletion”Two actions create sub-fleets.
| Action | ID | Name | Prompt | Parent |
|---|---|---|---|---|
| Create Sub-Fleet with a prompt | From the sub-fleet ID counter, taken before the dialogue | Dialogue result, default “New Sub-Fleet” | Yes, cancel creates nothing | The given fleet and sub-fleet |
| Silent top-level creation | From the sub-fleet ID counter | A name supplied by the action that asks for it | No | This fleet, no parent sub-fleet |
The prompted version takes the ID before it shows the dialogue, so a cancelled dialogue uses up an ID that no sub-fleet holds. It adds the sub-fleet to the game’s sub-fleet list only after the dialogue returns. Neither version checks for a duplicate name.
The Create Sub-Fleet button accepts a fleet node or a sub-fleet node. On a fleet node with ships selected in the ship list, it creates a top-level sub-fleet, marks it expanded, moves each selected ship into it by changing only the ship’s sub-fleet assignment, and selects the new node. On a fleet node without a selection it creates an empty top-level sub-fleet. On a sub-fleet node it creates a child of that sub-fleet in the same fleet, and the selected ships are not moved. Moving ships into a new sub-fleet does not touch their mothership, their squadron or their fleet.
Silent top-level creation has four uses, and each one names the sub-fleet after a fleet or squadron that is being merged.
| Use | Name | Settings copied |
|---|---|---|
| Join as Sub-Fleet move action (182) | Joining fleet’s name | All seven formation settings from the joining fleet |
| Land on Assigned Mothership as Sub-Fleet move action (222) | Landing fleet’s name | All seven formation settings from the landing fleet |
| Shift-drop of a fleet on a fleet | Dragged fleet’s name | None |
| Launch All in the Naval Organization window | One per distinct source squadron, named after it | None |
Renaming is a Naval Organization window action. The rename button prompts with the current name and stores the result only when it is not an empty string. This works the same for fleets, ships, squadrons, sub-fleets and administrative commands. It updates the node text in place without rebuilding the tree.
Deleting a sub-fleet moves every ship assigned to it to the deleted sub-fleet’s parent sub-fleet, which is no sub-fleet at all for a top-level sub-fleet. It then removes the sub-fleet from the game’s sub-fleet list. It does not reparent child sub-fleets. A child keeps its parent link to the removed sub-fleet. The Delete button confirms with a Yes/No box and deletes through the sub-fleet’s parent fleet.
Removing a whole fleet deletes every sub-fleet whose parent fleet is the removed fleet, unless a guard stops the removal first. The guards stop it when the fleet has a shipyard task, is the destination for space station construction, or is the destination for fighter factory construction, as fleet destination removal describes. After the sub-fleets go, the removal clears the anchor of fleets and of sub-fleets that were anchored to the removed fleet, and then removes the fleet’s ships. Two later passes repeat the same anchor tests and never find a match, because the first passes have already cleared every such anchor. Removing a single ship works differently. When the last ship leaves a fleet that way, the game drops the emptied fleet from the fleet list directly, without the full fleet removal, so that fleet’s sub-fleets remain in the game’s sub-fleet list.
Moving ships and sub-fleets
Section titled “Moving ships and sub-fleets”Drag and drop in the Naval Organization window tree does most manual reorganisation. A drop on the dragged node itself or on empty space does nothing. Holding Shift during the drop asks for a new sub-fleet. Every location test in the table requires an absolute difference below 1.0 on each coordinate axis. “Within one unit” and “same coordinates” are that test alone, and the drop compares the system separately. “Same location” is one test that compares the coordinates and the system together.
| Dragged | Dropped on | Checks | Effect |
|---|---|---|---|
| Sub-fleet | Sub-fleet of the same fleet | None | The target becomes its parent sub-fleet |
| Sub-fleet | Sub-fleet of another fleet | Within one unit, same system, same race | Transfers the ships assigned directly to the dragged sub-fleet, then takes the target as parent sub-fleet and the target’s fleet as parent fleet |
| Sub-fleet | Its own fleet | None | Becomes top level |
| Sub-fleet | Another fleet | Within one unit, same system, same race | Transfers its own ships, becomes top level in the target |
| Ship | Sub-fleet of its own fleet | None | Joins the sub-fleet, leaves its squadron and its mothership, and its parasites join the same sub-fleet |
| Ship | Sub-fleet of another fleet | Within one unit, same system, same race | Joins the sub-fleet, leaves its mothership, and transfers with its squadron cleared |
| Ship | Squadron | Within one unit, same system, hangar space unless already docked in that carrier | Docks if needed, joins the squadron and records it in AssignedSquadronID |
| Ship | Its own fleet | None | Leaves its sub-fleet and its mothership, and its parasites leave their sub-fleet |
| Ship | Another fleet | Same coordinates, same system, same race | Leaves its sub-fleet and its mothership, and transfers with its squadron cleared |
| Squadron | Ship | Within one unit, same system, hangar space for the whole squadron | Docks every squadron ship in the target and makes the target the squadron’s parent ship |
| Fleet | Administrative command | Same race | Moves the fleet under that command |
| Fleet | Fleet | Same location, same race | Selected ships move, or the whole fleet is absorbed |
| Fleet | Squadron | Within one unit, same system, hangar space for the fleet’s independent ships | Docks the independent ships and adds them to the squadron, but leaves AssignedSquadronID unchanged |
| Fleet | Sub-fleet | Not its own sub-fleet, same location, same race | Absorbed into that sub-fleet |
Hangar space means that the carrier’s available hangar capacity is at least the ship’s class size, or at least the summed class sizes of the squadron or of the fleet’s independent ships. A drop that docks a ship also makes the carrier its assigned mothership.
A sub-fleet or ship dropped on a command or ship node, and a fleet dropped on a node type outside the table, show a message and change nothing. A failed check also shows a message and changes nothing. A sub-fleet that fails its location check, for example, shows “Sub-fleets may only be moved within their current fleet (including sub-fleets) or to a fleet or sub-fleet of the same race in the same location as their parent fleet”. A fleet dropped on its own sub-fleet shows “Fleets cannot be moved under their own sub-fleet”. A squadron dropped on anything but a ship changes nothing and shows no message. After any successful drop, the window rebuilds the tree.
Dragging a sub-fleet to another fleet moves only the ships assigned directly to it. Ships in its child sub-fleets stay in the old fleet. The children keep the old fleet as their parent fleet while their parent sub-fleet is the moved sub-fleet. Dragging a sub-fleet onto one of its own descendants in the same fleet creates a parent cycle, because the same-fleet drop sets the parent sub-fleet without checking ancestry. The consequences for the tree view are in consistency gaps and reload repairs.
A separate subtree move carries a whole sub-fleet hierarchy into another fleet. It sets the sub-fleet’s parent fleet to the destination, transfers the sub-fleet’s own ships, and repeats for each child sub-fleet. It keeps every parent sub-fleet link below the starting sub-fleet. It sets the parent fleet before it transfers the ships, so the speed update treats the destination fleet as the fleet the ships left. Each ship still leaves the fleet it is really in, so the ships move. The transfer then recomputes the destination fleet’s speed twice and never recomputes the speed of the fleet the ships actually left. Only sub-fleet detachment uses this subtree move, for the children of the detached sub-fleet.
A group transfer between fleets moves each ship without a speed update and then sets both fleets’ set speed to their maximum speed. A single ship transfer clears the ship’s squadron only when the action clears squadron membership. It carries docked parasites into the target fleet and into the carrier’s sub-fleet, and it moves the ship’s shipyard task to the new fleet. A ship it tows follows it into the new fleet, and a tow link from a ship that stays in another fleet is released. It removes the source fleet through the full fleet removal when the source is empty and the transfer asks for that. The parasite step adds the carrier, not the parasite, to the target fleet’s ship list, which shared ship transfer order records.
Join and absorb actions
Section titled “Join and absorb actions”The join move actions handle arrival the same way. A fleet ordered to join itself logs an Illegal Order event (event type 140) saying that it “has an order to join with itself. While it would be entertaining to watch the attempt, this is not actually possible”, and it transfers nothing. Otherwise the join records the joined fleet, applies the action’s own organisation effect, transfers every ship with removal of the emptied source and without squadron clearing, and marks the source fleet for deletion. The next fleet sweep rebuilds the fleet list without marked fleets.
| Action | Organisation effect before the transfer |
|---|---|
| Join Fleet (3) and the refuel, resupply, ordnance and overhaul variants that target the fleet | None. Ships keep their sub-fleet assignments |
| Join as Sub-Fleet (182) | A new top-level sub-fleet in the target, named after the joining fleet with its formation settings. Ships without a sub-fleet enter it. Every sub-fleet of the joining fleet moves to the target, and its top-level sub-fleets become children of the new sub-fleet |
| Join Sub-Fleet (185) | Every ship enters the sub-fleet chosen in the order (DestinationItemID), when that sub-fleet still exists and belongs to the target |
Join Sub-Fleet has two fallbacks. When the sub-fleet no longer exists, it logs an Illegal Order event saying that the fleet “has an order to join a sub-fleet that no longer exists. Therefore, the fleet will join with the original parent fleet of the sub-fleet”, and the ships join with their existing sub-fleet assignments. When the sub-fleet exists but its parent fleet is not the target, the assignment is skipped silently and the transfer still runs.
The sub-fleet variants that only set a mode do not assign the joining ships to any sub-fleet. These are Join & Refuel Target Sub-Fleet (184), Join & Resupply Target Sub-Fleet (205), Join and Add Ordnance to Sub-Fleet (196), Join and Replace Ordnance in Sub-Fleet (198) and Join and Remove Ordnance from Sub-Fleet (200). They set the joining ships’ tanker, supply ship or collier status to the sub-fleet mode. Which ships those modes then serve is described in automatic fleet tanker transfers and automatic fleet MSP transfers.
The order editor offers Join Sub-Fleet, Join & Refuel Target Sub-Fleet and the three ordnance sub-fleet actions only when the destination fleet has at least one sub-fleet, meaning that some sub-fleet names that fleet as its parent fleet. Join as Sub-Fleet (182) has no such requirement. This test belongs to move requirements 59, 60 and 64 in DIM_MoveAction.MoveRequirementID. Join Sub-Fleet uses 59, Join & Refuel Target Sub-Fleet uses 60, and the three ordnance sub-fleet actions use 64. Requirement 60 also needs a free tanker with an undamaged refuelling system in the joining fleet, and requirement 64 needs a collier with an undamaged ordnance transfer system. The item list for a sub-fleet destination lists every sub-fleet of the destination fleet at any depth, in the order the game stores them. A destination that is not a fleet shows “Destination is not a fleet”.
Absorbing a fleet sets every source ship’s sub-fleet assignment to a given sub-fleet, or to none. It transfers the ships with removal of the emptied source, and then removes the source from the fleet list again. The Absorb move action (121) uses no sub-fleet. The fleet drag uses no sub-fleet, the dropped-on sub-fleet, or a new sub-fleet on a Shift-drop. A drag of a fleet onto another fleet while more than one ship row is selected moves only the selected ships, each into the drop sub-fleet or to the top level.
Sub-fleet aggregation and the fleet overview
Section titled “Sub-fleet aggregation and the fleet overview”Each sub-fleet total scans every ship in the game for ships assigned to this sub-fleet. The scan reaches only direct members. No total adds the ships of child sub-fleets.
| Total | Value | Rounding or filter |
|---|---|---|
| Ship list | Member list | Direct members, in the order the game stores ships |
| Colonist capacity | Transport - Colonist (component type 17) plus Transport - Passenger (type 50) capacity | No commander bonuses |
| Available cargo capacity | Sum of each member’s available cargo capacity | Whole number |
| Military hull tonnage | Class sizes of non-commercial members summed in HS, truncated to a whole number, times 50 tons per HS | The sum in HS is truncated before the multiplication by 50 |
| Maintenance support capacity | Maintenance Module (type 48) capacity | No commander bonuses |
| Fuel capacity | Fuel Storage (type 3) capacity | Truncated to a whole number |
| Maintenance supply capacity | Sum of each member’s effective maintenance supply capacity | Truncated to a whole number, returned as a decimal |
| Current maintenance supplies | Sum of members’ CurrentMaintSupplies |
None |
| Current fuel | Sum of members’ Fuel |
None |
| Troop capacity | Transport - Troops (type 27) capacity | Truncated to a whole number |
| Cargo capacity | Transport - Cargo (type 4) capacity | No commander bonuses |
| Maximum active sensor range, maximum beam range | Largest member value | 0 with no members |
| Maximum missile range | Largest maximum missile range among members, for the target resolution the display asks for | 0 with no members |
| Protection value | Sum of each member’s protection value | None |
| Maximum speed | Lowest effective maximum speed among members with no mothership and no tractor parent | 1 with no such member, truncated to a whole number |
| Sub-fleet commander | Most senior ship commander | See commander helpers |
Seven sub-fleet totals have no error report of their own. They are the ship list, military hull tonnage, maintenance support capacity, fuel capacity, current fuel, troop capacity and cargo capacity. If one of them fails, the error is reported by whatever screen or process asked for the total. The other totals show their own function error and return 0, 1 or no value.
Sub-fleet membership is a scan over all ships, not over the parent fleet. A ship whose sub-fleet assignment points at a sub-fleet of another fleet counts in that sub-fleet’s totals.
The Naval Organization window summary is filled by one overview step for a fleet, a sub-fleet or a squadron. The sub-fleet or squadron value replaces the fleet value for the commander, maximum speed, protection, missile, beam and sensor range, fuel, MSP, troop, cargo, colonist, maintenance support, military hull tonnage, crew and cost lines. When both a sub-fleet and a squadron are given, the squadron value wins because it is assigned last.
Four lines are computed differently.
| Line | Source of the value |
|---|---|
| Annual MSP | Every independent non-commercial ship in the fleet |
| Available troop capacity in brackets | The whole fleet |
| Survey, harvester, terraforming and mining capacity | The fleet’s component capacity limited to the sub-fleet for a sub-fleet, the squadron’s own component capacity for a squadron |
| Military hull tonnage | The sub-fleet or squadron value truncated to a whole number again |
For geological and gravitational survey sensors, the fleet version of the component capacity applies a crew-shortfall factor to the running total, which ship and fleet capacity describes. Only ships in the fleet, or in the selected sub-fleet, that have at least one undamaged component of that type are counted. Ship by ship, it adds the ship’s capacity with commander bonuses. When that ship’s current crew is below its class crew, it then multiplies the whole running total, including the ships added before it, by current crew divided by class crew. The squadron version applies no crew factor.
The overview also changes state. It takes the maximum speed of the selected sub-fleet or squadron, and when the fleet’s set speed is above it, it lowers the fleet’s set speed to that value. A sub-fleet whose members are all in this fleet and include a free ship has a maximum at or above the fleet’s maximum, so its node leaves the set speed alone. An empty sub-fleet, or one whose members are all docked or towed, has a maximum speed of 1. A squadron whose ships are all docked has a maximum speed of 1 too. Selecting either node sets the parent fleet’s speed to 1 km/s. The next movement sub-pulse restores the set speed to the fleet’s maximum speed when the fleet has move orders, no ship under maintenance and UseMaximumSpeed set. UseMaximumSpeed defaults to true for a new fleet. The window runs the overview whenever it refreshes the selection, and selecting a sub-fleet node or a squadron node both cause that refresh.
The ship list and the ship class summary filter the same way. Both start from ships whose fleet is this fleet, then keep only direct members of the sub-fleet or the squadron. Selecting a sub-fleet node also fills the formation orders list from the sub-fleet’s own anchor settings.
Carrier squadrons
Section titled “Carrier squadrons”Two actions create squadrons. Both take an ID from the squadron ID counter and add the squadron to the parent ship’s squadron list.
| Action | Name | Prompt |
|---|---|---|
| Silent squadron creation | A name supplied by the action that asks for it | No |
| Create Squadron with a prompt | Dialogue result, default parent ship name plus “ Strikegroup” | Yes, cancel creates nothing after the ID is taken |
The prompted version takes the ID before the dialogue, so a cancelled prompt uses one up. It does not check that the parent ship has a hangar. The Create Squadron button requires a selected ship node. It then expands both the new squadron and the parent ship and selects the parent ship node.
Silent squadron creation has five uses.
| Use | Name | Members |
|---|---|---|
| NPR ship creation with small craft templates | Ship name plus “ Strikegroup” | Each created fighter joins it and records it in AssignedSquadronID |
| Player ship creation from a population with a parasite source | Ship name plus “ Strikegroup” | Each fitting parasite docks, joins the squadron and takes the carrier as its assigned mothership |
| Instant build in class design with assigned parasites | Ship name plus “ Strikegroup” | Instant fighters built into the carrier |
| Land on Specified Mothership as Squadron move action (228) | Landing fleet’s name | Every landing ship that fits |
| NPR fighter reassignment to carriers | Carrier name plus “ strikegroup” in lower case, when the carrier has no squadron | Never runs. The fighter selection before it removes each chosen fighter from the list it is still working through, which fails with the error Function #3858 before a squadron is created |
Landing ties squadrons to docking. The specified-mothership landings, move actions 157, 158, 228 and 229, set each fitting ship’s squadron to the destination squadron, or to none when the landing has no squadron. They set AssignedSquadronID to match, or to 0. Landing on assigned motherships restores the squadron from AssignedSquadronID when the carrier still holds a squadron with that ID. Hangar checks and failure events belong to carriers, parasites and hangar transfers.
Deleting a squadron removes every member from it and sets their AssignedSquadronID to 0, then removes the squadron from the carrier’s squadron list. The members stay docked, because their mothership does not change. The Delete button deletes it through the squadron’s parent ship after a Yes/No confirmation.
Dragging a squadron onto another ship docks every member in the target ship, transfers members that are in another fleet without clearing their squadron, gives them the target ship’s sub-fleet, and makes the target the squadron’s parent ship. It does not move the squadron from the old carrier’s squadron list to the new carrier’s list.
Launch All turns squadrons into sub-fleets. With nothing selected it shows “Please select a fleet, sub-fleet or ship”. For a fleet or sub-fleet node it collects the parasites whose carrier is not itself docked, and for a ship node it collects that ship’s parasites. It creates a fleet named after the selection plus “ Strikegroup”, using the fleet name, the sub-fleet name or the ship name. It creates one top-level sub-fleet per distinct squadron among those parasites, named after the squadron. Each parasite enters the first sub-fleet whose name equals its squadron’s name, or the top level when it has no squadron. It then clears the parasite’s mothership and squadron and transfers it with squadron clearing. AssignedSquadronID and the assigned mothership survive, so a later Land on Assigned Mothership / Squadron order (move action 38) restores the squadron. Two squadrons with the same name put all their ships into the first matching sub-fleet and leave the second sub-fleet empty.
Squadron aggregation
Section titled “Squadron aggregation”The squadron totals mirror the sub-fleet totals and select the ships whose squadron is this squadron. Each of them has its own error report.
| Total | Difference from the sub-fleet total |
|---|---|
| Ship list | Returns no list on an error, where the sub-fleet version has no error report of its own |
| Component capacity by type | Sub-fleets have no equivalent. Sums each member’s component capacity with commander bonuses |
| Available cargo capacity | Built on the squadron ship list |
| Maximum speed | Same rule, lowest effective speed among members with no mothership and no tractor parent, else 1 |
| Capacity, supply, fuel, troop, cargo, colonist, protection and range totals | Same rules and truncation |
| Squadron commander | Same rule as the sub-fleet commander |
The squadron component capacity is the only squadron total that applies commander bonuses. The Naval Organization window uses it for the geological and gravitational survey, Sorium harvester, terraforming and orbital mining lines when a squadron is selected.
A squadron’s members are usually docked, so its maximum speed is usually 1. The members count for protection, ranges and capacities whether or not they are docked.
Commander helpers
Section titled “Commander helpers”Four rules choose a senior ship commander. Each one collects the ship commander of every ship in a set, drops ships without one, and takes the first commander ordered by rank Priority ascending, then Seniority ascending. Priority 1 is the most senior rank and seniority 1 is the most senior officer in a rank, as ranks, themes and seniority describes.
| Rule | Ship set | Empty result |
|---|---|---|
| Fleet commander | The fleet’s ship list, including docked parasites | No commander |
| Sub-fleet commander | Ships assigned to this sub-fleet | No commander |
| Squadron commander | Ships in this squadron | No commander |
| Senior captain with a component type | Ships of this fleet with at least one undamaged component of the type | No commander |
The sub-fleet and squadron rules check that the group has ships before they set aside ships without a commander. A group with ships but no commanders passes that test and still produces no commander, so the order of the tests does not change the result.
The game stores no fleet commander. Every display or rule that needs one recomputes it.
| Consumer | Use |
|---|---|
| Fleet name with commander | Appends “ under the command of “ and the commander’s name |
| Commander assignment text | “Fleet Commander” when the commander is the fleet commander and the fleet has more than one ship |
| Highest subordinate rank of an administrative command | Highest rank among the fleet commanders of directly attached fleets |
| Naval Organization window overview | Commander label for the fleet, sub-fleet or squadron |
Fleet measurements record nothing for NPR races. For player races the game credits each measurement to the senior captain with the relevant component. Jump points discovered credit a gravitational survey ship. Tons salvaged credit a salvage module ship. Lagrange point and jump point stabilisations credit a jump point stabilisation ship. Ruins, mineral bodies credit a geological survey ship. Every other measurement credits the most senior ship commander in the fleet, chosen with the same ordering.
Independent and untractored ship selection
Section titled “Independent and untractored ship selection”Three fleet selections separate free ships from carried and towed ships.
| Selection | Ships kept | Drawn from |
|---|---|---|
| Independent ships | No mothership | The fleet’s ship list |
| Independent ship count | Count of ships with no mothership | The fleet’s ship list |
| Untractored independent ships | No mothership and no tractor parent (TractorParentShipID) |
The fleet’s ship list |
A fleet’s maximum speed is the lowest effective maximum speed among its untractored independent ships, truncated to a whole number, or 1 when there are none. The check for recently damaged slow ships also reads the untractored independent list. It runs at the end of combat attack processing and its aftermath. For each ship with damaged components and less than 90,000 seconds since its last damage (LastShipDamageTime), whose fleet has at least two untractored independent ships, damaged or not, it detaches the ship into a Reinforcement Group fleet. It does so when the ship’s effective speed differs from its class speed and is below 0.9 times the effective speed of the fastest untractored independent ship in the fleet.
The independent ship count decides whether an event names the fleet. Maintenance failure, damage control, crew quarters strain and morale events append the fleet name in brackets only when the fleet has more than one independent ship.
The assigned-mothership lookup collects the distinct assigned motherships of this fleet’s ships whose carrier fleet is in the same system. It returns that carrier’s fleet only when exactly one carrier qualifies. Two carriers in one fleet still count as two. The standing order MV: Assigned Mothership (OrderID 31 in DIM_StandingOrders) uses it to queue Land on Assigned Mothership / Squadron (move action 38).
Detachment
Section titled “Detachment”Every detachment path creates a fleet at the source fleet’s location under the source fleet’s parent command, removes the detached ships from their sub-fleet, and transfers them. The paths differ in name, operational group, copied orders and what happens to squadron and carrier links.
| Path | New fleet name | NPR operational group | Orders copied | Squadron | Mothership |
|---|---|---|---|---|---|
| Single-ship detach | Ship display name | Source fighter group kept, otherwise the requested group or Reinforcement Group | Flags | Cleared, AssignedSquadronID kept |
Kept |
| Ship-list detach | Source name plus “ - Detached” | Requested, or Reinforcement Group | Flags | Cleared | Kept |
| Sub-fleet detach | Sub-fleet name | Source group | Flags | Cleared, saved to AssignedSquadronID |
Kept |
| Squadron detach | Squadron name | Requested, else source group | Flags and IncludeSquadrons |
Cleared, saved to AssignedSquadronID |
Cleared |
| Category detach | Source name plus a category suffix | Tanker or Collier for those categories | Never | Kept | Kept |
| Naval Organization window multi-ship detach | Display name for one ship, otherwise the next detached name | Source group | Flags, plus IncludeSquadrons from a squadron node |
Cleared, saved to AssignedSquadronID |
Cleared when the carrier stayed behind |
“Flags” means that the source fleet has DetachedStanding or DetachedConditional set. “Kept” in the mothership column means that the path leaves the mothership as it was. The Naval Organization window clears it afterwards for ships whose carrier is not in the new fleet, but the automatic paths do not.
The operational groups named on this page are rows of DIM_OperationalGroup. Reinforcement Group is ID 11, Tanker 14, Collier 16, Beam-Only DD Squadron 26, Ramming Force 27, Missile Fighter Squadron 84 and Beam Fighter Squadron 85. A request for no group is value 0.
Copied orders
Section titled “Copied orders”Copying detached orders clears both of the new fleet’s order lists first, whatever the flags. It then copies the standing orders by priority, sharing the same catalogue orders, and creates a new conditional order for each conditional entry with the same order, condition and create-waypoint flag.
Because of the unconditional clear, a source with only DetachedConditional set produces a fleet with no standing orders. For an NPR fleet this removes the primary and secondary operational group orders that fleet creation added.
The three flags belong to each fleet. The Naval Organization window shows them as the Copy Standing on Detach, Copy Conditional on Detach and Include Squadrons check boxes, refreshed from the selected fleet. Ticking a box writes the flag only when a fleet node is selected. A sub-fleet or squadron node shows “Please select a fleet” instead. The new fleet does not inherit the flags.
IncludeSquadrons gates only the squadron paths. Squadron detach copies orders only when it is set, and the window multi-ship detach skips the copy when the selected node is a squadron and the flag is clear. The ship and sub-fleet paths ignore it.
Detaching one ship or a list of ships
Section titled “Detaching one ship or a list of ships”Single-ship detach chooses the operational group only for NPR ships whose fleet has a group. A source group of Beam Fighter Squadron (85) or Missile Fighter Squadron (84) replaces the requested group. Any other source group turns a request for no group into Reinforcement Group (11). The new fleet takes the ship display name. That name is the hull abbreviation, a space and the ship name. When the race’s hull number option is on, the ship’s class uses hull numbers and the ship has no shipping line, it is the hull abbreviation, a hyphen, the two-digit hull number, a space and the ship name. The detach clears the ship’s sub-fleet, copies orders when a flag is set, and transfers the ship with a speed update. The transfer removes the source fleet if it becomes empty when the action asks for that, keeps shipyard tasks and clears squadron membership.
Ship-list detach has one user, the NPR damaged-fleet response. It splits the fast beam combat ships into a Beam-Only DD Squadron (26) fleet. These are ships with a protection value above 0, a role capability above incapable and beam fire control in their automated design, whose effective speed is above the speed of the nearest hostile fleet. For an NPR race a request for no group becomes Reinforcement Group. It transfers each ship separately with squadron clearing.
The Naval Organization window’s Detach button acts on three kinds of selection. A ship node detaches that ship. It first clears the ship’s mothership, then runs single-ship detach without empty-source removal. The button then tries to save the ship’s squadron into AssignedSquadronID, which never applies because the transfer has already cleared the squadron, so AssignedSquadronID keeps whatever value it had. A fleet, sub-fleet or squadron node with ship rows selected builds its own fleet instead of using ship-list detach. It takes the source fleet from the node, creates the fleet with the source group or no group, copies orders under the gate above, and transfers each selected ship after saving its squadron to AssignedSquadronID. A sub-fleet or squadron node without a selection detaches the whole group. A fleet node without a selection shows “Please select one or more ships from the ship list to detach”.
Detaching a sub-fleet hierarchy
Section titled “Detaching a sub-fleet hierarchy”Sub-fleet detach runs these steps.
- It records the sub-fleet’s direct members and takes the source fleet’s operational group, or no group.
- It creates the fleet named after the sub-fleet and copies the seven formation settings from the sub-fleet.
- It copies orders when a flag is set.
- For each member it clears the sub-fleet assignment, and moves a squadron membership into
AssignedSquadronIDbefore clearing it. - It transfers the members as a group, which recomputes the source fleet’s speed while the child sub-fleets’ ships are still in it.
- Each direct child becomes a top-level sub-fleet of the new fleet and moves with its whole subtree through the subtree move. Grandchildren keep their parent links.
- It deletes the detached sub-fleet, which has no members left.
The child moves do not recompute the source fleet’s speed, as moving ships and sub-fleets describes. Members of child sub-fleets keep their squadron and their mothership, because only direct members pass through step 4. A sub-fleet with no ships at any depth still produces a fleet, whose speed becomes 1 because a fleet with no free ship has a maximum speed of 1. When child sub-fleets hold ships, the subtree move recomputes the new fleet’s speed from them.
The window’s sub-fleet detach and the Detach Escorts button use it. Both buttons then clear the mothership of any parasite whose carrier is not in the new fleet. Detach Escorts runs it for every sub-fleet of the selected fleet that has an anchor fleet, at any depth, from a list built before it starts. A nested anchored sub-fleet that has already moved with its parent is detached again from its new fleet, so every anchored sub-fleet ends as its own fleet. The Squadron Transit by Sub-Fleet move action (183) uses a separate version. It treats every sub-fleet of the fleet, at any depth, as its own transit group and does not move children with their parent.
Recall Escorts does the reverse. For each fleet in the same system whose anchor fleet is the selected fleet, it clears the move orders and queues Join as Sub-Fleet (182) to the selected fleet. The join then rebuilds a top-level sub-fleet with the escort’s name and formation settings.
Detaching a squadron
Section titled “Detaching a squadron”Squadron detach replaces a request for no group with the source group when there is one, names the fleet after the squadron, and copies orders only with a flag and IncludeSquadrons. It then saves each member’s squadron to AssignedSquadronID and clears the squadron, the sub-fleet and the mothership before the transfer. The squadron itself stays in its carrier’s squadron list. The NPR launch step detaches each carrier squadron into a Missile Fighter Squadron (84) fleet when the carrier class has magazine capacity (MagazineCapacity above 0), otherwise into a Beam Fighter Squadron (85) fleet.
Category detachment
Section titled “Category detachment”Category detach selects fleet members by a class flag. A match value of 0 adds “Non-” to the suffix.
| Category | Selection for match 1 | Suffix | NPR group | Move action |
|---|---|---|---|---|
| Fuel tanker | Class FuelTanker = 1 |
“Tanker Detachment” | Tanker (14) | Detach Tankers (100) |
| Collier | Class Collier = 1 |
“Collier Detachment” | Collier (16) | Detach Colliers (101) |
| Supply ship | Class SupplyShip = 1 |
“Supply Ship Detachment” | None, so Reinforcement Group (11) | Detach Supply Ships (188) |
| Survey ship | Geological or gravitational survey capacity above 0 | “Survey Ship Detachment” | None, so Reinforcement Group (11) | Detach Non-Survey Ships (95) with match 0 |
The full name is the source name, “ - “, the optional “Non-” and the suffix. With match 0 the survey category selects ships with no geological and no gravitational survey capacity, counted without commander bonuses. The detach refuses with an Orders Completed event (event type 45) when no ship qualifies, saying that the fleet “cannot carry out detachment order as no ships qualify for detachment”. It also refuses when every ship qualifies, saying “cannot carry out detachment order as no ships would remain in fleet”. It does not copy orders, and it clears only the sub-fleet assignment before a group transfer without squadron clearing. The selection reads the fleet’s ship list, which includes docked parasites, so a parasite that matches leaves its carrier’s fleet with its mothership still set. Queue consequences are in fleet membership changes.
Automatic single-ship detachment
Section titled “Automatic single-ship detachment”| Trigger | Group | Empty source removed | Condition |
|---|---|---|---|
| Recently damaged slow ships | Reinforcement Group (11) | Yes | Damaged within 90,000 seconds and below 0.9 of the fastest untractored independent member |
| Combat damage | Reinforcement Group (11) | Yes | Target slower than its fleet’s set speed, fleet has more than one ship, target not destroyed, no tractor parent |
| Tractor release | None | No | Detaches only when the release destination is not a fleet, or is a fleet that no longer exists. A non-fleet destination copies the tug fleet’s assigned population. An existing fleet destination receives the ship by transfer instead |
| Divide Fleet into Single Ships (8) and Transit and Divide Fleet (94) | None | Yes | Every ship with no mothership, copying AvoidAlienSystems and AvoidDanger |
| NPR ramming force | Ramming Force (27) | Yes | Ship with empty missile ordnance, in a fleet whose ordnance is empty and that has no redeployment order |
| NPR fleet regrouping | Reinforcement Group (11) | No | Fleet with more than one ship, no shipping line, and none of the earlier role components. These are gravitational or geological survey sensors, a terraforming module, a Sorium harvester, a salvage module, jump point stabilisation, an orbital mining module, a diplomacy module, missile or direct fire control, a fuel transfer system and troop transport |
The combat damage detach also marks the ship as detached from its parent fleet due to damage. When the fleet has only one ship or the target was destroyed, the fleet’s set speed drops to the target’s effective speed, truncated to a whole number, instead. The regrouping detaches every ship, including the last, and does not remove the emptied source fleet. It cannot stop early, because it counts the fleet’s ships as they were when it began. The fleet sweep later drops NPR fleets with no ships.
Releasing parasites on scrap
Section titled “Releasing parasites on scrap”Releasing parasites clears the mothership of every ship docked in the carrier. It builds a fleet name ending “ Parasites” and then discards it. It does not create a fleet, does not change sub-fleet or squadron membership and does not transfer the parasites. Only the shipyard scrap task uses it, just before it removes the carrier. Because the parasites are no longer docked, removing the carrier does not destroy them with it, and they stay in the carrier’s former fleet.
Detached fleet naming
Section titled “Detached fleet naming”The window multi-ship detach gets a free name from the detached-name rule. The rule collects every fleet name of the race. When the last two characters of the base name read as a whole number, the prefix is the base without those two characters. Otherwise the prefix is the base plus a space. It then tries suffixes 2 to 99 in order, writing 2 to 9 with a leading zero, and returns the first prefix plus suffix that no fleet of the race uses. When all 98 are taken it returns the prefix plus “- Detached”.
The number test accepts a leading sign and leading white space, so “-7” and “ 7” count as numbers. A base shorter than two characters makes the rule fail with the error Function #2275, and the base comes back unchanged.
The unique-name rule returns the base when no fleet of the race has that name. Otherwise it returns the base plus “ #” and the first number from 2 upward that is free. Only fighter production uses it. When a player population has no fighter destination fleet at its coordinates, or an NPR population has no fleet of the matching fighter group at its body, the new fleet is named “New Fighters - “ plus the population name, passed through the unique-name rule.
The other paths do not check names. Single-ship detach uses the ship display name, squadron and sub-fleet detach reuse the group name, ship-list detach appends “ - Detached”, and category detach appends its suffix, so duplicates are possible.
Fleet hierarchy tree view
Section titled “Fleet hierarchy tree view”The Naval Organization window rebuilds its tree from scratch. The rebuild hides the tree, clears it, prepares the administrative commands, adds the race’s first command without a parent as the root, adds child commands and the root’s fleets, optionally adds civilian shipping lines, shows the tree and restores the remembered selection.
| Tree level | Children it adds | Order |
|---|---|---|
| Administrative command | Fleets of the command that have no shipping line, optionally limited to one system, then each fleet’s top-level ship nodes and top-level sub-fleets | Fleets and sub-fleets by name |
| Sub-fleet | Sub-fleets whose parent sub-fleet is this one, each with its ships and children | By name |
| Ship nodes under a fleet or sub-fleet | Ships of the fleet with the matching sub-fleet assignment, minus every ship of the fleet that is in a squadron | Class size descending, hull abbreviation, hull number, ship name |
| Squadrons under a ship | Squadrons in the ship’s squadron list | By name |
| Ships under a squadron | Every ship in the squadron, in any fleet | As for ship nodes |
| Civilian shipping lines | Shipping lines and their fleets, with top-level ships only | By name |
Ship text is the ship display name, with the hull number when the race’s hull number option is on and the ship’s class uses hull numbers, followed by the carrier’s display name in brackets when the ship is docked, plus “ (SF)” when SyncFire is 1. A ship with damaged components is red, otherwise one with armour damage is orange. Sub-fleet and squadron nodes are cyan, and command nodes are light green. Each node expands when its stored expansion flag is set, and expanding or collapsing a node writes that flag unless the window is suspending its events.
Building ship nodes for a fleet or sub-fleet also records whether the listed ships have a usable jump drive. The command level resets that record for each fleet before its ship and sub-fleet nodes. The fleet text then gets “ [JB]” when a listed ship has a usable standard jump drive, and “ [JC]” when the only usable jump drives are special types. It gets “ [M]” for a fleet with move orders and “ [O]” for a fleet with a ship under maintenance. Each marker sits behind its game option, saved as chkShowJD, chkOrders and chkOverhauls in FCT_Game. Squadron members do not contribute to the jump drive markers. A fourth marker, “ [JM]“, never appears, because a ship with a usable standard jump drive also counts as having a usable jump drive of any kind.
Each squadron node sits only below a ship node built for a fleet or sub-fleet. The ships listed under a squadron get no squadron nodes of their own, so a carrier that is itself in a squadron shows its own squadrons nowhere.
The tree restores the selection from the race’s remembered node type and node ID. Fleet, sub-fleet, ship and command nodes compare both values. Squadron nodes have no restore test. Selecting a squadron node stores the node type sub-fleet with the squadron’s ID, and dropping a fleet onto a squadron stores the node type fleet with the squadron’s ID. The next rebuild therefore selects a sub-fleet or fleet whose ID happens to equal that squadron ID, or nothing.
The game also contains a fleet node layout with one child per ship class, labelled with the count and the ship class name, and ship children by name. Nothing in play uses it.
The ship detail buttons share one selection guard. These include damage control, refuel priority, open fire and the Spacemaster refuel buttons. The guard does nothing while the window is suspending its events. It shows “Please select a race” without a race, and “Please select a ship” without a selected node, whatever the button. It does not test the node type, so each button checks for a ship node itself. The organisation buttons on this page make their own race and node checks instead.
Consistency gaps and reload repairs
Section titled “Consistency gaps and reload repairs”Because the three containers are recorded in three places, several operations leave them disagreeing. The table lists the gaps these operations produce and what corrects them.
| Gap | Cause | Visible effect | Correction |
|---|---|---|---|
| Parasite missing from a fleet’s ship list | A single ship transfer adds the carrier instead of the parasite when the parasite is not transferred in the same batch | The fleet’s ship list and the fleet commander omit it, while scans of every ship by fleet include it | Reload rebuilds each fleet’s ship list from each ship’s FleetID |
| Squadron under the wrong carrier | A squadron drag changes the parent ship without moving the squadron between squadron lists | The tree shows the squadron and its members under the old carrier. Deleting it removes nothing from the old carrier’s list | Save writes the new carrier’s ParentShipID, so reload attaches it there |
| Ships hidden from the tree | Members of a squadron whose carrier was scrapped keep their squadron membership | Ship nodes exclude them and no squadron node lists them | Reload finds no saved squadron and leaves them without a squadron |
| Child sub-fleet in the wrong fleet | A sub-fleet drag between fleets moves only direct members | The child’s node appears under the moved parent but lists ships still in the old fleet | None |
| Sub-fleet cycle | A same-fleet drag onto a descendant | The cycle has no top-level entry, so its sub-fleets and their ships disappear from the tree | None |
| Stale sub-fleet link | Sub-fleet deletion leaves children pointing at the removed parent. A deletion cascade can leave ships pointing at it | Ships with that link, and child sub-fleets of the deleted one together with their ships, appear under no node | Reload finds no sub-fleet for the saved ID, leaves those ships with no sub-fleet and makes the orphaned child sub-fleets top-level |
| Orphan sub-fleets | Removing a ship empties a fleet, which the game drops without deleting its sub-fleets | Orphans stay in the game’s sub-fleet list | Reload skips rows whose parent fleet is missing |
| Fleet speed of 1 | Selecting a docked squadron node or an empty sub-fleet node lowers the fleet’s set speed | The fleet’s set speed drops to 1 km/s | The next movement sub-pulse restores the set speed to the maximum speed for a fleet with move orders, no ship under maintenance and UseMaximumSpeed set, which is the default. A group transfer, or a single transfer with a speed update, also recomputes it. A fleet with UseMaximumSpeed clear, or with no move orders, keeps 1 km/s until the player sets the speed or such a transfer changes its membership |
Deletion cascades depend on the order in which the game stores sub-fleets. When any join other than Join as Sub-Fleet empties the source, and Join Sub-Fleet has not reassigned the ships, the full fleet removal deletes the source’s sub-fleets in that stored order while the joined ships still point at them. A parent deleted before its child sends the parent’s ships to the top level, then sends the child’s ships to the removed parent. A child deleted first sends its ships to the parent, and the parent’s deletion then sends all of them to the top level. A guard in fleet destination removal can stop the removal before that deletion. The deletion mark still drops the source from the fleet list at the next sweep, so its sub-fleets stay in the game’s sub-fleet list as orphans. Absorbing a fleet has the same outcome, because it removes the source from the fleet list itself.
Worked examples
Section titled “Worked examples”The examples use invented inputs.
| Inputs | Outcome |
|---|---|
| Multi-ship detach from “Battle Fleet”, race already has “Battle Fleet 02” | Prefix “Battle Fleet “, suffix 02 taken, result “Battle Fleet 03” |
| Multi-ship detach from “TF-7” | “-7” reads as a number, prefix “TF”, result “TF02” |
| Multi-ship detach from “Escort 12”, race uses every name “Escort 02” to “Escort 99” | Prefix “Escort “, result “Escort - Detached” |
| Multi-ship detach from a fleet named “A” | The naming rule fails with the error Function #2275, result “A” |
| Fighter destination fleet “New Fighters - Luna” exists, as does “New Fighters - Luna #2” | The unique-name rule returns “New Fighters - Luna #3” |
| Sub-fleet of three non-commercial 2.4 HS fighters | Sum 7.2 HS, truncated to 7, hull tonnage 350 t rather than 360 t |
| Carrier fleet at 2,000 km/s with a squadron of four docked fighters, squadron node selected | The squadron’s maximum speed is 1, and the fleet’s set speed becomes 1. Reselecting the fleet shows “Speed 1 km/s” and “Max Speed 2,000 km/s”. The next movement sub-pulse restores 2,000 km/s only when the fleet has move orders and UseMaximumSpeed set |
Player fleet with standing orders at 1 and 2 and one conditional order, only DetachedConditional set, one ship detached |
The new fleet has no standing orders and one new conditional order with the same condition, order and waypoint flag |
| Source group Missile Fighter Squadron, NPR ship detached with Ramming Force requested | Single-ship detach replaces the request, and the new fleet is Missile Fighter Squadron |
Sub-fleet detach and the source speed
Section titled “Sub-fleet detach and the source speed”Fleet F holds main ship M at 3,000 km/s, top-level sub-fleet S with ship A at 2,500 km/s, and child sub-fleet C of S with ship B at 1,000 km/s. F’s set speed is 1,000. Detaching S transfers A first, and the group transfer recomputes F at the minimum of M and B, which is 1,000. The child move then carries C and ship B through the subtree move, which recomputes only the new fleet. F keeps its set speed of 1,000 although only M remains. The new fleet takes the minimum of A and B, which is 1,000.
Escort round trip
Section titled “Escort round trip”Fleet F has top-level sub-fleet E anchored to F at 50,000 km with a bearing offset of 90. Detach Escorts creates fleet E with anchor fleet F, distance 50,000 and offset 90, which then moves in formation. Recall Escorts clears E’s orders and queues Join as Sub-Fleet to F. On arrival the join creates a new top-level sub-fleet named E in F, copies the anchor F, the distance and the offset back, places E’s ships in it and removes fleet E. The settings survive the round trip, but the sub-fleet has a new ID.
Launch and land
Section titled “Launch and land”Carrier K holds squadron Q (ID 40) with four fighters, each with assigned mothership K and AssignedSquadronID 40. Launch All on K creates fleet “K Strikegroup” with sub-fleet Q and moves the fighters into it with their mothership and squadron cleared. A later Land on Assigned Mothership / Squadron order docks each fighter that fits in K. It leaves each one with no sub-fleet, because this landing creates no landing sub-fleet, and restores its squadron from ID 40.
Persistence and reload
Section titled “Persistence and reload”| Data | Table and columns | Load behaviour |
|---|---|---|
| Sub-fleets | FCT_SubFleets: SubFleetID, GameID, RaceID, ParentFleetID, ParentSubFleetID, SubFleetName, AnchorFleetID, SpecificThreatID, AnchorFleetDistance, AnchorFleetBearingOffset, GuardNearestHostileContact, GuardNearestKnownWarship, UseAnchorDestination |
Rows with a missing race or parent fleet are skipped. The anchor fleet resolves when that fleet exists. The parent sub-fleet resolves in a second pass |
| Sub-fleet threat | SpecificThreatID | Resolved after alien ships load, when the race knows that alien ship |
| Squadrons | FCT_Squadron: SquadronID, GameID, SquadronName, ParentShipID |
Rows with a missing parent ship are skipped. The squadron enters the parent ship’s squadron list |
| Ship membership | FCT_Ship: FleetID, SubFleetID, ParentSquadronID, AssignedSquadronID, MothershipID, AssignedMSID |
The sub-fleet resolves while ships load. The squadron resolves when squadrons load, which also rewrites AssignedSquadronID to the resolved squadron’s ID |
| Detach flags | FCT_Fleet: DetachedStanding, DetachedConditional, IncludeSquadrons |
Loaded as true or false |
| ID counters | The sub-fleet and squadron ID counters | Set to the largest FCT_SubFleets.SubFleetID and FCT_Squadron.SquadronID at load |
Both saves delete the game’s rows and write every object again. The sub-fleet save writes every sub-fleet in the game’s sub-fleet list, including orphans whose parent fleet is gone, and those rows are skipped at load. The squadron save writes the squadrons found in each ship’s squadron list, with the ParentShipID of the squadron’s current parent ship.
The load order is fleets, standing and conditional orders, sub-fleets, ships, then much later alien ships and squadrons. A ship’s sub-fleet therefore resolves against sub-fleets that already exist, and squadrons resolve against ships that already exist. A saved ParentSquadronID with no matching squadron leaves the ship without a squadron and keeps the saved AssignedSquadronID.
The tree expansion flags on fleets, sub-fleets, ships and squadrons, and the remembered Naval Organization window selection, are not saved, so they reset on load. The counters come from the saved maximum, so an ID that a cancelled prompt used up above the highest saved ID is issued again after a reload. Counter scope is described in identity namespaces and counter scope.
Concept map
Section titled “Concept map”- Organisation model defines where fleets, sub-fleets and squadrons record their members.
- Fleet creation is the shared process every organisation action uses to make a fleet.
- Sub-fleet creation and deletion builds and removes the sub-fleet tree.
- Drag and drop reorganisation moves ships, sub-fleets, squadrons and fleets in the Naval Organization window.
- Join and absorb merges whole fleets on arrival.
- Sub-fleet totals and the overview feed the Naval Organization window summary.
- Squadron lifecycle ties squadrons to docking and launch.
- Squadron totals mirror the sub-fleet totals for carried groups.
- Commander selection picks the senior officer of each group.
- Free and carried ships set fleet speed and event wording.
- Detachment paths split ships, squadrons and sub-fleets into new fleets.
- Copied orders and flags decide which standing and conditional orders a detached fleet receives.
- Releasing parasites on scrap frees docked ships when a carrier is scrapped.
- Detached fleet names name detached and fighter fleets.
- Tree view shows the hierarchy and its markers.
- Consistency gaps list where the three records disagree and what repairs them.
- Persistence stores the hierarchy in
FCT_SubFleets,FCT_Squadron,FCT_ShipandFCT_Fleet. - Naval administration owns the administrative command above each fleet.
- Carriers, parasites and hangar transfers owns hangar capacity and landing checks.
- Squadron transit moves squadrons through jump points.
- Transit by sub-fleet splits sub-fleets into transit groups.
- Anchored fleet formation movement uses the formation settings that detachment copies.
- Effective ship and fleet speed gives the speeds the maximum speed rules compare.
- Tankers, supply ships and stationary support serves the sub-fleet modes the join actions set.
- Fleet membership changes covers orders and cargo after a transfer.
- Fleet destination removal holds the guards that stop a fleet removal.
- Move action catalogue lists the join, land, detach and divide actions.
- Standing orders and conditions holds MV: Assigned Mothership and the orders that detachment copies.
- Operational groups and fleets defines the NPR groups that detachment assigns.
- Combat targeting pass setup decides when NPR carriers launch squadrons.
- Fighter return to carriers brings NPR fighters back to carriers.
- Shared ship transfer order records the parasite transfer gap.
- Transfers, refits, splits and merges covers the identity of split and merged fleets.
- Identity namespaces and counter scope explains the sub-fleet and squadron counters.
- Ranks, themes and seniority defines the ordering the commander rules use.
- Ship and fleet capacity applies the survey crew factor.
- Fleet history entries hold the “Created on” entry of each new fleet.
- History and measurements receive the measurements that fleets credit.
- Hull numbers supply the numbers in ship display names.
- Event types list the Illegal Order and Orders Completed events that joins and detachments log.
- Space combat resolution produces the damage that detaches slow ships.
- Shipyard work runs the scrap task that releases parasites.
Resources
Section titled “Resources”Related community documentation and developer posts. These may describe a different game version.