if not Nampower then return end if not Nampower:HasMinimumVersion(2, 14, 0) then return end local function GetSpellMod(num) local modifierTypes = { [0] = "DAMAGE", [1] = "DURATION", [2] = "THREAT", [3] = "ATTACK_POWER", [4] = "CHARGES", [5] = "RANGE", [6] = "RADIUS", [7] = "CRITICAL_CHANCE", [8] = "ALL_EFFECTS", [9] = "NOT_LOSE_CASTING_TIME", [10] = "CASTING_TIME", [11] = "COOLDOWN", [12] = "SPEED", [14] = "COST", [15] = "CRIT_DAMAGE_BONUS", [16] = "RESIST_MISS_CHANCE", [17] = "JUMP_TARGETS", [18] = "CHANCE_OF_SUCCESS", [19] = "ACTIVATION_TIME", [20] = "EFFECT_PAST_FIRST", [21] = "CASTING_TIME_OLD", [22] = "DOT", [23] = "HASTE", [24] = "SPELL_BONUS_DAMAGE", [27] = "MULTIPLE_VALUE", [28] = "RESIST_DISPEL_CHANCE" } return modifierTypes[num] or "UNKNOWN" end function PrintTable(tbl, indent) indent = indent or 0 local prefix = string.rep(" ", indent) for k, v in pairs(tbl) do if type(v) == "table" then print(prefix .. tostring(k) .. ":") PrintTable(v, indent + 1) else print(prefix .. tostring(k) .. ": " .. tostring(v)) end end end if CombatLogAdd then function PrintTableToCombatLog(tbl, indent) indent = indent or 0 local prefix = string.rep(" ", indent) for k, v in pairs(tbl) do if type(v) == "table" then CombatLogAdd(prefix .. tostring(k) .. ":") PrintTableToCombatLog(v, indent + 1) else CombatLogAdd(prefix .. tostring(k) .. ": " .. tostring(v)) end end end function LogUnitData(unit) local data = GetUnitData(unit) if data then PrintTableToCombatLog(data) else print("No unit data available") end end function LogSpellData(spellId) local data = GetSpellRec(spellId) if data then PrintTableToCombatLog(data) else print("No spell data available") end end end function PrintBuffs(unit) for i = 1, 32 do local texture, stacks, spellId = UnitBuff(unit, i) if not texture then break end print(tostring(i) .. " " .. tostring(spellId)) end end function PrintUnitData(unit) local data = GetUnitData(unit) if data then PrintTable(data) else print("No unit data available") end end function PrintSpellMods(spellId) for i = 0, 28 do local flatMod, percentMod, ret = GetSpellModifiers(spellId, i) if ret > 0 then print(GetSpellMod(i) .. " (" .. tostring(i) .. "): flat:" .. tostring(flatMod) .. " percent:" .. tostring(percentMod)) end end end function PrintSpellData(spellId) local data = GetSpellRec(spellId) if data then PrintTable(data) else print("No spell data available") end end if not Nampower:HasMinimumVersion(2, 16, 0) then return end function PrintItemLocation(itemNameOrId) local bagIndex, slot = FindPlayerItemSlot(itemNameOrId) print(tostring(bagIndex) .. " " .. tostring(slot)) end function PrintEquippedItems() local target = "player" if UnitExists("target") then target = "target" end local data = GetEquippedItems(target) PrintTable(data) end function LogEquippedItems() local target = "player" if UnitExists("target") then target = "target" end local data = GetEquippedItems(target) PrintTableToCombatLog(data) end function PrintBagItems() local data = GetBagItems() PrintTable(data) end function LogBagItems() local data = GetBagItems() PrintTableToCombatLog(data) end function TestBagItems(bagIndex) local items = GetBagItems(bagIndex) local numItemsChecked = 0 for slot, itemData in pairs(items) do local itemLink = GetContainerItemLink(bagIndex, slot) if not itemLink then print(tostring(bagIndex) .. " " .. tostring(slot)) PrintTable(itemData) end local _, _, itemId = strfind(itemLink, "(%d+):") numItemsChecked = numItemsChecked + 1 if (tostring(itemData.itemId) ~= itemId) then print("Item mismatch at " .. tostring(bagIndex) .. " " .. tostring(slot) .. " " .. tostring(itemData.itemId) .. " " .. tostring(itemId)) print(itemLink) end end print("checked " .. tostring(numItemsChecked) .. " items") end function TestAllBagItems() local data = GetBagItems() local numItemsChecked = 0 for bagIndex, items in pairs(data) do for slot, itemData in pairs(items) do local itemLink = GetContainerItemLink(bagIndex, slot) if not itemLink then print(tostring(bagIndex) .. " " .. tostring(slot)) PrintTable(itemData) end local _, _, itemId = strfind(itemLink, "(%d+):") numItemsChecked = numItemsChecked + 1 if (tostring(itemData.itemId) ~= itemId) then print("Item mismatch at " .. tostring(bagIndex) .. " " .. tostring(slot) .. " " .. tostring(itemData.itemId) .. " " .. tostring(itemId)) print(itemLink) end end end print("checked " .. tostring(numItemsChecked) .. " items") end function TestTrinkets() local data = GetTrinkets() for index, trinketData in pairs(data) do local bagIndex = trinketData.bagIndex local slot = trinketData.slotIndex local itemLink if bagIndex then itemLink = GetContainerItemLink(bagIndex, slot) else itemLink = GetInventoryItemLink("player", slot) end local _, _, itemId = strfind(itemLink, "(%d+):") if (tostring(trinketData.itemId) ~= itemId) then print("Trinket mismatch at " .. tostring(bagIndex) .. " " .. tostring(slot) .. " " .. tostring(itemData.itemId) .. " " .. tostring(itemId)) print(itemLink) end end end if not Nampower:HasMinimumVersion(2, 17, 0) then return end function PrintCastInfo() local data = GetCastInfo() if data then PrintTable(data) end end function PrintSpellCooldown(spellId) local data = GetSpellIdCooldown(spellId) if data then PrintTable(data) end end function PrintItemCooldown(itemId) local data = GetItemIdCooldown(itemId) if data then PrintTable(data) end end function PrintTrinketCooldown(trinketId) local data = GetTrinketCooldown(trinketId) if data then PrintTable(data) end end function PrintTrinkets() local data = GetTrinkets(1) if data then PrintTable(data) end end