After a month and a half of work, I am ready to announce that the successor to Faction Distribution Framework is finally ready for a beta release.
Did you have a couple drinks, decide to buy the Creation Club skins, and then were dissapointed that they were just craftable, and weren't on the factions? Do you see all the paintjob mods on the nexus, and wish the same? Does the idea of patching and maintaining a complicated load order to do this give you a headache?
Faction Paintjob Distributor is an automated FO4Edit patcher for getting paintjobs that are normally only craftable to appear on NPCs. And not only will it detect paintjobs that can be distributed, it will detect nif-bashed weapons and armor that can have painjobs added to them, e.g. the vanilla Laser Musket, and add the appropriate keywords so that they too, can have paintjobs.
How it works
The patching script scans your load order for craftable paintjobs that aren't already distributed, and builds a data set of the available paintjobs, for each faction setup in the configuration file. It then checks every weapon and armor record, and for each faction it will build a template and modcol, using the same system of restricted filter keywords as vanilla factions that already have paintjobs. If then scans all of the levelled lists, and applies those keywords to them based on the configured filters for each faction. Power Armors that spawn in the world are also analyzed, and based on configuration can have paint jobs added as a set, rather than as individual pieces.
How to Use
This patcher requires FO4Edit v4.1.5o or greater, (which is not in general release as of yet- download it from the xedit discord server)
Download and install the FactionPaintjobs mod, and install in your mod manager.
Download the patcher scripts, and unzip in your Edit Script folder inside your FO4Edit installation
Download and install any replacer patches you want (these are generally only required for more complex paintjob mods, that attempt to handle their own distribution)
Make any changes to the configurations you want
Load your load order in fo4edit, and apply the patcher, it will take a couple minutes.
This patcher doesn't require a new game, however the changes will only take effect when new content is spawned (in an existing game, after a cell reset).
Replacer Patches
Replacer patches are currently available for the following mods (basically everything currently included in LitR). Creation Club skins, and mods that just provide paintjobs without trying to distribute them don't need replacer patches.
Art of War
Gunmetal Weapon Skins
Gunmetal Armor Skins
Clothing Color Variety
GWS Handmade Weapon Skins
Raider Armor Paints Redux
Robot Armor Paints
Marine Armor Paints Pack
Wood Finishes for the Lever Action Rifle
Configuration Explained
There are two configuration files that come with FPD: Config.ini, which contains general configurations, and Faction.ini, which has the configuration for the factions to be distributed.
Filters
Most of the configuration options are filters. A configuration filter is a comma seperated list of values that are processed in order when evaluating a given record and deciding whether/how to patch. For example, the each faction has a LVLI filter, which is used to determine whether a faction keyword should be added to a levelled list based on the editorID of the levelled list.
Filter Qualifiers
- Blacklist. If a filter with this qualifier matches, it will return false.
+ Required. The compared value must match this filter, and the filter will continue evaluating
! Match all. If a filter reaches this value, it will return true.
#NoProperties - a special logic qualifier for OMODs, that detects OMODs that have no properties (which are pretty much always default skin omods)
ReplacementVars: any string found as a key found in the [ReplacementVars] section in config.ini is replaced during filter initialization. This is a quality of life feature, that allows you to repeatedly use long strings of filters, but keep the config more readable.
Config.ini
This file is responsible for universal configuration options, and has the following configurable options
filter_paintjob_ap=
OMODs are connected to WEAP and ARMO records using Attachment Points. Attachment Point keywords passing this filter will be recognized as for a paintjob.
filter_paintjob_kywd=
OMODs have filter keywords that control what they can be attached to. Only OMODs with filter keywords passing this filter are recognized as paintjobs
filter_allow_redistribute=
By default, the script will not redistribute paintjobs that are already applied to a WEAP or ARMO record. This to prevent the patcher from distributing things that are already used. Paintjobs passing this filter will ignore this rule.
filter_eval_furn=
only FURN records passing this filter will be processed
filter_eval_item=
only WEAP and ARMO records passing this filter will be processed
filter_eval_lvli=
only LVLI records passing this filter will be processed
filter_eval_omod=
only OMOD records passing this filter will be processed
Factions.ini
Each section is a configurable faction. A faction can also be the default, or epic "faction", which means they will be applied to the default, and epic templates respectively.
is_default
is_epic
these values control whether the list will be distributed as a default or epic, respectively.
keyword
If configured, instead of generating a new keyword, the patcher will use an existing one. Good for factions that already have some sort of paintjob distribution.
alt_keywords
If a faction has multiple pre-existing distribution keywords, the alternate ones should be here. This is so the script knows if an item already has faction templates, and it doesn't need add new faction templates for it that faction. For example, the Brotherhood of Steel uses a series of Rank related keywords, and the script needs to identify those in order to know that an item already has BoS related skins applied.
filter_lvli
Used to filter LVLIs for addition of the faction filter keyword
filter_paintjob
Used to filter OMODS that will be distributed with this faction
filter_item
Used to filter the item type that will have faction templates generated for this faction
In addition to just checking the Name (for paintjobs) or the record EditorId (for everything else) for contains value, there are a few additional filter options for filter_item.
signature:ARMO
signature filters for record type, mainly useful if you only want a faction to apply to WEAP or ARMO records.
keyword:ObjectTypeArmor
Checks the item for the presence of the keyword, (can be any keyword, not just ObjectTypeArmor)
V01: Added the missing MTE Functions