Starfield adds a new type of plugin that I'm calling an override plugin,
which does not use up a load order slot when active, and a plugin cannot
be light and override at the same time. It also increases the BA2
version number, though the differences are not relevant to libloot's
usage, and loads BA2s from plugins differently.
The latest libloadorder distinguishes between plugins that are
implicitly active (i.e. they're active despite not being listed in
plugins.txt) and those that are made to load in certain positions by the
game.
This allows the next release of libloot to be used with existing
masterlists and userlists, and they can then be converted to the new
syntax before a future libloot release drops support for the old syntax.
While it's based on Boost.Format's syntax, which is more complex than
supported by this commit, the masterlist syntax docs only mentioned and
gave examples of what is supported by this commit, and the masterlists
only contain placeholders %1%, %2% and %3%.
Using the version of fmt that's bundled with spdlog.
This breaks compatibility with existing metadata messages that use
substitutions, as the placeholder syntax has changed. The new syntax is
compatible with C++20's std::format.