Skip to content
Chitak 985 edited this page Jan 6, 2026 · 6 revisions

Welcome to the KittenPatcher wiki!

KittenPatcher is an analog of ModuleManager for KSP, made to patch .xml files effectively. This wiki will provide detailed information on how KittenPatcher works and what it does.

Below is the current version of KittenPatcher's patching syntax. To see patching versions by KittenPatcher version, see the side bar. To see the planned syntax and features, go here. Every path used in tags is a path from Content, unless stated otherwise. (for example, if you want to access Kitten Space Agency/Content/Core/Astronomicals.xml, you will need to use Core/Astronomicals.xml)

How to create a KittenPatcher patch:

The base patch must be located in an .xml file somewhere inside your Content folder with root tag <KittenPatch>. Every .xml file in the folder is loaded, so it does not matter if the mod containing the .xml file is added to manifest.toml to be loaded by KSA, since KittenPatcher bypasses that.

KittenPatcher patch example:

Example:

<KittenPatch>
  <PatchItem> <br>
    <PatchFile File="Core/EarthOnly.xml">
      <PatchDelete Name="LoadFromLibrary">
        <PatchCondition Type="Attribute" Name="Id" Value="Hunter"/>
      </PatchDelete>
    </PatchFile>
    <PatchFileOperations>
      <PatchFileDisable File="Core/SolSystem.xml"/>
    </PatchFileOperations>
  </PatchItem>
</KittenPatch>

This example would remove Hunter from the Earth Only system and disable the Solar System system. Below is a detailed description of every KittenPatcher patch component.

KittenPatcher patch components:

The <KittenPatch>...</KittenPatch> root tag must exist for KittenPatcher to read the file. If the tag is not present, the patch will not be loaded or executed.

<PatchItem>

Inside the <KittenPatch> root tag, every <PatchItem> tag will be loaded and executed starting from the first tag. Each such tag contains a list of patches to execute and can be used for organization and patch ordering.

Inside the <PatchItem> tag, all <PatchFile> and <PatchFileOperations> are executed.

<PatchFileOperations>

Inside a <PatchFileOperations>, there are also multiple tags that can be executed:

  • <PatchFileDisable File>: The tag deletes the file specified in File as a path from Content for the duration of the game session when the patch executes. If the file doesn’t exist or it is a folder, this will be logged and skipped.

<PatchFile>

<PatchFile> selects the file to patch using the File value which will specify the path from Content. The file is checked to exist first, if it does not the <PatchFile> will be skipped and this will be logged.

Every <PatchFile> contains the patch needed to be executed for that specific file. The tags inside can be:

  • <PatchDelete Name [All]/>: This will delete the tag Name. All specifies if all matching tags should be deleted instead of only the first one, by default it is "false".

If the tag specified in Name does not exist, the patch will be ignored and this will be logged.

Clone this wiki locally