To be able to get data from TC, just call (in order of speed): TheoryCraft_GetSpellDataByFrame(tooltip) TheoryCraft_GetSpellDataByName(spellname, spellrank) TheoryCraft_GetSpellDataByDescription(description) (extremely slow if no data for that spell is already generated) If there is data for the spell, it will be returned. If not it'll generate it (if possible), and save it so that future accesses are quick (until the table needs to be reset, eg on equipping more spell damage gear). The following is an example to get the minimum damage done by a spell: local spelldata = TheoryCraft_GetSpellDataByName("Immolate", 5) Print(spelldata.mindamage) All values are returned unrounded. Please Note that TheoryCraft_GetSpellDataByDescription is extremely slow at generating data if it's not already present in the array, as it has to set tooltips for every single spell in your spellbook and compare them to the description given. I do not expect this function to be used much. The following are accessible (or nil, depending on the spell) description mindamage maxdamage critdmgchance critdmgmin critdmgmax critdmgminminusignite critdmgmaxminusignite averagedamnocrit averagedam manacost (true mana cost, includes regen) basemanacost dpm withdotdpm dps withdotdps maxoomdam maxevocoomdam sealunbuffed sealbuffed nextagidam nextcritdam nexthitdam nextpendam nextagidps (hunter's autoshoot only) nextcritdps (hunter's autoshoot only) nexthitdps (hunter's autoshoot only) nextagidamequive nextcritdamequive nexthitdamequive nextpendamequive nextagidpsequive (hunter's autoshoot only) nextcritdpsequive (hunter's autoshoot only) nexthitdpsequive (hunter's autoshoot only) rotationdps regendam icregendam damcoef damcoef2 (dot coef) plusdam finaldam dameff penetration dpsafterresists lifetapdps lifetapdpm showonbutton (if a tooltip is generated due to mouseover, but it is not supposed to be shown on buttons, this will be false) And all of the above with dam/dmg replaced by heal, eg minheal, maxheal, hpm When any of the above values change, or action bars change, TC will reset the table TheoryCraft_UpdatedButtons to blank. So if you want to know whenever it gets changed, simply set a unique key in the table to true, and every OnUpdate check that it's still true. When it isn't, a spell's data has changed. You shouldn't need to regenerate the data, but if so call TheoryCraft_GenerateAll(). Other global functions include :- TheoryCraft_UpdateTalents(genall) TheoryCraft_UpdateGear(target, genall) If target ~= "player", will do nothing TheoryCraft_UpdateBuffs(target, genall) TheoryCraft_LoadStats() If genall is true on any of the above, then TheoryCraft_LoadStats() and TheoryCraft_GenerateAll() will not be called even if they need to be. Normally these will only be called if an array changes, however you may wish to call UpdateGear, and UpdateBuffs without wanting each to call GenerateAll(), so in that case you would pass genall as true in both cases. If genall is false they'll call LoadStats as well, and call GenerateAll() automatically if either the stats array or the buffs/gear array changes. Finally there is a global function called TheoryCraft_AddToCustom(linkid). Just pass this one an item link and it'll add it to the custom outfit. If you need anymore help/info or any modifications just contact me on curse :). - Aelian