Skip to content
Chris Knight edited this page Aug 22, 2026 · 2 revisions

WitcherScriptMerger

Script Merger for The Witcher 3. When two mods edit the same script file, only one of them wins — this tool merges their changes instead, so both keep working.

It scans your mods folder, finds .ws/.xml files (and files inside .bundle packages) that more than one mod modifies, and performs a three-way merge against the vanilla file. Merging is in-process; no external merge tool is required for script conflicts.

This is a maintained fork of AnotherSymbiote/WitcherScriptMerger, modernized to .NET 10 with a new merge engine, a headless CLI, an MCP server mode, and a companion Vortex extension.


Which one do I want?

You want to…Use
Click buttons, see conflicts in a treeThe GUI — run WitcherScriptMerger.exe with no arguments
Merge from a script or a scheduled taskThe CLIWitcherScriptMerger.Headless merge
Stay inside VortexThe companion extension — adds a Resolve Script Conflicts button
Drive it from a tool or an AI agentMCP server mode... mcp speaks JSON-RPC over stdio

The GUI and CLI live in the same Windows executable. The Headless build is CLI + MCP only, runs on Linux as well as Windows, and is what the Vortex extension downloads and drives.


Start here


What it does when a merge isn't clean

Most conflicts merge automatically. When a whole-file merge can't resolve, the tool doesn't give up and doesn't guess:

  1. Function-level fallback — the file is split into individual functions and each one is resolved independently. Two mods editing different functions in the same file is the common case, and it merges cleanly.
  2. Whole-function tiebreak — when both mods genuinely edited the same function differently, the more-changed-from-vanilla version wins, and the choice is recorded.
  3. Conflict markers — if even that can't decide, a git-style conflict file is written to a DiffPlexConflicts folder and opened for you to resolve by hand. Nothing wrong is ever written to your mods folder.

Every non-mechanical decision — every tiebreak, every edit that survived a competing deletion — is reported. If a mod's change disappears, the audit trail says which decision removed it and why.


Reporting problems

Please include the merge's own output (the function-level: lines especially), your game version, and roughly how many mods you have. Troubleshooting covers the failures we already know about, several of which look like tool bugs but aren't.

Clone this wiki locally