--- title: jobs.xml and god.xml: NPC ships and stations summary: Quotas, placement and why editing XML need not immediately change an existing universe. section: galaxy kind: guide status: reference updated: 2026-10-27 tags: ["X4","modding","jobs","and","god"] sources: ["https://chemodun.github.io/x4/modding-support/anatomy-of-game-data/libraries/jobs-xml/","https://chemodun.github.io/x4/modding-support/anatomy-of-game-data/libraries/god-xml/"] --- ## Separate their purposes `libraries/jobs.xml` describes NPC ships: selection, orders, quotas and allowed locations. The job engine maintains population; with `buildatshipyard="true"`, replenishment after initial generation involves shipyard construction. A quota is not a promise of immediate spawning. `libraries/god.xml` mainly defines station and object generation. Their subsequent development also uses MD. Version 9.00 added production entries using plans and staged construction. A station entry does not replace a patrol job. ## A minimal quota patch Example `libraries/jobs.xml` in your extension: ```xml 2 ``` **Prerequisite:** `wiki_scout_patrol` is a fictional ID for a valid job you have already created, with one `quota`, sufficient `maxgalaxy` and suitable location/ship definitions. Vanilla has no such entry. **Effect:** after patching, that entry's `galaxy` attribute becomes `2`. This changes the job engine's target; it does not command two additional ships to appear. A selector matching nothing does not perform the intended edit. Existing ships do not automatically receive new equipment when a template changes. ## New games and loading saves | Scenario | Check | | --- | --- | | New game | Activation, selected dataset, quotas and location filters | | Loading with a new extension | Its saved extension record and `content/@save` | | Updating an already known extension | A new `god` entry does not imply automatic station generation | | Editing a job | Job state is saved, definitions are read from files; existing ships may retain old orders | Chem O’Dun reports that loading generates `god` entries for an extension first added to the save with `save="true"`; updating an already known extension does not do this. `save="false"` does not trigger that load-time generation. On a new game this flag alone does not disable generation. A dataset for a particular gamestart or galaxy replaces the root set rather than adding to it. Also inspect `matchextension`: restricting selection to the extension's space can exclude the base map. ## Check the result Compare a new game and a copy of an older save separately. Record the entry ID, actual object count/location and expected replenishment route. For stations investigate `-godlog`; an empty report without a generation pass proves nothing. Updating an existing world may require a separate MD migration. This is a source-based explanation and learning patch, not our own game acceptance test. Continue with the [manifest](wiki:extension-manifest), [game starts](wiki:gamestarts-and-menu) and [debugging](wiki:debugging).