Skip to main content

Addon Integration Functions

Overview

The core.addons module provides functions for interacting with popular World of Warcraft addons. Each addon has its own sub-namespace. Always check is_loaded() before calling other functions in an addon's namespace, as the addon may not be installed or active.


Zygor

core.addons.zygor.is_loaded

Syntax
core.addons.zygor.is_loaded() -> boolean
Returns
  • boolean: Whether the Zygor addon is loaded and active.
Description

Returns whether the Zygor Guides addon is currently loaded. Always check this before calling other Zygor functions.


core.addons.zygor.has_current_step

Syntax
core.addons.zygor.has_current_step() -> boolean
Returns
  • boolean: Whether Zygor currently has an active step.
Description

Returns whether Zygor has a current guide step available. If no guide is active or the guide is complete, this returns false.


core.addons.zygor.get_current_step

Syntax
core.addons.zygor.get_current_step() -> table
Returns
  • table: Current Zygor step info containing step_text (string), goal_text (string), and other step properties.
Description

Returns detailed information about the current Zygor guide step, including the step text and goal text. Check has_current_step() before calling.


core.addons.zygor.get_current_stickies

Syntax
core.addons.zygor.get_current_stickies() -> table[]
Returns
  • table[]: Array of sticky step tables.
Description

Returns an array of Zygor sticky steps. Sticky steps are persistent guide objectives that remain visible alongside the current step.


core.addons.zygor.get_objectives

Syntax
core.addons.zygor.get_objectives() -> (number|string)[]
Returns
  • (number|string)[]: Array of objective values.
Description

Returns an array of objective values from the current Zygor guide step. Values may be numbers (for progress tracking) or strings (for text objectives).


core.addons.zygor.get_current_waypoint

Syntax
core.addons.zygor.get_current_waypoint() -> zygor_waypoint_info
Returns
  • zygor_waypoint_info: A table with the following fields:
    • map_id: integer - The map ID of the waypoint.
    • x: number - The X coordinate (0-1 range).
    • y: number - The Y coordinate (0-1 range).
    • dist: number - Distance to the waypoint.
    • title: string - Waypoint title text.
    • type: string - Waypoint type identifier.
    • goal_num: integer - Associated goal number.
    • is_manual: boolean - Whether the waypoint was manually placed.
Description

Returns the current active Zygor waypoint with its location, distance, and metadata.


core.addons.zygor.get_step_waypoints

Syntax
core.addons.zygor.get_step_waypoints() -> zygor_waypoint_info[]
Returns
  • zygor_waypoint_info[]: Array of waypoint tables (same structure as get_current_waypoint).
Description

Returns all waypoints associated with the current Zygor guide step. This may include multiple waypoints when a step has several objectives in different locations.


BigWigs

core.addons.bigwigs.is_loaded

Syntax
core.addons.bigwigs.is_loaded() -> boolean
Returns
  • boolean: Whether the BigWigs addon is loaded and active.
Description

Returns whether the BigWigs boss mod addon is currently loaded. Always check this before calling other BigWigs functions.


core.addons.bigwigs.has_active_bars

Syntax
core.addons.bigwigs.has_active_bars() -> boolean
Returns
  • boolean: Whether there are any active BigWigs timer bars.
Description

Returns whether BigWigs currently has any active timer bars displayed. Use this as a quick check before iterating over bars.


core.addons.bigwigs.get_bars

Syntax
core.addons.bigwigs.get_bars() -> bigwigs_bar_info[]
Returns
  • bigwigs_bar_info[]: Array of bar tables, each containing:
    • key: integer - Unique bar identifier.
    • text: string - The bar label text (ability name).
    • remaining: number - Seconds remaining on the timer.
    • duration: number - Total duration of the timer in seconds.
    • expire_time: number - Game time when the bar expires.
    • is_emphasized: boolean - Whether the bar is emphasized (important/imminent).
Description

Returns all active BigWigs timer bars. Each bar represents an upcoming boss ability or mechanic with timing information.


Conroc

core.addons.conroc.is_loaded

Syntax
core.addons.conroc.is_loaded() -> boolean
Returns
  • boolean: Whether the Conroc addon is loaded and active.
Description

Returns whether the Conroc rotation helper addon is currently loaded. Always check this before calling other Conroc functions.


core.addons.conroc.get_suggested_spells

Syntax
core.addons.conroc.get_suggested_spells() -> table
Returns
  • table: The suggested spell list from Conroc.
