File information
Last updated
Original upload
Created by
MaskedRPGFanUploaded by
MaskedRPGFanVirus scan
About this mod
SKSE plugin that allows you to add Forms to FormLists at game startup using configuration files In order to reduce the number of conflicts between mods. Created with CommonLibSSE-NG for Skyrim SE, AE, and VR.
- Requirements
-
Nexus requirements
Mod name Notes Address Library for SKSE Plugins Mandatory MergeMapper [Optional] Not strictly VR-only, but VR players tend to have to merge stuff because of lack of esls. powerofthree's Tweaks Mandatory - Load Editor IDs must be enabled powerofthree's Tweaks VR Mandatory for VR, Load Editor IDs must be enabled VR Address Library for SKSEVR Mandatory for VR - 0.43.0 or greater Off-site requirements
Mod name Notes Latest Microsoft Visual C++ Redistributable package Mods requiring this file
- Permissions and credits
-
Author's instructions
Just ask me.
Source code (outdated, will be updated with 2.0.0 when I will finish new features): https://github.com/MaskedRPGFan/FormList-Manipulator.File credits
The SKSE team for SKSE.
meh321 for Address Library for SKSE Plugins
Ryan-rsm-McKenzie, powerof3, CharmedBaryon, alandtse for various versions of CommonLibSSE.
powerofthree for Spell Perk Item Distributor (SPID) - I learned a lot from your code, thank you!Donation Points system
Please log in to find out whether this mod is receiving Donation Points
- Changelogs
-
-
Version 1.8.1
- VR ESL support.
- [Fixed] Filters can't detect ESL-flagged plugins.
-
Version 1.8.0
- Ability to remove forms on runtime or using event.
- Rel with pdb for debug.
-
Version 1.7.1
- [Fixed] Ammo Collections Causing Crash.
- Safe to update.
-
Version 1.7.0
- [Added] Collections of forms using keywords.
- [Added] KID support. FLM will start working after KID finishes adding keywords.
- [Added] FLM will send event FLM_SetupDone when it finishes work.
- Safe to update.
-
Version 1.6.0
- For General usage, Toys, Mod Events, Groups and Hair Colors: adding an asterisk before a FormList adds its contents instead of the list itself.
-
Version 1.5.4
- Fixed a bug that caused filter names to have to be lowercase.
-
Version 1.5.3
- Support for the latest updates 1.6.629+.
-
Version 1.5.2
- Fix for filter splitting.
-
Version 1.5.1
- Filters now supports merged plugins using MergeMapper.
- Filters: the + sign now applies only to loaded (active) plugins, instead of all plugins in the list.
-
Version 1.5.0
- Added filters.
- Fixed a bug introduced in 1.4.0, where boy's toys were added to girl's toys.
- Fixed the counting of statistics.
-
Version 1.4.0
- Added checking if po3's Tweaks are installed.
- Form and FormList information in the log now additionally includes EditorID.
- Added information about FormList synchronization when starting a new game and loading an existing game.
- The log format has been improved.
- Fixed incorrectly counted statistics in the summary.
- Fixed typos.
- Optimized the code.
- FormListManipulator_DEBUG.ini can be placed in: Data, Data/FLM, Data/SKSE/Plugins.
- Simplified usage for Dragonborn Spider Crafting.
-
Version 1.3.2
- Fixed simplified usage for Atronach's Forge.
-
Version 1.3.1
- VR fixes and optional MergeMapper support - thank you alandtse for providing these.
-
Version 1.3.0
- Restructured all application logic.
- Mod event handling.
- Simplified usage for Hair Colors.
- Simplified usage for Atronach's Forge.
- Clearer log format.
-
Version 1.2.1
- Important fix for FormLists modified by scripts.
-
Version 1.2.0
- Aliases for FromLists.
- Groups for Forms.
- Safety warnings for Plants.
- Ability to read all ini files from "Data\FLM" directory to remove the clutter from the "Data" directory.
- More concise log format for easier reading.
- Log summary.
- Debug mode for log.
-
Version 1.1.1
- Improved handling of incorrect Plants.
-
Version 1.1.0
- Fixed a bug of adding to a FormList where another entry for the same FormList already existed.
- Improved handling of incorrect FormList and FormID.
- FormID for base plugins and DLC no longer require specifying the plugin name.
- You no longer need to remove any digits from FormID, the plugin will do it automatically.
- Keys are no longer case-sensitive.
-
Version 1.0.0
- Initial release.
-
- Donations
-
Straight donations accepted
If you are a user and not a modder, just install this mod like any other SKSE plugin and you're done. The whole description and explanation of use is for modders.
With this mod, you can get rid of conflicts between mods that modify FormLists, and thus avoid creating compatibility patches. Examples of such situations are mods that add new plants to plant, add toys and gifts, new character voices, trophies, hair colors and races for head parts, etc.
As of version 1.3.0, you can use Mod Events to update FormLists on demand during the game.
As of version 1.5.0, you can add filters to entries in order to skip them.
As of version 1.7.0, you can create collections of forms using keywords.
Requirments
Address Library for SKSE Plugins
powerofthree's Tweaks
Latest Microsoft Visual C++ Redistributable package
Or they can be any INI files located in the "FLM" directory.
Configuration files are processed in alphabetical order. First from the Data directory, then from the Data\FLM.
Keys: Alias, Group, Collection, Filter, ModEvent, FormList, Plant, BToys, GToys, HairColors, AtronachForge, AtronachForgeSigil, DragonbornSpiderCrafting are not case-sensitive.
Filters, Aliases and Groups, once defined, remain available for other INI files.
Filter is always optional.
FormList = FList|Form, Form, *FormList, #Group, #Collection, etc|Filter
Remove = FList|Form, Form, *FormList, #Group, #Collection, etc|Filter
where,
- FList can be: EditorID or FormID~ESP or Alias.
- Form can be: EditorID or FormID~ESP.
- FormID - record ID. Example: 0xD80 or 0x03008246 or 0xFE00080A or 0x8246 (You no longer need to remove any digits from FormID, the plugin will do it automatically).
- ESP - name of the plugin with extension. Not required for base plugins and DLC. Example Unofficial Skyrim Special Edition Patch.esp. Not case-sensitive.
- EditorID - form editorID.
- Adding an asterisk before a FormList adds its contents instead of the list itself.
- Filter is optional. You can use previously defined filter or create a new filter in place.
- Filter format: Condition, Condition, etc or #NameForFilter. To learn more about the filter format, see the Filters section below.
FList is skipped if is not found. Form is skipped if it already exists in FormList or is not found. You can also use Filters to skip Forms or add/remove them in a specific situation.
Filter = NameForFilter|Condition,Condition, etc
where,- The condition is the name of the plugin with + if the plugin must be activated or - if not. Example: +Vigilant.esm.
- You can use & to check multiple plugins in one condition. In this case, all plugin states (+ or -) must match for the condition to be true. Example: -Vigilant.esm&+Skyrim Cheat Engine.esp.
- The conditions are combined by alternative, that is, the filter returns true if at least one of the conditions is true.
To use a predefined filter, add the # sign before its name.
Collection = NameForCollection|FormType|Keyword, -Keyword, etc|Filter
where,- FormType type of form to search for forms with the keyword. Can be (case insensitive): Armor, Weapon, Ammo, MagicEffect, AlchemyItem, Scroll, Location, Ingredient, Book, Misc, Key, Soulgem, Activator, Flora, Furniture, Race, TalkingActivator, Enchantment, NPC, Spell.
- Keyword is FormID or EditorID of keyword. Combined by conjunction. This means that the form must contain all keywords without the minus sign and none with it.
- Filter is optional. You can use previously defined filter or create a new filter in place. Filter format: Condition, Condition, etc or #NameForFilter. To learn more about the filter format, see the Filters section above.
ModEvent = EventName|FList|Form, Form, *FormList, #Group, #Collection, etc
ModEventRemove = EventName|FList|Form, Form, *FormList, #Group, #Collection, etc
where,
- EventName is a string of letters A-Z, a-z.
- The rest the same as for general use.
- There can be multiple entries for the same Mod Event.
Adding an event is skipped if it does not contain a single valid FormList and Form. After receiving the event, FLM will add/remove Forms to/from the indicated FormLists and send a new event with the name of the received event with "OK" (EventNameOK) appended (string sent: EventName|Added Forms|Form duplicates, value sent: Added Forms). The entire procedure is written to the log.
Alias = NameForAlias|FList, FList, etc
Aliases are collections of FormLists. To use an Alias add the # sign before its name. Aliases are processed at the beginning of the configuration file, regardless of their position in the file. Only for FormList and ModEvent keywords.
Group = NameForGroup|Form, Form, *FormList, #Collection, etc
Groups are collections of Forms. To use a Group add the # sign before its name. Groups are processed at the beginning of the configuration file, after collections and filters, regardless of their position in the file. For FormList, ModEvent, BToy, GToy, HairColors, AtronachForge, AtronachForgeSigil keywords. Groups can use the collections.
Plant = Form|Form|Filter
where,
- first form is for Ingredient/Alchemy Item/Activator,
- second for Flora/Tree/Misc/Activator/Container,
- if you specify a different type of Form, a warning will be thrown into the log, but the Form will be added,
- filter is optional.
BToys = Form, Form, *FormList, #Group, #Collection, etc|Filter
GToys = Form, Form, *FormList, #Group, #Collection, etc|Filter
HairColors = Form, Form, *FormList, #Group, #Collection, etc|Filter
AtronachForge ⩦ Form|Form|Filter
where,
- first form is for Recipe,
- second for Result,
- filter is optional.
AtronachForgeSigil ⩦ Form|Form|Filter
where,
- first form is for Recipe,
- second for Result,
- filter is optional.
DragonbornSpiderCrafting ⩦ Form|Form|Filter
where,
- first form is for Recipe,
- second for Result,
- filter is optional.
To enable debug mode to see more details, create the FormListManipulator_DEBUG.ini file In one of the following places: "Data", "Data\FLM", "Data\SKSE\Plugins".
Take a look at the log: "[PATH to MY Documents]\My Games\Skyrim Special Edition\SKSE\FormListManipulator.log". It contains all the information about the processed files and records.
Filter = AdditionalHearthfireDollsFilter|+AdditionalHearthfireDolls.esp
Collection = Irons|Weapon|0x1E718
Collection = WarAxes|Weapon|WeapTypeWarAxe
Collection = IronWarAxes|Weapon|0x0001E718~Skyrim.esm,WeapTypeWarAxe
Collection = IronNotWarAxes|Weapon|WeapMaterialIron,-WeapTypeWarAxe
ModEvent = TestEvent|BYOHRelationshipAdoptionPlayerGiftChildMale|BYOHChefDoll
Alias = TestAlias|0x8246~HearthFires.esm,0x03008246
Group = Dolls|BYOHChefDoll,BYOHDBDoll,BYOHDragonbornDoll,BYOHJesterDoll
FormList = #TestAlias|BYOHBlacksmithDoll,BYOHDragonPriestDoll,BYOHExecutionerDoll
BToys = #Dolls
Plant = zzzCHMountainFlower01White|zzzCHTreeFloraWhiteFlowers
FormList = 0x03008246|0x807~Plantable Animals.esp,PlantableAnimalsAlbinoSpiderNest
Formlist = #TestAlias|#Dolls
Plant = ChaurusEggs|PlantableAnimalsChaurusNest
BTOYS = BYOHChefDoll,BYOHDBDoll,BYOHDragonbornDoll,BYOHJesterDoll|#AdditionalHearthfireDollsFilter
Plant = SF_BunglersBane|SF_BYOHHouseIngrdBunglersBane01|+TechnicolorAlchemy.esp
- Created with CommonLibSSE-NG, support SE, AE, VR.
- KID support. FLM will start working after KID finishes adding keywords.
- FLM will send event FLM_SetupDone when it finishes work.
For VR (support provided thanks to alandtse):
- VR Address Library 0.43.0 or greater
- po3tweaks VR (and its dependencies)
- MergeMapper (if you need to use zmerge)
- easy of use - config files instead of plugins,
- no need to create compatibility patches for mods modifying the same list,
- instant effect and better performance (DLL instead of scripts),
- dynamic modification - you can close the game, change the contents of the INI file, and when you run game again, everything will be changed according to the contents of the file,
- ability to use Mod Events, to dynamically modify FormLists during the game.
Github (outdated, will be updated with 2.0.0 when I will finish new features)
