X-Git-Url: https://www.aleksib.fi/git/wowui.git/blobdiff_plain/87236a421791e5e2d2332eef02ff4cbdbc4310be..c809e5da99427a93b5ad5eb010a1cb1cba507ec2:/OmaCD/Inspect.lua?ds=inline diff --git a/OmaCD/Inspect.lua b/OmaCD/Inspect.lua index 498ea06..3f223ad 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,7 +41,8 @@ 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)); @@ -93,7 +95,7 @@ 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 + if force or (not needItems and (not cached.talent or elapsed > 60)) or (needItems and (not cached.weapon or elapsed > 60)) then if not pending[guid] or inspecting ~= guid then -- don't send multiple inspects inspect(id); @@ -105,7 +107,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 print("Got inspect from elsewhere"); return end local cached = cache[guid]; if cached and cached.id and UnitGUID(cached.id) == guid then local time = GetTime(); @@ -114,22 +116,20 @@ 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, 2, 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));