Description

Returns the list of spells that Conroc is currently suggesting for the player's rotation. These represent the optimal next abilities to use.


core.addons.conroc.get_suggested_utility_spells

Syntax
core.addons.conroc.get_suggested_utility_spells() -> table
Returns
  • table: The suggested utility spell list from Conroc.
Description

Returns the list of utility spells that Conroc is currently suggesting. These are non-rotational spells such as interrupts, defensives, or movement abilities.


Questie

core.addons.questie.is_loaded

Syntax
core.addons.questie.is_loaded() -> boolean
Returns
  • boolean: Whether the Questie addon is loaded and active.
Description

Returns whether the Questie quest helper addon is currently loaded. Always check this before calling other Questie functions.


core.addons.questie.get_quest_npc_ids

Syntax
core.addons.questie.get_quest_npc_ids() -> table
Returns
  • table: A table of NPC IDs related to the player's active quests.
Description

Returns a table of NPC IDs that are relevant to the player's current quests, as tracked by Questie. This can be used to identify quest targets in the game world.


TSM (TradeSkillMaster)

core.addons.tsm.is_loaded

Syntax
core.addons.tsm.is_loaded() -> boolean
Returns
  • boolean: Whether the TSM addon is loaded and active.
Description

Returns whether the TradeSkillMaster addon is currently loaded. Always check this before calling other TSM functions.


core.addons.tsm.get_item_prices

Syntax
core.addons.tsm.get_item_prices(item_id: integer) -> table

Parameters

  • item_id: integer - The item ID to look up prices for.
Returns
  • table: TSM price data for the item.
Description

Returns TSM price data for a specific item. The returned table contains various price points tracked by TSM such as market value, historical price, and sale averages.


core.addons.tsm.get_market_data

Syntax
core.addons.tsm.get_market_data(item_ids: integer[]) -> table

Parameters

  • item_ids: integer[] - Array of item IDs to look up market data for.
Returns
  • table: Bulk market data for all requested items.
Description

Returns market data for multiple items at once. More efficient than calling get_item_prices individually when you need data for many items.


core.addons.tsm.get_sniper_max_price

Syntax
core.addons.tsm.get_sniper_max_price(item_id: integer) -> number

Parameters

  • item_id: integer - The item ID to check.
Returns
  • number: The sniper threshold price in copper.
Description

Returns the maximum price threshold for TSM's sniper feature for the given item. Prices are in copper (1 gold = 10000 copper).


core.addons.tsm.get_shopping_max_price

Syntax
core.addons.tsm.get_shopping_max_price(item_id: integer) -> number

Parameters

  • item_id: integer - The item ID to check.
Returns
  • number: The shopping maximum price in copper.
Description

Returns the maximum shopping price for an item as configured in TSM shopping operations. Prices are in copper.


core.addons.tsm.get_auctioning_prices

Syntax
core.addons.tsm.get_auctioning_prices(item_id: integer) -> table

Parameters

  • item_id: integer - The item ID to check.
Returns
  • table: A table containing min_price, normal_price, and max_price fields (all in copper).
Description

Returns the auctioning operation prices for an item. The returned table contains the minimum, normal, and maximum posting prices as configured in TSM auctioning operations.


core.addons.tsm.get_shopping_restock_quantity

Syntax
core.addons.tsm.get_shopping_restock_quantity(item_id: integer) -> integer

Parameters

  • item_id: integer - The item ID to check.
Returns
  • integer: The restock quantity needed.
Description

Returns how many of an item need to be purchased to reach the restock target as defined in TSM shopping operations.


Details

core.addons.details.is_loaded

Syntax
core.addons.details.is_loaded() -> boolean
Returns
  • boolean: Whether the Details addon is loaded and active.
Description

Returns whether the Details! Damage Meter addon is currently loaded. Always check this before calling other Details functions.


core.addons.details.get_combat_info

Syntax
core.addons.details.get_combat_info(segment_id?: integer) -> table

Parameters

  • segment_id (optional): integer - The segment ID. 0 = current (default), -1 = overall, 1-25 = specific segment.
Returns
  • table: Combat information with the following fields:
FieldTypeDescription
combat_timenumberCombat duration in seconds
combat_namestringThe combat/encounter name
total_damagenumberTotal damage dealt in the segment
total_healingnumberTotal healing done in the segment
Description

Returns summary information about a combat segment, including total damage, healing, and duration.


