local Details = Details local unpack = unpack local _GetSpellInfo = Details.GetSpellInfo local PLAYER_DETAILS_STATUSBAR_HEIGHT = 20 local CreateFrame = CreateFrame local GameTooltip = GameTooltip local Loc = LibStub("AceLocale-3.0"):GetLocale ( "Details" ) local red = "FFFFAAAA" local green = "FFAAFFAA" local avoidance_create = function(tab, frame) --Percent Desc local percent_desc = frame:CreateFontString(nil, "artwork", "GameFontNormal") percent_desc:SetText("Percent values are comparisons with the previous try.") percent_desc:SetPoint("bottomleft", frame, "bottomleft", 13, 13 + PLAYER_DETAILS_STATUSBAR_HEIGHT) percent_desc:SetTextColor(.5, .5, .5, 1) --SUMMARY local summaryBox = CreateFrame("frame", nil, frame, "BackdropTemplate") Details.gump:ApplyStandardBackdrop(summaryBox) summaryBox:SetPoint("topleft", frame, "topleft", 10, -15) summaryBox:SetSize(200, 160) local y = -5 local padding = 16 local summary_text = summaryBox:CreateFontString(nil, "artwork", "GameFontNormal") summary_text:SetText("Summary") summary_text :SetPoint("topleft", summaryBox, "topleft", 5, y) y = y - padding --total damage received local damagereceived = summaryBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") damagereceived:SetPoint("topleft", summaryBox, "topleft", 15, y) damagereceived:SetText("Total Damage Taken:") --localize-me damagereceived:SetTextColor(.8, .8, .8, 1) local damagereceived_amt = summaryBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") damagereceived_amt:SetPoint("left", damagereceived, "right", 2, 0) damagereceived_amt:SetText("0") tab.damagereceived = damagereceived_amt y = y - padding --per second local damagepersecond = summaryBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") damagepersecond:SetPoint("topleft", summaryBox, "topleft", 20, y) damagepersecond:SetText("Per Second:") --localize-me local damagepersecond_amt = summaryBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") damagepersecond_amt:SetPoint("left", damagepersecond, "right", 2, 0) damagepersecond_amt:SetText("0") tab.damagepersecond = damagepersecond_amt y = y - padding --total absorbs local absorbstotal = summaryBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") absorbstotal:SetPoint("topleft", summaryBox, "topleft", 15, y) absorbstotal:SetText("Total Absorbs:") --localize-me absorbstotal:SetTextColor(.8, .8, .8, 1) local absorbstotal_amt = summaryBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") absorbstotal_amt:SetPoint("left", absorbstotal, "right", 2, 0) absorbstotal_amt:SetText("0") tab.absorbstotal = absorbstotal_amt y = y - padding --per second local absorbstotalpersecond = summaryBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") absorbstotalpersecond:SetPoint("topleft", summaryBox, "topleft", 20, y) absorbstotalpersecond:SetText("Per Second:") --localize-me local absorbstotalpersecond_amt = summaryBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") absorbstotalpersecond_amt:SetPoint("left", absorbstotalpersecond, "right", 2, 0) absorbstotalpersecond_amt:SetText("0") tab.absorbstotalpersecond = absorbstotalpersecond_amt --MELEE y = -5 local meleeBox = CreateFrame("frame", nil, frame, "BackdropTemplate") Details.gump:ApplyStandardBackdrop(meleeBox) meleeBox:SetPoint("topleft", summaryBox, "bottomleft", 0, -5) meleeBox:SetSize(200, 160) local melee_text = meleeBox:CreateFontString(nil, "artwork", "GameFontNormal") melee_text:SetText("Melee") melee_text :SetPoint("topleft", meleeBox, "topleft", 5, y) y = y - padding --dodge local dodge = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") dodge:SetPoint("topleft", meleeBox, "topleft", 15, y) dodge:SetText("Dodge:") --localize-me dodge:SetTextColor(.8, .8, .8, 1) local dodge_amt = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") dodge_amt:SetPoint("left", dodge, "right", 2, 0) dodge_amt:SetText("0") tab.dodge = dodge_amt y = y - padding local dodgepersecond = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") dodgepersecond:SetPoint("topleft", meleeBox, "topleft", 20, y) dodgepersecond:SetText("Per Second:") --localize-me local dodgepersecond_amt = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") dodgepersecond_amt:SetPoint("left", dodgepersecond, "right", 2, 0) dodgepersecond_amt:SetText("0") tab.dodgepersecond = dodgepersecond_amt y = y - padding -- parry local parry = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") parry:SetPoint("topleft", meleeBox, "topleft", 15, y) parry:SetText("Parry:") --localize-me parry:SetTextColor(.8, .8, .8, 1) local parry_amt = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") parry_amt:SetPoint("left", parry, "right", 2, 0) parry_amt:SetText("0") tab.parry = parry_amt y = y - padding local parrypersecond = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") parrypersecond:SetPoint("topleft", meleeBox, "topleft", 20, y) parrypersecond:SetText("Per Second:") --localize-me local parrypersecond_amt = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") parrypersecond_amt:SetPoint("left", parrypersecond, "right", 2, 0) parrypersecond_amt:SetText("0") tab.parrypersecond = parrypersecond_amt y = y - padding -- block local block = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") block:SetPoint("topleft", meleeBox, "topleft", 15, y) block:SetText("Block:") --localize-me block:SetTextColor(.8, .8, .8, 1) local block_amt = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") block_amt:SetPoint("left", block, "right", 2, 0) block_amt:SetText("0") tab.block = block_amt y = y - padding local blockpersecond = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") blockpersecond:SetPoint("topleft", meleeBox, "topleft", 20, y) blockpersecond:SetText("Per Second:") --localize-me local blockpersecond_amt = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") blockpersecond_amt:SetPoint("left", blockpersecond, "right", 2, 0) blockpersecond_amt:SetText("0") tab.blockpersecond = blockpersecond_amt y = y - padding local blockeddamage = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") blockeddamage:SetPoint("topleft", meleeBox, "topleft", 20, y) blockeddamage:SetText("Damage Blocked:") --localize-me local blockeddamage_amt = meleeBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") blockeddamage_amt:SetPoint("left", blockeddamage, "right", 2, 0) blockeddamage_amt:SetText("0") tab.blockeddamage_amt = blockeddamage_amt --ABSORBS y = -5 local absorbsBox = CreateFrame("frame", nil, frame, "BackdropTemplate") Details.gump:ApplyStandardBackdrop(absorbsBox) absorbsBox:SetPoint("topleft", summaryBox, "topright", 10, 0) absorbsBox:SetSize(200, 160) local absorb_text = absorbsBox:CreateFontString(nil, "artwork", "GameFontNormal") absorb_text:SetText("Absorb") absorb_text :SetPoint("topleft", absorbsBox, "topleft", 5, y) y = y - padding --full absorbs local fullsbsorbed = absorbsBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") fullsbsorbed:SetPoint("topleft", absorbsBox, "topleft", 20, y) fullsbsorbed:SetText("Full Absorbs:") --localize-me fullsbsorbed:SetTextColor(.8, .8, .8, 1) local fullsbsorbed_amt = absorbsBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") fullsbsorbed_amt:SetPoint("left", fullsbsorbed, "right", 2, 0) fullsbsorbed_amt:SetText("0") tab.fullsbsorbed = fullsbsorbed_amt y = y - padding --partially absorbs local partiallyabsorbed = absorbsBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") partiallyabsorbed:SetPoint("topleft", absorbsBox, "topleft", 20, y) partiallyabsorbed:SetText("Partially Absorbed:") --localize-me partiallyabsorbed:SetTextColor(.8, .8, .8, 1) local partiallyabsorbed_amt = absorbsBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") partiallyabsorbed_amt:SetPoint("left", partiallyabsorbed, "right", 2, 0) partiallyabsorbed_amt:SetText("0") tab.partiallyabsorbed = partiallyabsorbed_amt y = y - padding --partially absorbs per second local partiallyabsorbedpersecond = absorbsBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") partiallyabsorbedpersecond:SetPoint("topleft", absorbsBox, "topleft", 25, y) partiallyabsorbedpersecond:SetText("Average:") --localize-me local partiallyabsorbedpersecond_amt = absorbsBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") partiallyabsorbedpersecond_amt:SetPoint("left", partiallyabsorbedpersecond, "right", 2, 0) partiallyabsorbedpersecond_amt:SetText("0") tab.partiallyabsorbedpersecond = partiallyabsorbedpersecond_amt y = y - padding --no absorbs local noabsorbs = absorbsBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") noabsorbs:SetPoint("topleft", absorbsBox, "topleft", 20, y) noabsorbs:SetText("No Absorption:") --localize-me noabsorbs:SetTextColor(.8, .8, .8, 1) local noabsorbs_amt = absorbsBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") noabsorbs_amt:SetPoint("left", noabsorbs, "right", 2, 0) noabsorbs_amt:SetText("0") tab.noabsorbs = noabsorbs_amt --HEALING y = -5 local healingBox = CreateFrame("frame", nil, frame,"BackdropTemplate") Details.gump:ApplyStandardBackdrop(healingBox) healingBox:SetPoint("topleft", absorbsBox, "bottomleft", 0, -5) healingBox:SetSize(200, 160) local healing_text = healingBox:CreateFontString(nil, "artwork", "GameFontNormal") healing_text:SetText("Healing") healing_text :SetPoint("topleft", healingBox, "topleft", 5, y) y = y - padding --self healing local selfhealing = healingBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") selfhealing:SetPoint("topleft", healingBox, "topleft", 20, y) selfhealing:SetText("Self Healing:") --localize-me selfhealing:SetTextColor(.8, .8, .8, 1) local selfhealing_amt = healingBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") selfhealing_amt:SetPoint("left", selfhealing, "right", 2, 0) selfhealing_amt:SetText("0") tab.selfhealing = selfhealing_amt y = y - padding --self healing per second local selfhealingpersecond = healingBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") selfhealingpersecond:SetPoint("topleft", healingBox, "topleft", 25, y) selfhealingpersecond:SetText("Per Second:") --localize-me local selfhealingpersecond_amt = healingBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") selfhealingpersecond_amt:SetPoint("left", selfhealingpersecond, "right", 2, 0) selfhealingpersecond_amt:SetText("0") tab.selfhealingpersecond = selfhealingpersecond_amt y = y - padding for i = 1, 5 do local healer = healingBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") healer:SetPoint("topleft", healingBox, "topleft", 20, y + ((i-1)*15)*-1) healer:SetText("healer name:") --localize-me healer:SetTextColor(.8, .8, .8, 1) local healer_amt = healingBox:CreateFontString(nil, "artwork", "GameFontHighlightSmall") healer_amt:SetPoint("left", healer, "right", 2, 0) healer_amt:SetText("0") tab ["healer" .. i] = {healer, healer_amt} end --SPELLS y = -5 local spellsBox = CreateFrame("frame", nil, frame,"BackdropTemplate") Details.gump:ApplyStandardBackdrop(spellsBox) spellsBox:SetPoint("topleft", absorbsBox, "topright", 10, 0) spellsBox:SetSize(346, 160 * 2 + 5) local spells_text = spellsBox:CreateFontString(nil, "artwork", "GameFontNormal") spells_text:SetText("Spells") spells_text :SetPoint("topleft", spellsBox, "topleft", 5, y) local frame_tooltip_onenter = function(self) if (self.spellid) then --self:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 512, edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", edgeSize = 8}) self:SetBackdropColor(.5, .5, .5, .5) GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT") Details:GameTooltipSetSpellByID (self.spellid) GameTooltip:Show() end end local frame_tooltip_onleave = function(self) if (self.spellid) then self:SetBackdropColor(.5, .5, .5, .1) GameTooltip:Hide() end end y = y - padding for i = 1, 40 do local frame_tooltip = CreateFrame("frame", nil, spellsBox,"BackdropTemplate") frame_tooltip:SetPoint("topleft", spellsBox, "topleft", 5, y + ((i-1)*17)*-1) frame_tooltip:SetSize(spellsBox:GetWidth()-10, 16) frame_tooltip:SetScript("OnEnter", frame_tooltip_onenter) frame_tooltip:SetScript("OnLeave", frame_tooltip_onleave) frame_tooltip:Hide() frame_tooltip:SetBackdrop({bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", tile = true, tileSize = 512}) frame_tooltip:SetBackdropColor(.5, .5, .5, .1) local icon = frame_tooltip:CreateTexture(nil, "artwork") icon:SetSize(14, 14) icon:SetPoint("left", frame_tooltip, "left") local spell = frame_tooltip:CreateFontString(nil, "artwork", "GameFontHighlightSmall") spell:SetPoint("left", icon, "right", 2, 0) spell:SetText("spell name:") --localize-me spell:SetTextColor(.8, .8, .8, 1) local spell_amt = frame_tooltip:CreateFontString(nil, "artwork", "GameFontHighlightSmall") spell_amt:SetPoint("left", spell, "right", 2, 0) spell_amt:SetText("0") tab ["spell" .. i] = {spell, spell_amt, icon, frame_tooltip} end end local getpercent = function(value, lastvalue, elapsed_time, inverse) local ps = value / elapsed_time local diff if (lastvalue == 0) then diff = "+0%" else if (ps >= lastvalue) then local d = ps - lastvalue d = d / lastvalue * 100 d = math.floor(math.abs(d)) if (d > 999) then d = "> 999" end if (inverse) then diff = "|c" .. green .. "+" .. d .. "%|r" else diff = "|c" .. red .. "+" .. d .. "%|r" end else local d = lastvalue - ps d = d / math.max(ps, 0.001) * 100 d = math.floor(math.abs(d)) if (d > 999) then d = "> 999" end if (inverse) then diff = "|c" .. red .. "-" .. d .. "%|r" else diff = "|c" .. green .. "-" .. d .. "%|r" end end end return ps, diff end local avoidance_fill = function(tab, player, combat) local elapsed_time = combat:GetCombatTime() local last_combat = combat.previous_combat --this is always nil from 2023 may 26 if (not last_combat or not last_combat [1]) then last_combat = combat end local last_actor = last_combat (1, player.nome) local n = player.nome if (n:find("-")) then n = n:gsub(("-.*"), "") end --damage taken local playerdamage = combat (1, player.nome) if (not playerdamage.avoidance) then playerdamage.avoidance = Details:CreateActorAvoidanceTable() end local damagetaken = playerdamage.damage_taken local last_damage_received = 0 if (last_actor) then last_damage_received = last_actor.damage_taken / last_combat:GetCombatTime() end tab.damagereceived:SetText(Details:ToK2 (damagetaken)) local ps, diff = getpercent (damagetaken, last_damage_received, elapsed_time) tab.damagepersecond:SetText(Details:comma_value (math.floor(ps)) .. " (" .. diff .. ")") --absorbs local totalabsorbs = playerdamage.avoidance.overall.ABSORB_AMT local incomingtotal = damagetaken + totalabsorbs local last_total_absorbs = 0 if (last_actor and last_actor.avoidance) then last_total_absorbs = last_actor.avoidance.overall.ABSORB_AMT / last_combat:GetCombatTime() end tab.absorbstotal:SetText(Details:ToK2 (totalabsorbs) .. " (" .. math.floor(totalabsorbs / incomingtotal * 100) .. "%)") local ps, diff = getpercent (totalabsorbs, last_total_absorbs, elapsed_time, true) tab.absorbstotalpersecond:SetText(Details:comma_value (math.floor(ps)) .. " (" .. diff .. ")") --dodge local totaldodge = playerdamage.avoidance.overall.DODGE tab.dodge:SetText(totaldodge) local last_total_dodge = 0 if (last_actor and last_actor.avoidance) then last_total_dodge = last_actor.avoidance.overall.DODGE / last_combat:GetCombatTime() end local ps, diff = getpercent (totaldodge, last_total_dodge, elapsed_time, true) tab.dodgepersecond:SetText( string.format("%.2f", ps) .. " (" .. diff .. ")") --parry local totalparry = playerdamage.avoidance.overall.PARRY tab.parry:SetText(totalparry) local last_total_parry = 0 if (last_actor and last_actor.avoidance) then last_total_parry = last_actor.avoidance.overall.PARRY / last_combat:GetCombatTime() end local ps, diff = getpercent (totalparry, last_total_parry, elapsed_time, true) tab.parrypersecond:SetText(string.format("%.2f", ps) .. " (" .. diff .. ")") --block local totalblock = playerdamage.avoidance.overall.BLOCKED_HITS tab.block:SetText(totalblock) local last_total_block = 0 if (last_actor and last_actor.avoidance) then last_total_block = last_actor.avoidance.overall.BLOCKED_HITS / last_combat:GetCombatTime() end local ps, diff = getpercent (totalblock, last_total_block, elapsed_time, true) tab.blockpersecond:SetText(string.format("%.2f", ps) .. " (" .. diff .. ")") tab.blockeddamage_amt:SetText(Details:ToK2 (playerdamage.avoidance.overall.BLOCKED_AMT)) --absorb local fullabsorb = playerdamage.avoidance.overall.FULL_ABSORBED local halfabsorb = playerdamage.avoidance.overall.PARTIAL_ABSORBED local halfabsorb_amt = playerdamage.avoidance.overall.PARTIAL_ABSORB_AMT local noabsorb = playerdamage.avoidance.overall.FULL_HIT tab.fullsbsorbed:SetText(fullabsorb) tab.partiallyabsorbed:SetText(halfabsorb) tab.noabsorbs:SetText(noabsorb) if (halfabsorb_amt > 0) then local average = halfabsorb_amt / halfabsorb --tenho o average local last_average = 0 if (last_actor and last_actor.avoidance and last_actor.avoidance.overall.PARTIAL_ABSORBED > 0) then last_average = last_actor.avoidance.overall.PARTIAL_ABSORB_AMT / last_actor.avoidance.overall.PARTIAL_ABSORBED end local ps, diff = getpercent (halfabsorb_amt, last_average, halfabsorb, true) tab.partiallyabsorbedpersecond:SetText(Details:comma_value (math.floor(ps)) .. " (" .. diff .. ")") else tab.partiallyabsorbedpersecond:SetText("0.00 (0%)") end --healing local actor_heal = combat (2, player.nome) if (not actor_heal) then tab.selfhealing:SetText("0") tab.selfhealingpersecond:SetText("0 (0%)") else local last_actor_heal = last_combat (2, player.nome) local este_alvo = actor_heal.targets [player.nome] if (este_alvo) then local heal_total = este_alvo tab.selfhealing:SetText(Details:ToK2 (heal_total)) if (last_actor_heal) then local este_alvo = last_actor_heal.targets [player.nome] if (este_alvo) then local heal = este_alvo local last_heal = heal / last_combat:GetCombatTime() local ps, diff = getpercent (heal_total, last_heal, elapsed_time, true) tab.selfhealingpersecond:SetText(Details:comma_value (math.floor(ps)) .. " (" .. diff .. ")") else tab.selfhealingpersecond:SetText("0 (0%)") end else tab.selfhealingpersecond:SetText("0 (0%)") end else tab.selfhealing:SetText("0") tab.selfhealingpersecond:SetText("0 (0%)") end -- taken from healer local heal_from = actor_heal.healing_from local myReceivedHeal = {} for actorName, _ in pairs(heal_from) do local thisActor = combat (2, actorName) local targets = thisActor.targets --targets is a container with target classes local amount = targets [player.nome] or 0 myReceivedHeal [#myReceivedHeal+1] = {actorName, amount, thisActor.classe} end table.sort (myReceivedHeal, Details.Sort2) --Sort2 sort by second index for i = 1, 5 do local label1, label2 = unpack(tab ["healer" .. i]) if (myReceivedHeal [i]) then local name = myReceivedHeal [i][1] name = Details:GetOnlyName(name) --name = Details:RemoveOwnerName (name) label1:SetText(name .. ":") local class = myReceivedHeal [i][3] if (class) then local c = _G["RAID_CLASS_COLORS"][class] if (c) then label1:SetTextColor(c.r, c.g, c.b) end else label1:SetTextColor(.8, .8, .8, 1) end local last_actor = last_combat (2, myReceivedHeal [i][1]) if (last_actor) then local targets = last_actor.targets local amount = targets [player.nome] or 0 if (amount) then local last_heal = amount local ps, diff = getpercent (myReceivedHeal[i][2], last_heal, 1, true) label2:SetText( Details:ToK2 (myReceivedHeal[i][2] or 0) .. " (" .. diff .. ")") else label2:SetText( Details:ToK2 (myReceivedHeal[i][2] or 0)) end else label2:SetText( Details:ToK2 (myReceivedHeal[i][2] or 0)) end else label1:SetText("-- -- -- --") label1:SetTextColor(.8, .8, .8, 1) label2:SetText("") end end end --Spells --cooldowns local index_used = 1 local misc_player = combat (4, player.nome) local encounter_time = combat:GetCombatTime() if (misc_player) then if (misc_player.cooldowns_defensive_spells) then local minha_tabela = misc_player.cooldowns_defensive_spells._ActorTable local buffUpdateSpells = misc_player.buff_uptime_spells -- ._ActorTable local cooldowns_usados = {} for _spellid, _tabela in pairs(minha_tabela) do cooldowns_usados [#cooldowns_usados+1] = {_spellid, _tabela.counter} end if (#cooldowns_usados > 0) then table.sort (cooldowns_usados, Details.Sort2) for i = 1, #cooldowns_usados do local esta_habilidade = cooldowns_usados[i] local nome_magia, _, icone_magia = _GetSpellInfo(esta_habilidade[1]) local label1, label2, icon1, framebg = unpack(tab ["spell" .. index_used]) framebg.spellid = esta_habilidade[1] framebg:Show() --attempt to get the buff update local spellInfo = buffUpdateSpells:GetSpell (framebg.spellid) if (spellInfo) then label2:SetText(esta_habilidade[2] .. " (" .. math.floor(spellInfo.uptime / encounter_time * 100) .. "% uptime)") else label2:SetText(esta_habilidade[2]) end --update the line label1:SetText(nome_magia .. ":") icon1:SetTexture(icone_magia) icon1:SetTexCoord(0.0625, 0.953125, 0.0625, 0.953125) index_used = index_used + 1 end end end end local cooldownInfo = DetailsFramework.CooldownsInfo --see cooldowns that other players used in this actor for playerName, _ in pairs(combat.raid_roster) do if (playerName ~= player.nome) then local miscPlayer = combat (4, playerName) if (miscPlayer) then if (miscPlayer.cooldowns_defensive_spells) then local cooldowns = miscPlayer.cooldowns_defensive_spells for spellID, spellTable in cooldowns:ListActors() do local targets = spellTable.targets if (targets) then for targetName, amountCasted in pairs(targets) do if (targetName == player.nome) then local spellName, _, spellIcon = _GetSpellInfo(spellID) local label1, label2, icon1, framebg = unpack(tab ["spell" .. index_used]) framebg.spellid = spellID framebg:Show() --attempt to get the buff update local info = cooldownInfo [spellID] local cooldownDuration = info and info.duration or 0 if (cooldownDuration > 0) then label2:SetText(amountCasted .. " (" .. "|cFFFFFF00" .. miscPlayer.nome .. "|r " .. math.floor(cooldownDuration / encounter_time * 100) .. "% uptime)") else label2:SetText(amountCasted) end --update the line label1:SetText(spellName .. ":") icon1:SetTexture(spellIcon) icon1:SetTexCoord(0.0625, 0.953125, 0.0625, 0.953125) index_used = index_used + 1 end end end end end end end end for i = index_used, 40 do local label1, label2, icon1, framebg = unpack(tab ["spell" .. i]) framebg.spellid = nil framebg:Hide() label1:SetText("") label2:SetText("") icon1:SetTexture("") end --habilidade usada para interromper end local iconTableAvoidance = { texture = [[Interface\AddOns\Details\images\icons]], --coords = {363/512, 381/512, 0/512, 17/512}, coords = {384/512, 402/512, 19/512, 38/512}, width = 16, height = 16, } Details:CreatePlayerDetailsTab ("Avoidance", --[1] tab name Loc ["STRING_INFO_TAB_AVOIDANCE"], --[2] localized name function(tabOBject, playerObject) --[3] condition if (playerObject.isTank) then return true else return false end end, avoidance_fill, --[4] fill function nil, --[5] onclick avoidance_create, --[6] oncreate iconTableAvoidance --[7] icon )