Display unequipped gear and custom items on the player or NPCs. Works with any item with no additional meshes required. Does not use body slots. SKSE64 plugin. Custom in-game user interface for configuring everything in real-time while you're playing. Includes a flexible positioning system for both equipped and unequipped gear.
Optional: You need this for the weapons scale and more stuff without scripts.
Permissions and credits
Author's instructions
MIT License
File credits
This author has not credited anyone else in this file
Donation Points system
This mod is opted-in to receive Donation Points
Changelogs
Version 1.6.3
Papyrus: Added SetItemRemoveScabbard* and GetLastEquippedForm native functions, fixed rotation not updating after calling SetItemRotation* and SetIgnoreRaceEquipTypes* not taking effect
Version 1.6.2
Fixed possible crash if a non-critical error occured during preset save (no write permission for example)
Check extension before loading string table files to avoid unnecessary error spam (nexusbla18)
Version 1.6.1
Allow controling arbitrary skeleton nodes in gear positioning (see AdditionalCMENodes folder)
Show loaded state in actor info
Fix global config panels not updating after import
Version 1.6.0
Added weapon animation support - off by default, see toggle in settings (more in the tooltip)
Configurable membrane shader effects are now available (intended for custom items)
Added an equipment priority and limiting system, lets you define how many gear slots actors can have and which are evaluated first.
Added a skeleton extension system that can dynamically create new gear nodes or convert sheaths to XP32 spec (CME->MOV->Node layout). Can be used to adapt skeletons to work with IED or SDS without actually having the meshes installed or to make new nodes for your gear.
Added a configurable node monitoring system which tracks and records if nodes are present on a character, that data can then be used in conditions. The primary use is detecting animation objects, e.g. hide the lute custom display when a bard is playing.
Added gear node placement randomization (toggle in settings)
Added last equipped mode to custom displays (more in the tooltip)
Added conditions: time of day, in first person, in combat, is female, is humanoid skeleton (detects vanilla and newer xp32), in water, underwater, swimming, bleeding out, tresspassing, commanded, riding, ridden, is player, bribed by player, angry with player, essential, protected, sitting, sleeping, paralyzed, unconscious, weapon drawn, node monitor (see above), arrested, is child, in killmove, presence (see tooltip in popup), skeleton (ID and signature matching)
Added skeleton explorer and actor info diagnostic tools, available in the tools menu. Actor info also shows detailed info about inventory contents.
Fixed a buffer overrun during ita styles setup
Fixed weapon adjust blocking method to ignore vanilla skeletons and improved efficiency
Fixed imports not respecting filter options
Custom: (breaking) 'ignore race equip types' base option no longer has any effect on custom items. Some presets may need to be updated.
Custom: fixed race equip type checks running on armors
Changed UI layout, there's now a main menu bar at the top of the screen
Added configurable keybinds for temporarily releasing the control lock (see settings, UI section)
Added equipment override groups
Model swaps can now be set on the base config, so they may be used in equipment overrides.
Allow disabling havok from the base config, custom object flag still takes effect.
Equipment/Custom type, form and armor conditions: split matching displayed items into 'all' and 'this'. Gear positioning is unaffected by this change.
Add geometry visibility test to biped condition
Detect if Simple Dual Sheath has shield on back enabled, used with animation switching
Optionally use extrinsic (fixed-frame) rotations, on by default
Allow loading meshes from BGSMaterialObject
Added behavior graph path filters for filtering out unwanted weapon anims (mainly for performance reasons)
Disabled use of temporary NPC forms in configuration, templates are used instead
Added SetItemWeaponAnimationDisabled and SetItemDisableHavok native functions
User defined font metadata is now loaded from IED\Fonts\User
Added two new styles (spectrum-dark, enemymouse)
Many misc fixes and improvements
Version 1.5.0
Fixed a maintenance procedure clearing gear positioning placement data unless atleast one position entry was also present. Make sure to update to avoid losing placement settings.
Fixed 'Use adjusts from matched armors only' under gear positioning offsets (broken in 1.4.0, had no effect)
Fixed intro banner switch closing the main ui window when toggled off
Support for XP32 alternate animations (enable in Tools->Settings, make sure to read the tooltip)
Automatically apply XP32 left sheath rotation adjustments on qualifying skeletons
Added item animation control papyrus native functions
Sounds for any form type can now be defined under settings
Version 1.4.1
Fix potential nullptr crash while gathering actor inventory info (introduced in 1.4.0)
Gear positioning: added bolt xp32 node
Version 1.4.0
Fixed an issue which could cause the UI initialization procedure to abort when there was no error
Fixed NPC combo not showing nearby actors unless 'Show all' was ticked
Fixed shield display candidates not sorted by armor rating (strongest have priority now, same as weapons)
Various misc fixes
Added intro banner
Added weather and global variable conditions
Add item count to form condition (applies when testing inventory presence, ie if both Equipped and Displayed are unticked)
Added ammo category to equipment form browser (filters/preferred items)
Custom: optionally load a random model when additional items are specified
Custom: allow disabling individual group items
Allow playing arbitrary NiControllerSequence on displayed meshes
Minor adjustments to gear positioning default configuration
Version 1.3.2
Custom items: fixed 'Disable havok' option not taking effect in some cases
More optimizations for reduced binary size
Version 1.3.1
Improved error reporting mechanisms during initialization
Minor fixes and optimizations (reduced code size)
Version 1.3.0
Added UI styles, alpha and background alpha sliders
Added option to freeze time while UI is active
Shield world models can now be loaded instead of race-filtered ARMAs (they're usually the same mesh)
Custom items: fixed optional favorite check running on npcs
Show log entry timestamps
Optionally release font textures after closing UI (large glyph sets have large textures which use up a lot of vram)
Fixed some issues with control sizing in settings window
Optionally remove favorited restriction from all equipment slots
Added ammo equipment slot (quivers, bolts)
Added location, interior, worldspace, player teammate, guard, mount, package, shout equipped, combat style and npc class conditions
Race condition can match just the keyword without having to set a race form
Added playable/child to race condition
Optionally ignore race equip types so the equipment system can be used on actors of any race (Swashbuckler24)
Suspend processing of actors in detached cells (optimization)
Added SetItemUseWorldModel and SetIgnoreRaceEquipTypes native functions
Fixed the UI input handler ignoring keyboard layout
Allow partial profile imports in equipment view (overrides only atm)
Fixed possible CTD when importing profiles in npc/race views
Added a few nodes to the default list
Version 1.2.6
Gear positioning: removed evaluation delay after equipped weapon geometry is attached and reduced overhead by not running node updates unless the transform was changed.
Version 1.2.5
Custom items: optionally load only when favorited
Added actor dead and can dual wield conditions
Show more info in condition descriptions
Fixed biped conditions matched against the skin evaluating to true when no skin was found
Reimplemented disable collision option
Update nodes immediatelly after moving or altering transform (prevents visual glitches when conditions take effect)
Input handling no longer relies on GetKeyboardState, should work ok in menus now. Set EnableInMenus=true to enable. Keys with toggle state (caps, num, scroll) are treated as being off while the UI is open in a menu.
Handle (some) dead-key (accent or diacritic) characters.
Ignore node condition(s) in visibility rules.
Updated default offsets on bow and shield-back nodes to account for XP32-added 2H nodes (2h axe/mace, swp)
Updated conditions in 'disable no armor' presets to check for 'ArmorCuirass' keyword
Version 1.2.4
Added font definition for 'Malgun Gothic' (supports Korean glyphs)
Gear positioning: added nodes for daggers on back
Gear positioning: added 'Absolute position' option to transforms (apply position independently of rotation and scale) as the default and updated default configuration. Configuration stored in existing playthroughs will not be affected by this change.
Added definitions for DeleteAllActor, DeleteAllNPC, DeleteAllRace and DeleteAll functions to papyrus header.
Custom items: fixed an issue with equipment mode where available two handed weapons wouldn't be counted properly
Version 1.2.3
Custom items: fixed CTD when attempting to load a display with a model swap form not present in the game
Version 1.2.2
Custom items: added suport for BGSTalkingActivator, TESGrass, TESObjectANIO, TESObjectDOOR and BGSExplosion
UI: disabled hotkey toggling behavior to prevent unintentionally closing the interface (close it with ESC, clicking X in the title bar or File->Exit)
Equipment view: split preset loading into apply/merge for Actor, NPC and Race configurations (Global remains unchanged and can only be merged)
Fixed a few safety issues related to releasing 3D assets.
Version 1.2.1
Custom items: fixed an edge-case where duplicate grouped objects might show up (introduced in previous version, only when using the new model group feature)
Version 1.2.0
Fixed some display options not updating immediatelly when an override took effect
Fixed a few unsafe node attachments on the skeleton
Custom displays: added model groups (per request)
Updated default configuration so that equipment displays are disabled on cuffed NPCs (for example the prisoners in the opening scene). Note that this won't take effect on existing saves unless you import.
Added NPC equipment displays toggle in settings (per request)
UI: fixed some string processing which could have caused issues with user-made translations
UI: adjusted default toggle keys to the new setting when the .ini or the option is missing
Version 1.1.3
Select multiple forms in form browser, where applicable
Added player preset which disables displays if no piece of armor is equipped (Default - Player (Disable no armor))
Changed default UI popup keys to Left Shift+Backspace (will not override your existing keys set via the UI and won't have any effect if SKSE\Plugins\IED\Settings.json was already written which happens the first time you open->close the UI)
Fixed issues with key configs where keys from the .ini were being copied to the UI config (Settings.json), which then took priority. Keys from the .ini will now be in effect until the user explicitly configures them in the UI or if they set OverrideToggleKeys=true
Equipment: Added a warning about left 2H slots and Actions->All slots->Enable no longer applies to these slots.
Version 1.1.2
UI: support for rendering in-game text (like item/character names) in languages with non-ascii glyphs (russian, chinese, japanese, ..).
Version 1.1.1
Added quiver to default node list
Allow non-equippable forms in equipment override conditions
Fixed ammo type condition in gear positioning
Added biped slot condition to equipment overrides
Version 1.1.0
Remove smoke and ENB light from several third-party torch meshes (might not cover everything, if you notice a torch emitting light or smoke send me a link to the replacer you're using)
Equipment overrides: conditions now match inventory items unless 'Equipped' or 'Displayed' is ticked
Equipment overrides: fixed an issue with 'Equipped' conditions on shields not evaluating properly
Updated default config to ignore beast races (werewolf, vampire). You'll need to import if updating on an existing save (View->Equipment, Global tab, select 'Player', select 'Default' preset and merge)
Version 1.0.4
Fixed male arms not moving outwards when actor weight was above 0 or an armor with weapon adjustment was equipped.
Removed IED\Nodes.json (this file is user-generated, it should not be overwritten)
Version 1.0.3
Fixed an issue with crossbows not appearing on the player when playing as a vampire
Cleanup some additional nodes from displayed torches which should hopefully prevent ENB light emission
Version 1.0.2
Recompiled again, some parts of the code were left behind which still used AVX2 instructions (would cause crashes on older CPUs)
Version 1.0.1
Fixed an issue with the plugin not loading on Windows 7 and possibly causing problems with the controller.
Fixed the plugin crashing on older CPUs with no AVX2 extensions.
Display every piece of equipment on the player or NPCs, at once - 1h/2h swords and axes, maces, daggers, staves, bows, crossbows, shields and torches.
Display almost any item found in the game - misc, potions, scrolls, soul gems, ingredients, books, keys, even static objects - if it exists in your LO, you can make it into a display.
Highly configurable gear positioning system for equipped and displayed gear with conditional offsets to prevent clipping/gaps. Supports weight/armor adjusts for each node separately.
In-game UI for setting up everything in real time - create custom item displays, reposition gear, tweak settings on equipment displays and more without ever leaving the game. Changes take effect immediately.
Import/export presets - never lose your setup when starting a new game and easily share it with the community.
Fine-tune your setup - each actor, npc and race can have an unique configuration set. For example you can change positions for certain npcs, setup the correct nodes for creature races so that displays show up, attach battering rams to chickens, etc..
Conditional equipment display overrides - apply different settings to displays when certain conditions are met. One of many uses for this feature is to move and neatly arrange gear on an equipped backpack.
Papyrus interface for modders
Support for translations (UI)
Installation
This plugin does NOT need the full XPMSSE package to work, only the skeleton meshes which are included in it. These can also be found in 'XPMSSE Left Hand Sheath Rotation Fix' under Simple Dual Sheath optional files so it's enough to install just that.
FNIS/Nemesis, RaceMenu, or the XPMSSE .esp + scripts are NOT required by this plugin or Simple Dual Sheath.
XPMSSE (only the skeleton meshes are required, read above)
Simple Dual Sheath (required to show equipped left hand weapons, staves and for the ability to have the shield equipped on back. I recommend installing the rotation fix from optional files as well)
Install the main file manually or with your preferred mod manager.
Getting started
After installation there's not much to be done if these default settings are fine for you:
All player and NPC equipment displays enabled (player must have the item favorited).
NPC equipment displays turn off if they're not wearing armor.
Gear positions (equipped and displayed) setup in an adaptive way where offsets are applied based on what's equipped to minimize clipping and floating items. Weight and armor adjusts are applied to all items, including left hand weapons and shield.
You can make changes in the UI, press Backspace (default) to bring it up. Note that the UI will not open in paused in-game menus (this includes the main and inventory menus) unless EnableInMenus=true in the INI. The default config mentioned above is used when starting a new game, after that the entire configuration, including any changes you make during the playthrough, is stored the SKSE co-save.
Important if you use XPMSSE styles (otherwise you can skip this):
Styles in this plugin should be configured to match what you've got in XPMSSE MCM. This is necessary because:
XPMSSE only applies styles once an item is equipped and only to that equipment type.
IED can't switch animations on its own, you need the XPMSSE plugin for that functionality.
Bring up the UI with Backspace (default). Go to View->Gear positioning, select Global tab, select 'Placement' radio button. Set the positions to match what you have in XPMSSE MCM. Pay attention to what you're editing, placements are set individually for player (male/female) and NPC (male/female) [pic]. You can copy-paste the entire placement config set via the Actions menu.
Versions 1.5.0 and newer have support for alternate animations (aka style-fitting animations), enable it in the UI (Tools->Settings). Behavior data needs to be generated with FNIS, but you don't have to enable FNIS.esp for the sake of this plugin. Does not work with Nemesis.
UI
If you have issues opening the UI, configure your keys in the ini (ToggleKeys) and set OverrideToggleKeys=true. Keep in mind it can't be opened in a paused menu unless you set EnableInMenus=true in the INI.
This is just some basic stuff about the layout, I'll write an article with more details later. Import/export (File menu):
Save/load parts or the entire configuration. The files are written to and read from Data\SKSE\Plugins\IED\Exports.
Equipment - main equipment displays: 1h/2h sword, 1h/2h axe, mace, dagger, staff, bow, crossbow, shield, torch and ammo - anything configured here affects only displays.
Gear positioning - sheath positioning for equipped and displayed gear: split into two subcategories: 'Positions' (position, rotation, scale, visibility, offsets) and 'Placement' (gear node placement) - most of the time you'll want to use this to position stuff - if you need to make an adjustment which affects only the display, use the equipment view.
Each view is split into four classes:
Global - applies to all actors
Actor - applies to specific actors (references)
NPC (ActorBase) - applies to specific npcs
Race - applies to specific races
Each class holds a separate configuration for male and female. Equipment and gear positioning global classes are split into player and npc configs, you'll probably want to configure most stuff there.
Each view has an area where you can save/load presets which apply only to the config you're currently editing (both male and female are stored in the presets). Gear positioning presets include both position and node placement.
Known issues
Scabbard straps on weapons displayed on the left side stick out after installing 'XPMSSE Left Hand Sheath Rotation Fix' optional file from Simple Dual Sheath. Solution: use ImmersiveEquipmentMeshGenSynthesis patcher by SteveTownsend to automatically generate mirrored left-hand scabbard nodes for 1H sword/axe/mace/dagger meshes. Zip contents of the output folder and install it with your mod manager (place at the end of your load order).
Compatibility
If you use the XPMSSE racemenu plugin (or another plugin) to position your gear, turn it off and use this instead (navigate to View->Gear positioning). There's no hard conflict but the other plugin might clobber dynamic weapon position adjustments on actors. XPMSSE sets positions through skee64 (nioverride) and these settings may linger in the save even after the XPMSSE racemenu plugin is removed. They are applied after 3D loads so it may clobber IED positions after a race switch (for example after werewolf/vampire transformations).
A compatible (XP32) skeleton is required. Be careful with mods which overwrite races with custom skeletons.
Not compatible with other mods which display unequipped gear (you'd see duplicate items)
Mu Joint Fix is known to cause various issues with IED (reportedly with other display mods as well). Checks its mod page for possible solutions.