Skip to content
Version 2.11.0
↓ Get the launcher

ILoadout interface

Read + apply the player’s saved in-game loadouts (class + gear + spec + modules). Applying drives the game’s own switch and surfaces the game’s result; it never bypasses game-side validation (combat lock, profession/weapon match).

public interface ILoadout
name description
CurrentIndex { get; } Index of the currently-active loadout, or null if none/unknown.
IsAvailable { get; } True once the game-side loadout API has been resolved and is callable.
LiveState { get; } The local player’s LIVE class + talents (never from a saved plan), or null until the live read resolves in-world. Refreshed with the loadout data; a talent respec re-fires the refresh via the framework’s dirty-delta trigger, so re-read after SelfGearChanged. Same threading rule as GetState: never read from the SelfGearChanged handler itself (network thread) — flag and read on the game tick. The value read immediately after the event may still be pre-change; the refresh lands within about a second (cooldown-coalesced), which is fine for snapshot-at-archive use.
event LiveStateChanged Raised on the game tick AFTER the framework re-read the local player’s LIVE build state and the re-read actually CHANGED what this service serves — equipped gear/module slots, class, talent stage/nodes, the equipped Battle Imagine pair, or the Deep-Slumber Psychoscope state (GetState). An identical re-read raises nothing.
event LoadoutsChanged Raised when the saved-loadout list or the current selection changes.
ApplyAsync(…) Triggers the game’s native switch to the loadout identified by index.
GetSlots() The saved loadout slots, in the game’s dropdown order. Empty until IsAvailable.