core.addons.details.get_damage_done

Syntax
core.addons.details.get_damage_done(segment_id?: integer) -> table[]

Parameters

  • segment_id (optional): integer - The segment ID. 0 = current (default), -1 = overall, 1-25 = specific segment.
Returns
  • table[]: Array of actor entries with the following fields:
FieldTypeDescription
namestringActor name
class_idintegerClass ID
totalnumberTotal damage dealt
per_secondnumberDamage per second (DPS)
is_playerbooleanWhether the actor is a player
is_group_memberbooleanWhether the actor is in the group
unitgame_object|nilThe game object if found in the world
Description

Returns per-actor damage done data for a combat segment. The unit field is resolved by matching the actor name against visible game objects.


core.addons.details.get_healing_done

Syntax
core.addons.details.get_healing_done(segment_id?: integer) -> table[]

Parameters

  • segment_id (optional): integer - The segment ID. 0 = current (default), -1 = overall, 1-25 = specific segment.
Returns
  • table[]: Array of actor entries (same structure as get_damage_done).
Description

Returns per-actor healing done data for a combat segment.


core.addons.details.get_damage_taken

Syntax
core.addons.details.get_damage_taken(segment_id?: integer) -> table[]

Parameters

  • segment_id (optional): integer - The segment ID. 0 = current (default), -1 = overall, 1-25 = specific segment.
Returns
  • table[]: Array of actor entries (same structure as get_damage_done).
Description

Returns per-actor damage taken data for a combat segment.


core.addons.details.get_segments

Syntax
core.addons.details.get_segments() -> table[]
Returns
  • table[]: Array of segment entries with the following fields:
FieldTypeDescription
indexintegerThe segment index
namestringThe segment name
durationnumberThe segment duration in seconds
Description

Returns all available combat segments from the Details addon.


Timeline Reminders

core.addons.timeline_reminders.is_loaded

Syntax
core.addons.timeline_reminders.is_loaded() -> boolean
Returns
  • boolean: Whether the Timeline Reminders addon is loaded and active.
Description

Returns whether the Timeline Reminders addon is currently loaded. Always check this before calling other Timeline Reminders functions.


core.addons.timeline_reminders.get_reminders

Syntax
core.addons.timeline_reminders.get_reminders(encounter_id: integer, difficulty_id: integer) -> table[]

Parameters

  • encounter_id: integer - The encounter ID.
  • difficulty_id: integer - The difficulty ID.
Returns
  • table[]: Array of reminder entries with the following fields:
FieldTypeDescription
trigger_timenumberTime in seconds when the reminder triggers
durationnumberDuration of the reminder in seconds
lingernumberLinger time after the reminder fires
hide_on_usebooleanWhether to hide after triggering
regionstringDisplay region
display_typestringDisplay type
spell_idintegerAssociated spell ID
textstringReminder text
load_typestringLoad condition type
load_classstringClass load condition
load_specintegerSpecialization load condition
load_rolestringRole load condition
load_namestringName load condition
countdown_enabledbooleanWhether countdown is enabled
countdown_startintegerCountdown start time in seconds
Description

Returns all configured reminders for a specific encounter and difficulty. Each reminder includes trigger timing, display settings, and load conditions for filtering by class/spec/role.


MaxDps

core.addons.maxdps.is_loaded

Syntax
core.addons.maxdps.is_loaded() -> boolean
Returns
  • boolean: Whether the MaxDps addon is loaded and active.
Description

Returns whether the MaxDps rotation helper addon is currently loaded. Always check this before calling other MaxDps functions.

Example Usage

if core.addons.maxdps.is_loaded() then
local spell_id = core.addons.maxdps.get_next_spell()
core.log("MaxDps suggests spell: " .. spell_id)
end

core.addons.maxdps.get_next_spell

Syntax
core.addons.maxdps.get_next_spell() -> integer
Returns
  • integer: The spell ID of the next recommended ability from MaxDps.
Description

Returns the spell ID that MaxDps is currently recommending as the next ability to cast. This is the spell that MaxDps highlights on the action bars.

Example Usage

if core.addons.maxdps.is_loaded() then
local next_spell = core.addons.maxdps.get_next_spell()
if next_spell > 0 then
core.log("Next recommended spell ID: " .. next_spell)
end
end

Swing Timer

core.addons.swing_timer.is_loaded

Syntax
core.addons.swing_timer.is_loaded() -> boolean
Returns
  • boolean: Whether the Swing Timer addon is loaded and active.
