-------------------------------------------------------------------------- -- -- LibClassicInspector by kebabstorm -- for Classic/TBC/WOTLK -- -- API Version 9 (2022-12-11) -- -------------------------------------------------------------------------- -------------------------------------------------------------------------- -- -- LIBRARY CALLBACKS -- -------------------------------------------------------------------------- -------------------------------------------------------------------------- -- ClassicInspector.RegisterCallback(addOnName, "INVENTORY_READY", inventoryReadyCallback) -- ClassicInspector.RegisterCallback(addOnName, "TALENTS_READY", talentsReadyCallback) -- ClassicInspector.RegisterCallback(addOnName, "ACHIEVEMENTS_READY", achievementsReadyCallback) -- ClassicInspector.RegisterCallback(addOnName, "GLYPHS_READY", glyphsReadyCallback) -- -- Note -- The callbacks are useful if you need to present data the instant it becomes available, -- but in most cases these aren't needed and using the data request functions is enough. -- -- Parameters -- @string addOnName - your addon unique name -- @string event - event name (e.g. "INVENTORY_READY") -- @function callbackFunc - your callback function -- -- Returns -- @string event - event name -- @string guid - player guid -- @boolean isInspect - was the result of inspection -- @string [unit] - unit token (optional, can return nil if not available) -- local function inventoryReadyCallback(event, guid, isInspect, unit) local function talentsReadyCallback(event, guid, isInspect, unit) local function achievementsReadyCallback(event, guid, isInspect, unit) local function glyphsReadyCallback(event, guid, isInspect, unit) -------------------------------------------------------------------------- -- -- LIBRARY FUNCTIONS -- -------------------------------------------------------------------------- -------------------------------------------------------------------------- -- ClassicInspector:GetSpecializationName(class, tabIndex, localized) -- -- Parameters -- @string class - english class name in uppercase e.g. "WARRIOR" -- @number tabIndex - talent tab index (1-3) -- @boolean localized - return localized name instead of english name -- -- Returns -- @string specName - specialization name e.g. "Retribution" -- function lib:GetSpecializationName(class, tabIndex) return specName -------------------------------------------------------------------------- -- ClassicInspector:GetNumTalentsByClass(class, tabIndex) -- -- Parameters -- @string class - english class name in uppercase e.g. "WARRIOR" -- @number tabIndex - talent tab index (1-3) -- -- Returns -- @number numTalents - number of talents in tab -- function lib:GetNumTalentsByClass(class, tabIndex) return numTalents -------------------------------------------------------------------------- -- ClassicInspector:GetSpecialization(unitorguid[, group]) -- -- Parameters -- @string unitorguid - unit token or guid -- @number [group] - talent group or the current active talent group if nil -- -- Returns -- @number specIndex - main specialization index (1-3) -- @number pointsSpent - talent points spent to the main spec -- function lib:GetSpecialization(unitorguid, _group) return specIndex, mostPoints -------------------------------------------------------------------------- -- ClassicInspector:GetTalentPoints(unitorguid[, group]) -- -- Parameters -- @string unitorguid - unit token or guid -- @number [group] - talent group or the current active talent group if nil -- -- Returns -- @number pointsSpent1 - talent points spent to tab 1 -- @number pointsSpent2 - talent points spent to tab 2 -- @number pointsSpent3 - talent points spent to tab 3 -- function lib:GetTalentPoints(unitorguid, _group) return pointsSpent1, pointsSpent2, pointsSpent3 -------------------------------------------------------------------------- -- ClassicInspector:GetActiveTalentGroup(unitorguid) -- -- Parameters -- @string unitorguid - unit token or guid -- -- Returns -- @number group - active talent group (1-2) -- function lib:GetActiveTalentGroup(unitorguid) return group -------------------------------------------------------------------------- -- ClassicInspector:GetTalentInfo(unitorguid, tabIndex, talentIndex[, group]) -- -- Note -- talentID is currently unimplemented and returns 0 -- -- Parameters -- @string unitorguid - unit token or guid -- @number tabIndex - talent tab index (1-3) -- @number talentIndex - ranging from 1 to GetNumTalents(tabIndex). counted from left to right, top to bottom. -- @number [group] - talent group or the current active talent group if nil -- -- Returns -- @string name - name of the talent -- @number iconTexture - fileID of icon texture -- @number tier - the row/tier that the talent sits on -- @number column - the column that the talent sits on -- @number rank - the current amount of talent points for a talent -- @number maxRank - the maximum amount of talent points for a talent -- @number isExceptional - 1 if the talent is the ultimate talent, e.g. Lightwell, otherwise returns nil -- @number available - always 1 -- @number talentID - talent ID -- function lib:GetTalentInfo(unitorguid, tabIndex, talentIndex, _group) return name, iconTexture, tier, column, rank, maxRank, isExceptional, available, id -------------------------------------------------------------------------- -- ClassicInspector:GetTalentInfoByClass(class, tabIndex, talentIndex) -- -- Note -- talentID is currently unimplemented and returns 0 -- -- Parameters -- @string class - english class name in uppercase e.g. "WARRIOR" -- @number tabIndex - talent tab index (1-3) -- @number talentIndex - ranging from 1 to GetNumTalents(tabIndex). counted from left to right, top to bottom. -- -- Returns -- @string name - name of the talent -- @number iconTexture - fileID of icon texture -- @number tier - the row/tier that the talent sits on -- @number column - the column that the talent sits on -- @number rank - always 0 -- @number maxRank - the maximum amount of talent points for a talent -- @number isExceptional - 1 if the talent is the ultimate talent, e.g. Lightwell, otherwise returns nil -- @number available - always 1 -- @number talentID - talent ID -- function lib:GetTalentInfoByClass(class, tabIndex, talentIndex) return name, texture, tier, column, 0, maxRank, isExceptional, available, id -------------------------------------------------------------------------- -- ClassicInspector:GetInventoryItemID(unitorguid, slot) -- -- Parameters -- @string unitorguid - unit token or guid -- @number inventorySlot - inventory slot (1-19) -- -- Returns -- @number itemID - inventory item id -- function lib:GetInventoryItemID(unitorguid, slot) return itemID -------------------------------------------------------------------------- -- ClassicInspector:GetInventoryItemLink(unitorguid, slot) -- -- Parameters -- @string unitorguid - unit token or guid -- @number inventorySlot - inventory slot (1-19) -- -- Returns -- @string itemLink - inventory item link (can return nil if item is not cached yet) -- function lib:GetInventoryItemLink(unitorguid, slot) return itemLink -------------------------------------------------------------------------- -- ClassicInspector:GetInventoryItemMixin(unitorguid, slot) -- -- Parameters -- @string unitorguid - unit token or guid -- @number inventorySlot - inventory slot (1-19) -- -- Returns -- @ItemMixin item - inventory item ItemMixin -- function lib:GetInventoryItemMixin(unitorguid, slot) return item -------------------------------------------------------------------------- -- ClassicInspector:GetInventoryItemIDTable(unitorguid) -- -- Parameters -- @string unitorguid - unit token or guid -- -- Returns -- @table inventoryTable - inventory item id table (1-19) -- function lib:GetInventoryItemIDTable(unitorguid) return inventoryTable -------------------------------------------------------------------------- -- ClassicInspector:GetTalentRanksTable(unitorguid) -- -- Parameters -- @string unitorguid - unit token or guid -- -- Returns -- @table talentsTable - talent ranks table -- function lib:GetTalentRanksTable(unitorguid) return talentsTable -------------------------------------------------------------------------- -- ClassicInspector:GetLastCacheTime(unitorguid) -- -- Parameters -- @string unitorguid - unit token or guid -- -- Returns -- @number talentsTime - time when talents were last cached or 0 if not found -- @number inventoryTime - time when inventory was last cached or 0 if not found -- @number achievementsTime - time when achievements were last cached or 0 if not found -- @number glyphsTime - time when glyphs were last cached or 0 if not found -- function lib:GetLastCacheTime(unitorguid) return talentsTime, inventoryTime, achievementsTime, glyphsTime -------------------------------------------------------------------------- -- ClassicInspector:PlayerGUIDToUnitToken(unit) -- -- Parameters -- @string guid - player guid -- -- Returns -- @string unit - player unit token -- function lib:PlayerGUIDToUnitToken(guid) return unit -------------------------------------------------------------------------- -- ClassicInspector:IsClassic() -- -- Returns -- @boolean isClassic - client version is Classic "Vanilla": Means Classic Era and its seasons like SoM (1.x.x) -- function lib:IsClassic() return isClassic -------------------------------------------------------------------------- -- ClassicInspector:IsTBC() -- -- Returns -- @boolean isTBC - client version is Classic TBC (2.x.x) -- function lib:IsTBC() return isTBC -------------------------------------------------------------------------- -- ClassicInspector:IsWotlk() -- -- Returns -- @boolean isWotlk - client version is Classic Wotlk (3.x.x) -- function lib:IsWotlk() return isWotlk -------------------------------------------------------------------------- -- ClassicInspector:CanInspect(unitorguid) -- -- Note -- This function is provided for special cases and does not need to be used in normal operation. -- Inspections are handled automatically by the library and do not need to be handled manually. -- -- Parameters -- @string unitorguid - unit token or guid of target to check -- -- Returns -- @boolean canInspect - can target unit be inspected -- function lib:CanInspect(unitorguid) return canInspect -------------------------------------------------------------------------- -- ClassicInspector:DoInspect(unitorguid) -- -- Note -- This function is provided for special cases and does not need to be used in normal operation. -- Inspections are handled automatically by the library and do not need to be handled manually. -- -- Parameters -- @string unitorguid - unit token or guid of inspection target -- -- Returns -- @number status - inspection status -- == 0 : target cannot be inspected -- == 1 : instant inspection -- == 2 : queued inspection -- function lib:DoInspect(unitorguid) return status -------------------------------------------------------------------------- -- ClassicInspector:Version() -- -- Returns -- @number version - library version -- function lib:Version() return version -------------------------------------------------------------------------- -- [WOTLK] -- ClassicInspector:GetTotalAchievementPoints(unitorguid) -- -- Parameters -- @string unitorguid - unit token or guid -- -- Returns -- @number total_points - total achievement points -- function lib:GetTotalAchievementPoints(unitorguid) return total_points -------------------------------------------------------------------------- -- [WOTLK] -- ClassicInspector:GetAchievementInfo(unitorguid, achievementID) -- -- Parameters -- @string unitorguid - unit token or guid -- @number achievementID - achievement ID (type=achievement) -- -- Returns -- @boolean completed - is achievement completed -- @number month - month of completion -- @number day - day of completion -- @number year - year of completion -- function lib:GetAchievementInfo(unitorguid, achievementID) return completed, month, day, year -------------------------------------------------------------------------- -- [WOTLK] -- ClassicInspector:GetStatistic(unitorguid, achievementID) -- -- Parameters -- @string unitorguid - unit token or guid -- @number achievementID - achievement ID (type=statistic) -- -- Returns -- @string value - value of the statistic as displayed in-game -- function lib:GetStatistic(unitorguid, achievementID) return value -------------------------------------------------------------------------- -- [WOTLK] -- ClassicInspector:AddTrackedAchievement(achievementID) -- -- Note -- It is not required to use this, as using the GetAchievementInfo/GetStatistic functions -- will automatically add the requested achievement to the tracking list. -- -- Parameters -- @number achievementID - achievement ID (type=achievement/statistic) -- -- Returns -- @boolean success - achievementID is valid and added to tracking list -- @boolean isStatistic - is achievement type a statistic -- function lib:AddTrackedAchievement(achievementID) return success, isStatistic -------------------------------------------------------------------------- -- [WOTLK] -- ClassicInspector:GetGlyphSocketInfo(unitorguid, socketID[, group]) -- -- Note -- iconFile is currently implemented only for the local player and returns 0 when requesting -- info for other players -- -- Parameters -- @string unitorguid - unit token or guid -- @number socketID - socket index to query, ranging from 1 to 6 (NUM_GLYPH_SLOTS) -- @number [group] - talent group or the current active talent group if nil -- -- Returns -- @boolean enabled - true if the socket has a glyph inserted -- @number glyphType - type of glyph accepted by this socket (GLYPHTYPE_MAJOR=1 or GLYPHTYPE_MINOR=2) -- @number glyphSpellID - spell ID of the socketed glyph -- @number iconFile - file ID of the sigil icon associated with the socketed glyph -- function lib:GetGlyphSocketInfo(unitorguid, socketID, _group) return enabled, glyphType, glyphSpellID, iconFile -------------------------------------------------------------------------- -- [WOTLK] -- ClassicInspector:HasGlyph(unitorguid, glyphSpellID[, group]) -- -- Parameters -- @string unitorguid - unit token or guid -- @number glyphSpellID - spell ID of the socketed glyph -- @number [group] - talent group or the current active talent group if nil -- -- Returns -- @boolean enabled - true if the player has socketed glyph with matching ID -- function lib:HasGlyph(unitorguid, glyphSpellID, _group) return enabled -------------------------------------------------------------------------- -- [WOTLK] -- ClassicInspector:GetGlyphs(unitorguid[, group]) -- -- Parameters -- @string unitorguid - unit token or guid -- @number [group] - talent group or the current active talent group if nil -- -- Returns -- @number glyphSpellID1 - spell ID of glyph in socket 1 (MAJOR) -- @number glyphSpellID2 - spell ID of glyph in socket 2 (MINOR) -- @number glyphSpellID3 - spell ID of glyph in socket 3 (MINOR) -- @number glyphSpellID4 - spell ID of glyph in socket 4 (MAJOR) -- @number glyphSpellID5 - spell ID of glyph in socket 5 (MINOR) -- @number glyphSpellID6 - spell ID of glyph in socket 6 (MAJOR) -- function lib:GetGlyphs(unitorguid, _group) return glyphSpellID1, glyphSpellID2, glyphSpellID3, glyphSpellID4, glyphSpellID5, glyphSpellID6