X-Git-Url: https://www.aleksib.fi/git/wowui.git/blobdiff_plain/87236a421791e5e2d2332eef02ff4cbdbc4310be..03aa1f00436b12e0089d856778424643278a5b48:/OmaCD/Inspect.lua diff --git a/OmaCD/Inspect.lua b/OmaCD/Inspect.lua index 498ea06..d1291da 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,13 +116,13 @@ 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 + if cached.needItems then cached.weapon = GetInventoryItemLink(id, INVSLOT_MAINHAND); cached.wrist = GetInventoryItemID(id, INVSLOT_WRIST); end @@ -129,7 +131,7 @@ local function inspectReady(guid) cached.talent = selected; end 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));