I have used the traits functions and it works (to tell me what traits you have and at what rank)
Basically you go:
Code:
local lConfigID = C_ClassTalents.GetActiveConfigID();
local lConfigInfo = C_Traits.GetConfigInfo(lConfigID);
local lTreeIDs = lConfigInfo["treeIDs"];
for i = 1, #lTreeIDs do
for _, lNodeID in pairs(C_Traits.GetTreeNodes(lTreeIDs[i])) do
local lNodeInfo = C_Traits.GetNodeInfo(lConfigID, lNodeID);
local activeEntry = lNodeInfo.activeEntry;
local activeRank = lNodeInfo.activeRank;
if ( activeEntry and activeRank > 0 ) then
local activeEntryID = activeEntry.entryID;
local lEntryInfo = C_Traits.GetEntryInfo(lConfigID,activeEntryID);
--if ( lEntryInfo ) then
local lDefinitionID = lEntryInfo["definitionID"];
--BA_Data["function LogTextLine"](string.format("def ID:%s",tostring(lDefinitionID)));
local lDefinitionInfo = C_Traits.GetDefinitionInfo(lDefinitionID);
--BA_Data["function LogTextLine"](string.format("def info:%s",tostring(lDefinitionInfo)));
local spellID = lDefinitionInfo["spellID"];
local spellName = GetSpellInfo(spellID);
lTalents[spellName] = activeRank;