Generic Synthesis Patcher

About

Generic Synthesis Patcher uses JSON configuration files to apply patches to many different record types.
It has a number of ways to filter for records to apply actions to, including matching against most implemented fields, and even using RegEx against strings or Editor IDs and also 3 main actions, fill, forward and merge.
Rules can even be grouped to share some common filters, or stop processing rules after one has matched.

Once a record has matched a rule following actions could be applied:

Please see config help, implemented fields and examples on GitHub for more details.

While this is not intended to replace more specific / complex Synthesis patchers, it can do a lot of more generic changes and fixes to your load order, or even be used post bash to assist in fixing anything missed by bash.
A number of current patchers would however fit into this generic category.
I have only tested this with latest Skyrim SE however it should work on other versions.

Prerequisites

This of course requires Synthesis

Bugs, Requests and Contributions

Please log any bugs or requests you may have via GitHub Issues or over on the Nexus bug page.
While I make no guarantee to fixing or implementing new requests due to other commitments, I will try, especially fixing bugs.
Also if you want to contribute please do, even if you don't known how to program, just improving my awful documentation would help others.

Configuration

Config files are to be located in a sub-folder of the game's Data folder, called "GSP". This directory can be changed in settings. x:\SteamLibrary\steamapps\common\Skyrim Special Edition\Data\GSP\

If using MO2 or other mod manager this means you can install your configurations as a normal mod.

Configuration files in this directory must end in .json with the following format. See examples directory for real world examples.
          [
          {
          "priority": 0,
          "types": [ "AMMO" ],
          "editorID": "...",
          "formID": "123ABC:Skyrim.esm",
          "fill": {
          "field": "value",
          "keywords": [ "KeyWord", "-Keyword" ],
          "value": 100,
          "weight": 1.234
          },
          "forward": {
          "mod.esp": [ "fields" ]
          }
          }
          ]