QuestActions for lightweight state gating, and the Quest Script Manager plugin for recording and replaying action sequences. The progress APIs cover richer requirement and diary reads.
Quest actions
QuestActions provides read-only quest state checks. All methods are static, never write to the client, and are safe to run off the client thread. When the player is logged out or unavailable they return a NOT_STARTED state instead of throwing.
Quest Helper integration
Shared consumers useQuestHelperSnapshotReader to reflect against the player’s installed official Quest Helper plugin and expose a flattened snapshot of its currently selected step. Questing Assistant and other snapshot consumers therefore depend on an installed, compatible official Quest Helper plugin for live state.
Quest Script Manager
Quest Script Manager (questscriptmanager config group, disabled by default) records selected player actions into an in-memory sequential script and plays supported steps back through the n3 interaction APIs.
Step model
QuestScript stores metadata, one QuestScriptConfig, and an ordered list of steps. Six concrete step types exist:
Every step can store descriptions, preconditions, postconditions, required and acquired items, priority, and estimated ticks.
Conditions
QuestConditionFactory builds preconditions and postconditions in Java: item quantity in inventory or inventory-plus-bank, distance from a WorldPoint, named quest state, varbit equality or minimum, nearby NPC or object by ID and radius, widget visibility, dialogue text containment, plus composite AND/OR and logical NOT. Attach them through the step builders. The panel has no condition editor.
Recording
The recorder listens to menu, dialogue, movement, and game-tick events and produces the step types above: NPC and object menu actions, inventory and item-on-target actions, dialogue continues and selections, and movement beyond the configured threshold. Actions buffer and flush periodically. The recorder does not infer alternate transformed IDs, quest stages, conditional branches, eligibility requirements, or item-acquisition policy; unknown widget actions record as a one-tick wait with descriptive text. The panel offers record, pause/resume, stop, undo, and add-wait controls.Playback
QuestScriptPlayer requests the shared input lock on start and releases it on pause, stop, reset, failure, and completion. Each running tick:
- checks the global tick limit;
- waits for the shared pacer when pacing is enabled;
- selects the current sequential step and checks its preconditions;
- executes the step;
- checks postconditions after a successful result (respecting the
verifyPostconditionsconfig field); - advances, retries, skips, or fails per the player configuration.
DISPATCHED means the action was accepted for dispatch; the player revisits the step and re-checks postconditions rather than treating dispatch as completion. Script completion means the sequential list was exhausted, not that the named quest reached a state.
Configuration
Two configuration objects exist and they are not the same:QuestScriptManagerConfig(active plugin config) controls pacing, retries, recording options, movement threshold, auto-stop, and logging.QuestScriptConfig(stored per-script) holds acquisition, banking, teleport use, failure policy, timeouts, and similar fields. The current playback path does not read these fields; they are metadata.