Код: Выделить всё
AzeriteSpells = {}
local function GetAzeriteSpells()
local slotIDs = {1, 3, 5} -- Inventory slots with azerite talents
for _,slot in ipairs(slotIDs) do
if GetInventoryItemID("player",slot)~=nil then
local itemLocation = ItemLocation:CreateFromEquipmentSlot(slot)
if C_AzeriteEmpoweredItem.IsAzeriteEmpoweredItem(itemLocation) then
local allTierInfo = C_AzeriteEmpoweredItem.GetAllTierInfo(itemLocation)
for _, tier in ipairs(allTierInfo) do
for _, azeritePowerID in ipairs(tier.azeritePowerIDs) do
if C_AzeriteEmpoweredItem.IsPowerSelected(itemLocation, azeritePowerID) then
AzeriteSpells[C_AzeriteEmpoweredItem.GetPowerInfo(azeritePowerID).spellID]=true
end
end
end
end
end
end
end
local Eye = CreateFrame("Frame")
Eye:RegisterEvent("PLAYER_ENTERING_WORLD")
Eye:RegisterEvent("PLAYER_EQUIPMENT_CHANGED")
Eye:RegisterEvent("PLAYER_SPECIALIZATION_CHANGED")
Eye:RegisterEvent("AZERITE_EMPOWERED_ITEM_SELECTION_UPDATED")
Eye:SetScript("OnEvent",
function(self, event, ...)
if event == "PLAYER_EQUIPMENT_CHANGED" then
GetAzeriteSpells()
elseif event == "AZERITE_EMPOWERED_ITEM_SELECTION_UPDATED" then
GetAzeriteSpells()
elseif event == "PLAYER_SPECIALIZATION_CHANGED" then
GetAzeriteSpells()
elseif event == "PLAYER_ENTERING_WORLD" then
GetAzeriteSpells()
Eye:UnregisterEvent("PLAYER_ENTERING_WORLD")
end
end
)
Например: AzeriteSpells[287059]
Тут ID это пассивное умение, которое дарует выбранный азеритовый талант. Его можно найти на вовхеде.
Когда умение есть, проверка пройдёт; когда умения нет, проверка не пройдёт.
Также можно узнать, какие спеллы у вас сейчас выбраны, написав в чат игры + Enter:
Код: Выделить всё
/dump AzeriteSpells
Если в будущем азеритовые вещи появятся не только в шлеме, плече и груди, нужно будет обновить проверяемые номера слотов.