Description

Returns whether the Swing Timer addon is currently loaded. Always check this before calling other Swing Timer functions.

Example Usage

if core.addons.swing_timer.is_loaded() then
local info = core.addons.swing_timer.get_player_ranged_info()
core.log("Last swing: " .. info.last_swing)
end

core.addons.swing_timer.get_player_ranged_info

Syntax
core.addons.swing_timer.get_player_ranged_info() -> swing_timer_ranged_info
Returns
  • table: A table containing the player's ranged swing timer data:
FieldTypeDescription
expiration_timenumberThe time when the current auto-shot expires
last_swingnumberThe time of the last ranged swing
auto_shot_cast_timenumberThe cast time of the auto-shot
Description

Returns the player's ranged auto-shot swing timer information. Useful for tracking auto-shot timing in ranged rotations to avoid clipping auto-shots.

Example Usage

if core.addons.swing_timer.is_loaded() then
local info = core.addons.swing_timer.get_player_ranged_info()
local current_time = core.time()
local time_until_next = info.expiration_time - current_time
if time_until_next > 0 then
core.log("Next auto-shot in: " .. string.format("%.2f", time_until_next) .. "s")
end
end

core.addons.swing_timer.get_player_mainhand_info

Syntax
core.addons.swing_timer.get_player_mainhand_info() -> swing_timer_hand_info
Returns
  • table: Main-hand swing timer info.
FieldTypeDescription
expiration_timenumberThe time when the current melee swing expires
last_swingnumberThe time of the last melee swing
swing_speednumberCurrent melee swing speed
base_swing_speednumberBase melee swing speed

core.addons.swing_timer.get_player_offhand_info

Syntax
core.addons.swing_timer.get_player_offhand_info() -> swing_timer_hand_info|nil
Returns
  • table|nil: Off-hand swing timer info, or nil when the player is not dual wielding.

The returned table has the same fields as get_player_mainhand_info.


Arena Core

core.addons.arena_core.is_loaded

Syntax
core.addons.arena_core.is_loaded() -> boolean
Returns
  • boolean: Whether Arena Core is loaded and available.
Description

Returns whether Arena Core data can be read.


core.addons.arena_core.get_frame_info

Syntax
core.addons.arena_core.get_frame_info(arena_index) -> arena_core_frame_info|nil

Parameters

  • arena_index: integer - The arena frame index.
Returns
  • table|nil: Arena frame info, or nil when unavailable.
FieldTypeDescription
unitstringArena unit token, such as arena1
idintegerArena frame ID
classstringClass name
spec_idintegerSpecialization ID
spec_icon_texturestringSpecialization icon texture path
class_iconintegerClass icon texture ID
spec_iconintegerSpecialization icon texture ID

core.addons.arena_core.get_class

Syntax
core.addons.arena_core.get_class(arena_index) -> string

Parameters

  • arena_index: integer - The arena frame index.
Returns
  • string: The class name, or an empty string when unavailable.

core.addons.arena_core.get_spec_id

Syntax
core.addons.arena_core.get_spec_id(arena_index) -> integer

Parameters

  • arena_index: integer - The arena frame index.
Returns
  • integer: The specialization ID, or 0 when unavailable.

Method Dungeon Tools

core.addons.mdt.is_loaded

Syntax
core.addons.mdt.is_loaded() -> boolean
Returns
  • boolean: Whether Method Dungeon Tools is loaded and available.

core.addons.mdt.get_current_preset_meta

Syntax
core.addons.mdt.get_current_preset_meta() -> mdt_preset_meta|nil
Returns
  • table|nil: Current MDT preset metadata, or nil when unavailable.
FieldTypeDescription
textstringCurrent preset display text
current_dungeon_idxintegerCurrent MDT dungeon index
current_pullintegerCurrent pull index
current_sublevelintegerCurrent dungeon sublevel
weekintegerConfigured affix week
difficultyintegerConfigured difficulty
uidstringPreset UID

core.addons.mdt.get_pull_count

Syntax
core.addons.mdt.get_pull_count() -> integer
Returns
  • integer: Number of pulls in the current preset.

core.addons.mdt.get_pull

Syntax
core.addons.mdt.get_pull(pull_idx) -> mdt_pull|nil

Parameters

  • pull_idx: integer - The pull index.
Returns
  • table|nil: Pull data, or nil when unavailable.
