X-Git-Url: https://www.aleksib.fi/git/wowui.git/blobdiff_plain/87236a421791e5e2d2332eef02ff4cbdbc4310be..6a081073e230a9f21aeb1a69c9bbea0e124b7b55:/OmaCD/Inspect.lua?ds=sidebyside diff --git a/OmaCD/Inspect.lua b/OmaCD/Inspect.lua index 498ea06..a37ed63 100644 --- a/OmaCD/Inspect.lua +++ b/OmaCD/Inspect.lua @@ -4,6 +4,7 @@ local next, print = next, print; local format = string.format; local InCombatLockdown = InCombatLockdown; local CTimerAfter = C_Timer.After; +local UnitIsDeadOrGhost = UnitIsDeadOrGhost; local IsInGroup, IsInRaid = IsInGroup, IsInRaid; local CheckInteractDistance = CheckInteractDistance; local GetTime, UnitGUID, UnitName = GetTime, UnitGUID, UnitName; @@ -40,10 +41,10 @@ local function inspect(id) -- not necessary, but there's too many issues with inspect, -- try to hope being nearby makes it more likely to work -- no need to inspect people not in range before pull anyway - if CheckInteractDistance(id, 1) then + if not UnitIsDeadOrGhost("player") and + CheckInteractDistance(id, 1) and CanInspect(id) then if not inspecting then inspecting = guid; - print("Sending inspect", UnitName(id)); NotifyInspect(id); redoGuid = guid; CTimerAfter(20, redo); @@ -93,8 +94,8 @@ function OmaInspect.Request(guid, id, callback, needItems, force) cached.cb = callback; cached.needItems = needItems; local elapsed = GetTime() - cached.time; - if force or (not needItems and (not cached.talent ~= nil or elapsed > 60)) or - (needItems and (not cached.weapon or elapsed > 60)) then + if force or (not needItems and (cached.talent == nil or elapsed > 60)) or + (needItems and (cached.weapon == nil or elapsed > 60)) then if not pending[guid] or inspecting ~= guid then -- don't send multiple inspects inspect(id); end @@ -105,7 +106,7 @@ function OmaInspect.Request(guid, id, callback, needItems, force) end local function inspectReady(guid) - if not guid or inspectui then return end + if not guid or inspecting ~= guid then return end local cached = cache[guid]; if cached and cached.id and UnitGUID(cached.id) == guid then local time = GetTime(); @@ -114,25 +115,22 @@ local function inspectReady(guid) redoGuid = nil; if InCombatLockdown() and not inspectui then pending[guid] = true; - ClearInspectPlayer(); + if not inspectui then ClearInspectPlayer() end else if CanInspect(id) then - if time - cached.time > 60 then -- refresh >1min - -- new inspect - cached.time = time; - if needItems then - cached.weapon = GetInventoryItemLink(id, INVSLOT_MAINHAND); - cached.wrist = GetInventoryItemID(id, INVSLOT_WRIST); - end - cached.spec = GetInspectSpecialization(id); - local _, _, _, selected = GetTalentInfo(6, 2, 1, true, id); - cached.talent = selected; + -- new inspect + cached.time = time; + if cached.needItems then + cached.weapon = GetInventoryItemLink(id, INVSLOT_MAINHAND); + cached.wrist = GetInventoryItemID(id, INVSLOT_WRIST); end + cached.spec = GetInspectSpecialization(id); + local _, _, _, selected = GetTalentInfo(6, 1, 1, true, id); + cached.talent = selected; end - ClearInspectPlayer(); + if not inspectui then ClearInspectPlayer() end if (cached.needItems and cached.weapon) or (not cached.needItems and cached.talent ~= nil) then - print("Got inspect done", UnitName(id)); cached.cb(guid, cached.spec, cached.talent, cached.weapon, cached.wrist); else pending[guid] = true; @@ -174,9 +172,7 @@ local function create() tick(); end -frame:RegisterEvent("PLAYER_LOGIN"); frame:SetScript("OnEvent", function(self, event) - if event == "PLAYER_LOGIN" then - return create(); - end + return create(); end); +frame:RegisterEvent("PLAYER_LOGIN");