Besides EU4 I also play CK2, Victoria 2 and HoI4. I have also been known to play HoI3.


I wrote a parser to render scripts as wiki text. GitHub

If you find any bugs, or the output is less than ideal, please report this as a bug on Github.

My primary development environment is Linux, but it should also work in Windows (tested in Windows 10).


The output will always need editing for good presentation, especially to simplify complex scripts with lots of repetition. If you use its output without editing it, please add {{computer generated}} to the page. Also before using its output to update for a new version, please make sure something actually changed - if it's the same as the old version, just update the version number.

You can see if anything has changed between patches by copying the output for the old version somewhere, then running it on the new version and taking a recursive diff of the two versions. I provide such diffs for your convenience (see #Output zips below).


  • Events: essentially done, producing {{event}} complete with {{option}}s with and without conditions (beta).
  • Decisions: mostly done, producing {{decision}}, but I'm not 100% certain it's complete (alpha).
  • Idea groups: parsed, used in producing output in other places e.g. the name of the Nth decision in such-and-such idea group. It can produce {{idea group}} templates, but in a horrible hacky way and probably not following the proper style (alpha).
  • Script statements: definitely not complete. Adding these is an ongoing process (pre-alpha). As of 6 November 2017, in idea groups, decisions and events alone I have implemented 598 distinct effects/triggers, and there are 503 left to interpret.
  • Localization: in principle the whole program could be translated to another language, if that was thought desirable - with a few exceptions, which could be fixed if anyone wants a translation. The language to use for EU4 localization is specified in settings.yml; output language is currently hardcoded to English only, but again, that could easily be changed. The localization framework I use (Shakespeare) should make localization easy, but due to a serious performance bug in the compiler it's rather more tedious at present.

To do:

  • Missions
  • Modifiers (event, opinion, influence/loyalty, etc.)
  • Historical characters (rulers, leaders and advisors)
  • Casus belli
  • (optional) Other history
  • Cross-referencing localizations, ought really to get the actual key for the name, description etc. Done!
  • All triggers and effects used in vanilla!
    • Triggers and effects available for modders but not used in vanilla
  • Other games, e.g. Crusader Kings 2, Victoria 2, Hearts of Iron IV, Stellaris
  • Clean up the code, in particular use some sort of extensible records system to make the "build and analyse a single-purpose data type" style functions less boilerplatey.
  • Possibly switch to a different localization method, if compiling Messages.hs is still too slow to enable optimizations after certain GHC bugs are fixed.

Output zips

Since no one but me seems to be able to run it at the moment, I will be uploading zip files in this Google Drive folder[1] with names based on EU4 version and the Git commit hash or version number of the version of pdxparse that produced it. I'll also upload a diff on each release, so you can tell which things changed. For my convenience I will usually update after a release, and only bother uploading once, so more may change than what changed in the game.