FieldTypeDescription
colorstringPull color
enemiestable[]Entries containing enemy_idx and clones

Each enemies entry contains enemy_idx (integer) and clones (integer[]).


core.addons.mdt.get_object_count

Syntax
core.addons.mdt.get_object_count() -> integer
Returns
  • integer: Number of MDT map objects in the current preset.

core.addons.mdt.get_object

Syntax
core.addons.mdt.get_object(obj_idx) -> mdt_object|nil

Parameters

  • obj_idx: integer - The object index.
Returns
  • table|nil: Map object data, or nil when unavailable.
FieldTypeDescription
kindstringline, arrow, note, or unknown
colorstringObject color
note_textstringNote text
note_xnumberNote X coordinate
note_ynumberNote Y coordinate
arrow_anglenumberArrow angle
pointsnumber[]Flat array of object points

core.addons.mdt.get_dungeon_enemy_count

Syntax
core.addons.mdt.get_dungeon_enemy_count(dungeon_idx) -> integer

Parameters

  • dungeon_idx: integer - The MDT dungeon index.
Returns
  • integer: Number of enemies in the dungeon's MDT data.

core.addons.mdt.get_dungeon_enemy_info

Syntax
core.addons.mdt.get_dungeon_enemy_info(dungeon_idx, enemy_idx) -> mdt_dungeon_enemy_info|nil

Parameters

  • dungeon_idx: integer - The MDT dungeon index.
  • enemy_idx: integer - The enemy index.
Returns
  • table|nil: Static dungeon enemy info, or nil when unavailable.
FieldTypeDescription
namestringEnemy name
idintegerNPC ID
countintegerEnemy count value
healthintegerEnemy health value
scalenumberEnemy scale
display_idintegerDisplay ID
creature_typestringCreature type
levelintegerEnemy level
is_bossbooleanWhether this enemy is a boss
encounter_idintegerEncounter ID
instance_idintegerInstance ID
clone_countintegerNumber of clone placements

core.addons.mdt.get_dungeon_enemy_clone

Syntax
core.addons.mdt.get_dungeon_enemy_clone(dungeon_idx, enemy_idx, clone_idx) -> mdt_dungeon_enemy_clone|nil

Parameters

  • dungeon_idx: integer - The MDT dungeon index.
  • enemy_idx: integer - The enemy index.
  • clone_idx: integer - The clone index.
Returns
  • table|nil: Clone placement info, or nil when unavailable.
FieldTypeDescription
xnumberClone X coordinate
ynumberClone Y coordinate
gintegerClone group
sublevelintegerDungeon sublevel
scalenumberClone scale

Complete Examples

Checking BigWigs Bars for Upcoming Mechanics

local function check_boss_timers()
if not core.addons.bigwigs.is_loaded() then
return
end

if not core.addons.bigwigs.has_active_bars() then
return
end

local bars = core.addons.bigwigs.get_bars()
for _, bar in ipairs(bars) do
if bar.remaining < 3.0 then
core.log("IMMINENT: " .. bar.text .. " in " .. string.format("%.1f", bar.remaining) .. "s")
end

if bar.is_emphasized then
core.log("IMPORTANT: " .. bar.text .. " (" .. string.format("%.1f", bar.remaining) .. "s)")
end
end
end

TSM Price Checking for Auction House Decisions

local function evaluate_item(item_id)
if not core.addons.tsm.is_loaded() then
core.log("TSM is not loaded")
return
end

local prices = core.addons.tsm.get_item_prices(item_id)
if not prices then
core.log("No price data for item: " .. item_id)
return
end

local auctioning = core.addons.tsm.get_auctioning_prices(item_id)
if auctioning then
local min_gold = auctioning.min_price / 10000
local normal_gold = auctioning.normal_price / 10000
local max_gold = auctioning.max_price / 10000
core.log(string.format("Auctioning - Min: %.1fg, Normal: %.1fg, Max: %.1fg", min_gold, normal_gold, max_gold))
end

local sniper_max = core.addons.tsm.get_sniper_max_price(item_id)
if sniper_max then
core.log(string.format("Sniper threshold: %.1fg", sniper_max / 10000))
end

local restock = core.addons.tsm.get_shopping_restock_quantity(item_id)
if restock and restock > 0 then
core.log("Need to restock: " .. restock .. " units")
end
end

-- Example: Check price data for Draconium Ore (item ID 190312)
evaluate_item(190312)