CacheEquipmentData = function(self) self.extraHealingAmount = 0 self.extraHealingAmountPossible = 0 self.hasItemIdolOfRejuvenation = 0 self.hasItemTotemOfLife = 0 self.hasItemTotemOfSustaining = 0 self.hasItemLibramOfDivinity = 0 self.hasItemLibramOfLight = 0 self.hasBenefitStormrage = false self.hasBenefitDreamwalker = false self.hasBenefitTranscendance = false self.hasBrokenPlusHealingItems = false local _SMH_setNames = { } local canLookForSetPatterns, itemIsBroken local slot for i, slot in self.equipmentSlots do local id, _ = GetInventorySlotInfo(slot.."Slot") local item, _, _ = smhTooltip:SetInventoryItem('player', id) if item then canLookForSetPatterns = false itemIsBroken = false itemPlusHealingValue = 0 local lineCount = smhTooltip:NumLines() for j = 1, lineCount, 1 do local text = getglobal("smhTooltipTextLeft"..j) if text then local line = text:GetText() -- First we look for specific items of interest if j == 1 then if line == SMH_ITEM_IDOL_OF_REJUVENATION then self.hasItemIdolOfRejuvenation = self:NumberFromTooltipLine(lineCount); break elseif line == SMH_ITEM_TOTEM_OF_LIFE then self.hasItemTotemOfLife = self:NumberFromTooltipLine(lineCount); break elseif line == SMH_ITEM_TOTEM_OF_SUSTAINING then self.hasItemTotemOfSustaining = self:NumberFromTooltipLine(lineCount); break elseif line == SMH_ITEM_LIBRAM_OF_DIVINITY then self.hasItemLibramOfDivinity = self:NumberFromTooltipLine(lineCount); break elseif line == SMH_ITEM_LIBRAM_OF_LIGHT then self.hasItemLibramOfLight = self:NumberFromTooltipLine(lineCount); break end end local match, setName = string.find(line, self.setNamePattern) if match ~= nil then if not _SMH_setNames[setName] then canLookForSetPatterns = true _SMH_setNames[setName] = true end end local match, where, current, total = string.find(line, _smh_DurabilityPattern) if match ~= nil then if tonumber(total) > 0 and tonumber(current) == 0 then itemIsBroken = true end end for k, pattern in _smh_healingPatterns do local match, _, amount = string.find(line, pattern) if (match ~= nil) then self:OutputMessage("DEBUG", "On "..slot.." found "..tonumber(amount).." healing.") itemPlusHealingValue = itemPlusHealingValue + tonumber(amount) break end end if canLookForSetPatterns then local possibleMatch possibleMatch, _ = string.find(line, _smh_setPatternStormrage) if possibleMatch ~= nil then self.hasBenefitStormrage = true self:OutputMessage("DEBUG", "Found Stormrage benefit.") else possibleMatch, _ = string.find(line, _smh_setPatternDreamwalker) if possibleMatch ~= nil then self.hasBenefitDreamwalker = true self:OutputMessage("DEBUG", "Found Dreamwalker benefit.") else possibleMatch, _ = string.find(line, _smh_setPatternTranscendance) if possibleMatch ~= nil then self.hasBenefitTranscendance = true self:OutputMessage("DEBUG", "Found Transcendance benefit") else for k, pattern in _smh_setHealingPatterns do local match, _, amount = string.find(line, pattern) if match ~= nil then self:OutputMessage("DEBUG", "On "..slot.." found "..tonumber(amount).." healing as part of set.") itemPlusHealingValue = itemPlusHealingValue + tonumber(amount) break end end end end end end end end if itemPlusHealingValue > 0 then if itemIsBroken then self.hasBrokenPlusHealingItems = true self:OutputMessage("DEBUG", "Item in " .. slot .. " slot is broken, but should have provided " .. itemPlusHealingValue .. " +healing.") self.extraHealingAmountPossible = self.extraHealingAmountPossible + itemPlusHealingValue else self.extraHealingAmount = self.extraHealingAmount + itemPlusHealingValue self.extraHealingAmountPossible = self.extraHealingAmountPossible + itemPlusHealingValue end end end end self:OutputMessage("DEBUG", "Total extra healing found on equipment: ".. self.extraHealingAmount) return self.extraHealingAmount, self.extraHealingAmountPossible end,