Example Mod

Modifiers

So now you’ve seen one basic example, but just to expand on that, here’s another very simple Sicario patch to unlock all currently locked modifiers:

{
    "_meta": {
        "DisplayName": "Unlock disabled modifiers",
        "Author": "agc93",
        "description": "Unlocks disabled modifiers. Note that these modifiers don't actually work in-game."
    },
    "AssetPatches": {
        "ProjectWingman/Content/ProjectWingman/Blueprints/Data/Modifiers/DB_Modifiers.uexp": [
            {
                "name": "Unlock modifiers",
                "patches": [
                    {
                        "description": "All modifiers available",
                        "template": "datatable:{'Available*'}.<BoolProperty='false'>",
                        "value": "BoolProperty:true",
                        "type": "propertyValue"
                    }
                ]
            }
        ]
    },
    "FilePatches": { }
}

You’ll see that the basic structure is essentially the same, just with different values for the files, as well as the details of the specific patch being applied.

MSTM Weapon

For a dramatically more complex example, you can see a few more of the moving parts in action together:

{
    "_meta": {
        "displayName": "MSTM: Multiple-Launch Standard Missiles",
        "author": "agc93",
        "description": "Adds a new MSTM weapon: multiple-fire STDMs."
    },
    "filePatches": {},
    "assetPatches": {
        "ProjectWingman/Content/ProjectWingman/Blueprints/Data/Weapons/DWeaponDB.uexp": [{
                "name": "Add new weapon",
                "patches": [{
                    "description": "Clone MSSL",
                    "template": "datatable:[*]",
                    "value": "'MSSL'>'MSTM'",
                    "type": "duplicateEntry"
                }]
            },
            {
                "name": "ID change",
                "patches": [{
                        "description": "Change mssl ID to mstm",
                        "template": "datatable:['MSTM'].[0].{'ID*'}.<StrProperty>",
                        "value": "StrProperty:'mstm'",
                        "type": "propertyValue"
                    },
                    {
                        "description": "Change STDM name to MSTM",
                        "template": "datatable:['MSTM'].[0].{'WeaponUIName*'}.<TextProperty>",
                        "value": "TextProperty:'MSTM'",
                        "type": "propertyValue"
                    },
                    {
                      "description": "Increases the MSTM max projectiles to 6",
                      "template": "datatable:['MSTM'].{'MaxProjectile*'}.<IntProperty=2>",
                      "value": "IntProperty:6",
                      "type": "propertyValue"
                    }]
            }
        ]
    }
}

Of particular note, you can see that the patch adding the MSTM is in its own patch set since they get processed set-by-set.

Otherwise, the later patches wouldn’t match anything (since it wouldn’t exist yet)

Last modified July 15, 2021 : Add more complex example to docs; (0e9165b)