diff --git a/boot.lua b/boot.lua index c25b0223..035f3123 100644 --- a/boot.lua +++ b/boot.lua @@ -8,7 +8,7 @@ _ = nil _detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0") - _detalhes.userversion = "v1.6.3" + _detalhes.userversion = "v1.6.5" _detalhes.version = "Alpha 010" _detalhes.realversion = 10 diff --git a/classes/classe_damage.lua b/classes/classe_damage.lua index 5b92ac0b..1026cc74 100644 --- a/classes/classe_damage.lua +++ b/classes/classe_damage.lua @@ -165,6 +165,50 @@ end return false end +local sortEnemies = function (t1, t2) + local a = _bit_band (t1.flag_original, 0x00000040) + local b = _bit_band (t2.flag_original, 0x00000040) + + if (a ~= 0 and b ~= 0) then + return t1.total > t2.total + elseif (a ~= 0 and b == 0) then + return true + elseif (a == 0 and b ~= 0) then + return false + end + + return false +end + +--[[exported]] function _detalhes:ContainerSortEnemies (container, amount, keyName2) + + keyName = keyName2 + + _table_sort (container, sortEnemies) + + local total = 0 + + for index, player in _ipairs (container) do + + if (_bit_band (player.flag_original, 0x00000040) ~= 0) then --> é um inimigo + + -- ele vai contar os inimigos com 0 tbm + + --if (player[keyName] < 1) then --> dano menor que 1, interromper o loop + -- amount = index - 1 + -- break + --end + + total = total + player [keyName] + else + amount = index-1 + break + end + end + + return amount, total + end + function atributo_damage:ContainerRefreshDps (container, combat_time) if (_detalhes.time_type == 2 or not _detalhes:CaptureGet ("damage")) then @@ -355,7 +399,7 @@ function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, ex end --> total - local total = 0 + local total = 0 --> top actor #1 instancia.top = 0 @@ -380,6 +424,8 @@ function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, ex keyName = "friendlyfire_total" elseif (sub_atributo == 5) then --> FRAGS keyName = "frags" + elseif (sub_atributo == 6) then --> ENEMIES + keyName = "enemies" end else keyName = exportar.key @@ -399,6 +445,8 @@ function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, ex keyName = "friendlyfire_total" elseif (sub_atributo == 5) then --> FRAGS keyName = "frags" + elseif (sub_atributo == 6) then --> ENEMIES + keyName = "enemies" end end @@ -474,6 +522,7 @@ function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, ex end return _detalhes:EndRefresh (instancia, total, tabela_do_combate, showing) --> retorna a tabela que precisa ganhar o refresh + else if (instancia.atributo == 5) then --> custom @@ -483,6 +532,14 @@ function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, ex --> grava o total instancia.top = conteudo[1][keyName] + elseif (keyName == "enemies") then + + amount, total = _detalhes:ContainerSortEnemies (conteudo, amount, "total") + --> grava o total + instancia.top = conteudo[1][keyName] + + --print ("aqui", amount, total, instancia.top) + elseif (modo == modo_ALL) then --> mostrando ALL --> faz o sort da categoria e retorna o amount corrigido @@ -543,20 +600,6 @@ function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, ex end -- - --[[ - _table_sort (conteudo, function (a, b) - if (a.grupo and b.grupo) then - return a[keyName] > b[keyName] - elseif (a.grupo and not b.grupo) then - return true - elseif (not a.grupo and b.grupo) then - return false - else - return a[keyName] > b[keyName] - end - end) - --]] - if (not using_cache) then for index, player in _ipairs (conteudo) do --if (_bit_band (player.flag, DFLAG_player_group) >= 0x101) then --> é um player e esta em grupo @@ -631,6 +674,11 @@ function atributo_damage:RefreshWindow (instancia, tabela_do_combate, forcar, ex end else + + if (total == 0) then + total = 0.00000001 + end + local combat_time = instancia.showing:GetCombatTime() for i = instancia.barraS[1], instancia.barraS[2], 1 do --> vai atualizar só o range que esta sendo mostrado conteudo[i]:AtualizaBarra (instancia, barras_container, qual_barra, i, total, sub_atributo, forcar, keyName, combat_time) --> instância, index, total, valor da 1º barra @@ -767,7 +815,10 @@ function atributo_damage:AtualizaBarra (instancia, barras_container, qual_barra, elseif (sub_atributo == 4) then --> mostrando friendly fire esta_barra.texto_direita:SetText (_detalhes:ToK (self.friendlyfire_total) .." ".. div_abre .._cstr("%.1f", porcentagem).."%" .. div_fecha) --seta o texto da direita --_cstr("%.1f", dps) .. " - ".. DPS do damage taken não será possivel correto? esta_porcentagem = _math_floor ((self.friendlyfire_total/instancia.top) * 100) --> determina qual o tamanho da barra - + + elseif (sub_atributo == 6) then --> mostrando friendly fire + esta_barra.texto_direita:SetText (_detalhes:ToK (damage_total) .." ".. div_abre .. _math_floor (dps) .. ", ".. _cstr ("%.1f", porcentagem).."%" .. div_fecha) --seta o texto da direita + esta_porcentagem = _math_floor ((damage_total/instancia.top) * 100) --> determina qual o tamanho da barra end end @@ -956,7 +1007,7 @@ function atributo_damage:ToolTip (instancia, numero, barra) if (instancia.atributo == 5) then --> custom return self:TooltipForCustom (barra) else - if (instancia.sub_atributo == 1 or instancia.sub_atributo == 2) then --> damage done or Dps + if (instancia.sub_atributo == 1 or instancia.sub_atributo == 2 or instancia.sub_atributo == 6) then --> damage done or Dps or enemy return self:ToolTip_DamageDone (instancia, numero, barra) elseif (instancia.sub_atributo == 3) then --> damage taken return self:ToolTip_DamageTaken (instancia, numero, barra) @@ -995,73 +1046,77 @@ function atributo_damage:ToolTip_DamageDone (instancia, numero, barra) do --> TOP HABILIDADES - local ActorDamage = self.total_without_pet - local ActorSkillsContainer = self.spell_tables._ActorTable - local ActorSkillsSortTable = {} - - local meu_tempo - if (_detalhes.time_type == 1 or not self.grupo) then - meu_tempo = self:Tempo() - elseif (_detalhes.time_type == 2) then - meu_tempo = self:GetCombatTime() - end - - for _spellid, _skill in _pairs (ActorSkillsContainer) do - ActorSkillsSortTable [#ActorSkillsSortTable+1] = {_spellid, _skill.total, _skill.total/meu_tempo} - end - _table_sort (ActorSkillsSortTable, _detalhes.Sort2) + local ActorDamage = self.total_without_pet + if (ActorDamage == 0) then + ActorDamage = 0.00000001 + end + local ActorSkillsContainer = self.spell_tables._ActorTable + local ActorSkillsSortTable = {} + + local meu_tempo + if (_detalhes.time_type == 1 or not self.grupo) then + meu_tempo = self:Tempo() + elseif (_detalhes.time_type == 2) then + meu_tempo = self:GetCombatTime() + end + + for _spellid, _skill in _pairs (ActorSkillsContainer) do + ActorSkillsSortTable [#ActorSkillsSortTable+1] = {_spellid, _skill.total, _skill.total/meu_tempo} + --local nome_magia, _, icone_magia = _GetSpellInfo (_spellid) + --print ("==============") + --print (nome_magia, _skill.total) + end + _table_sort (ActorSkillsSortTable, _detalhes.Sort2) --> TOP INIMIGOS - local ActorTargetsContainer = self.targets._ActorTable - local ActorTargetsSortTable = {} - for _, _target in _ipairs (ActorTargetsContainer) do - ActorTargetsSortTable [#ActorTargetsSortTable+1] = {_target.nome, _target.total} - end - _table_sort (ActorTargetsSortTable, _detalhes.Sort2) + local ActorTargetsContainer = self.targets._ActorTable + local ActorTargetsSortTable = {} + for _, _target in _ipairs (ActorTargetsContainer) do + ActorTargetsSortTable [#ActorTargetsSortTable+1] = {_target.nome, _target.total} + end + _table_sort (ActorTargetsSortTable, _detalhes.Sort2) --> MOSTRA HABILIDADES - --leftText, rightText, frame, ColorR, ColorG, ColorB, ColorA, ColorR1, ColorG2, ColorB3, ColorA4, fontSize, fontFace - - GameCooltip:AddLine (Loc ["STRING_SPELLS"].."", nil, nil, headerColor, nil, 12) - --GameCooltip:AddIcon ([[Interface\HELPFRAME\HotIssueIcon]], 1, 1, 14, 14, 0.0625, 0.90625, 0, 1) - GameCooltip:AddIcon ([[Interface\ICONS\Spell_Shaman_BlessingOfTheEternals]], 1, 1, 14, 14, 0.90625, 0.109375, 0.15625, 0.875) - GameCooltip:AddStatusBar (100, 1, r, g, b, barAlha) - - local tooltip_max_abilities = _detalhes.tooltip_max_abilities - - if (instancia.sub_atributo == 2) then - tooltip_max_abilities = 6 - end - - if (#ActorSkillsSortTable > 0) then - for i = 1, _math_min (tooltip_max_abilities, #ActorSkillsSortTable) do - local SkillTable = ActorSkillsSortTable [i] - local nome_magia, _, icone_magia = _GetSpellInfo (SkillTable [1]) - if (instancia.sub_atributo == 1) then - GameCooltip:AddLine (nome_magia..": ", _detalhes:comma_value (SkillTable [2]) .." (".._cstr("%.1f", SkillTable [2]/ActorDamage*100).."%)") - else - GameCooltip:AddLine (nome_magia..": ", _detalhes:comma_value (_math_floor (SkillTable [3])) .." (".._cstr("%.1f", SkillTable [2]/ActorDamage*100).."%)") - end - GameCooltip:AddIcon (icone_magia, nil, nil, 14, 14) - GameCooltip:AddStatusBar (100, 1, .1, .1, .1, .3) - end - else - GameCooltip:AddLine (Loc ["STRING_NO_SPELL"]) - end - - --> MOSTRA INIMIGOS - if (instancia.sub_atributo == 1) then - GameCooltip:AddLine (Loc ["STRING_TARGETS"].."", nil, nil, headerColor, nil, 12) - GameCooltip:AddIcon ([[Interface\Addons\Details\images\icons]], 1, 1, 14, 14, 0, 0.03125, 0.126953125, 0.15625) + GameCooltip:AddLine (Loc ["STRING_SPELLS"].."", nil, nil, headerColor, nil, 12) + --GameCooltip:AddIcon ([[Interface\HELPFRAME\HotIssueIcon]], 1, 1, 14, 14, 0.0625, 0.90625, 0, 1) + GameCooltip:AddIcon ([[Interface\ICONS\Spell_Shaman_BlessingOfTheEternals]], 1, 1, 14, 14, 0.90625, 0.109375, 0.15625, 0.875) GameCooltip:AddStatusBar (100, 1, r, g, b, barAlha) - - for i = 1, _math_min (_detalhes.tooltip_max_targets, #ActorTargetsSortTable) do - local este_inimigo = ActorTargetsSortTable [i] - GameCooltip:AddLine (este_inimigo[1]..": ", _detalhes:comma_value (este_inimigo[2]) .." (".._cstr("%.1f", este_inimigo[2]/ActorDamage*100).."%)") - GameCooltip:AddIcon ("Interface\\AddOns\\Details\\images\\espadas", nil, nil, 14, 14) - GameCooltip:AddStatusBar (100, 1, .1, .1, .1, .2) + + local tooltip_max_abilities = _detalhes.tooltip_max_abilities + + if (instancia.sub_atributo == 2) then + tooltip_max_abilities = 6 + end + + if (#ActorSkillsSortTable > 0) then + for i = 1, _math_min (tooltip_max_abilities, #ActorSkillsSortTable) do + local SkillTable = ActorSkillsSortTable [i] + local nome_magia, _, icone_magia = _GetSpellInfo (SkillTable [1]) + if (instancia.sub_atributo == 1 or instancia.sub_atributo == 6) then + GameCooltip:AddLine (nome_magia..": ", _detalhes:comma_value (SkillTable [2]) .." (".._cstr("%.1f", SkillTable [2]/ActorDamage*100).."%)") + else + GameCooltip:AddLine (nome_magia..": ", _detalhes:comma_value (_math_floor (SkillTable [3])) .." (".._cstr("%.1f", SkillTable [2]/ActorDamage*100).."%)") + end + GameCooltip:AddIcon (icone_magia, nil, nil, 14, 14) + GameCooltip:AddStatusBar (100, 1, .1, .1, .1, .3) + end + else + GameCooltip:AddLine (Loc ["STRING_NO_SPELL"]) + end + + --> MOSTRA INIMIGOS + if (instancia.sub_atributo == 1 or instancia.sub_atributo == 6) then + GameCooltip:AddLine (Loc ["STRING_TARGETS"].."", nil, nil, headerColor, nil, 12) + GameCooltip:AddIcon ([[Interface\Addons\Details\images\icons]], 1, 1, 14, 14, 0, 0.03125, 0.126953125, 0.15625) + GameCooltip:AddStatusBar (100, 1, r, g, b, barAlha) + + for i = 1, _math_min (_detalhes.tooltip_max_targets, #ActorTargetsSortTable) do + local este_inimigo = ActorTargetsSortTable [i] + GameCooltip:AddLine (este_inimigo[1]..": ", _detalhes:comma_value (este_inimigo[2]) .." (".._cstr("%.1f", este_inimigo[2]/ActorDamage*100).."%)") + GameCooltip:AddIcon ("Interface\\AddOns\\Details\\images\\espadas", nil, nil, 14, 14) + GameCooltip:AddStatusBar (100, 1, .1, .1, .1, .2) + end end - end end --> PETS @@ -1333,7 +1388,7 @@ end ---------> DETALHES BIFURCAÇÃO function atributo_damage:MontaInfo() - if (info.sub_atributo == 1 or info.sub_atributo == 2) then --> damage done & dps + if (info.sub_atributo == 1 or info.sub_atributo == 2 or info.sub_atributo == 6) then --> damage done & dps return self:MontaInfoDamageDone() elseif (info.sub_atributo == 3) then --> damage taken return self:MontaInfoDamageTaken() @@ -1350,6 +1405,8 @@ function atributo_damage:MontaDetalhes (spellid, barra) return self:MontaDetalhesDamageTaken (spellid, barra) elseif (info.sub_atributo == 4) then return self:MontaDetalhesFriendlyFire (spellid, barra) + elseif (info.sub_atributo == 6) then + return self:MontaDetalhesEnemy (spellid, barra) end end @@ -1533,8 +1590,6 @@ function atributo_damage:MontaInfoDamageTaken() self:FocusLock (barra, tabela[1]) - --hes:UpdadeInfoBar (row, index, spellid, name, value, max, percent, icon, detalhes) - local texCoords = CLASS_ICON_TCOORDS [tabela[4]] if (not texCoords) then texCoords = _detalhes.class_coords ["UNKNOW"] @@ -1543,61 +1598,6 @@ function atributo_damage:MontaInfoDamageTaken() self:UpdadeInfoBar (barra, index, tabela[1], tabela[1], tabela[2], max_, tabela[3], "Interface\\AddOns\\Details\\images\\classes_small", true, texCoords) end - --[[ - for index, tabela in _ipairs (meus_agressores) do - - local barra = barras [index] - - if (not barra) then - barra = gump:CriaNovaBarraInfo1 (instancia, index) - barra.textura:SetStatusBarColor (1, 1, 1, 1) - barra.on_focus = false - end - - if (not info.mostrando_mouse_over) then - if (tabela[1] == self.detalhes) then --> tabela [1] = NOME = NOME que esta na caixa da direita - if (not barra.on_focus) then --> se a barra não tiver no foco - barra.textura:SetStatusBarColor (129/255, 125/255, 69/255, 1) - barra.on_focus = true - if (not info.mostrando) then - info.mostrando = barra - end - end - else - if (barra.on_focus) then - barra.textura:SetStatusBarColor (1, 1, 1, 1) --> volta a cor antiga - barra:SetAlpha (.9) --> volta a alfa antiga - barra.on_focus = false - end - end - end - - if (index == 1) then - barra.textura:SetValue (100) - else - barra.textura:SetValue (tabela[2]/max_*100) --> muito mais rapido... - end - - barra.texto_esquerdo:SetText (index..instancia.divisores.colocacao..tabela[1]) --seta o texto da esqueda - barra.texto_direita:SetText (tabela[2] .." ".. instancia.divisores.abre .._cstr("%.1f", tabela[3]) .."%".. instancia.divisores.fecha) --seta o texto da direita - - local classe = tabela[4] - if (not classe) then - classe = "monster" - end - - barra.icone:SetTexture ("Interface\\AddOns\\Details\\images\\"..classe:lower().."_small") - - barra.minha_tabela = self - barra.show = tabela[1] - barra:Show() - - if (self.detalhes and self.detalhes == barra.show) then - self:MontaDetalhes (self.detalhes, barra) - end - - end - --]] end --[[ @@ -1725,74 +1725,134 @@ function atributo_damage:MontaInfoDamageDone() end --> TOP INIMIGOS - local meus_inimigos = {} - conteudo = self.targets._ActorTable + if (instancia.sub_atributo == 6) then - for _, tabela in _ipairs (conteudo) do - _table_insert (meus_inimigos, {tabela.nome, tabela.total, tabela.total/total*100}) - end - - _table_sort (meus_inimigos, function(a, b) return a[2] > b[2] end ) - - local amt_alvos = #meus_inimigos - if (amt_alvos < 1) then - return - end - - gump:JI_AtualizaContainerAlvos (amt_alvos) - - local max_inimigos = meus_inimigos[1] and meus_inimigos[1][2] or 0 - - local barra - for index, tabela in _ipairs (meus_inimigos) do - - barra = info.barras2 [index] + local damage_taken = self.damage_taken + local agressores = self.damage_from + local tabela_do_combate = instancia.showing + local showing = tabela_do_combate [class_type] --> o que esta sendo mostrado -> [1] - dano [2] - cura --> pega o container com ._NameIndexTable ._ActorTable + local barras = info.barras2 + local meus_agressores = {} - if (not barra) then - barra = gump:CriaNovaBarraInfo2 (instancia, index) - barra.textura:SetStatusBarColor (1, 1, 1, 1) - end - - if (index == 1) then - barra.textura:SetValue (100) - else - barra.textura:SetValue (tabela[2]/max_inimigos*100) + local este_agressor + for nome, _ in _pairs (agressores) do + este_agressor = showing._ActorTable[showing._NameIndexTable[nome]] + if (este_agressor) then + local alvos = este_agressor.targets + local este_alvo = alvos._ActorTable[alvos._NameIndexTable[self.nome]] + if (este_alvo) then + meus_agressores [#meus_agressores+1] = {nome, este_alvo.total, este_alvo.total/damage_taken*100, este_agressor.classe} + end + end end - --barra.textura:SetStatusBarColor (1, 1, 1, 1) + local amt = #meus_agressores - --gump:CorBarraOnInfo2 (index, {}) --> como será o esquema de cores? + if (amt < 1) then --> caso houve apenas friendly fire + return true + end - barra.texto_esquerdo:SetText (index..instancia.divisores.colocacao..tabela[1]) --seta o texto da esqueda - barra.texto_direita:SetText (_detalhes:comma_value (tabela[2]) .." ".. instancia.divisores.abre .._cstr("%.1f", tabela[3]) .. instancia.divisores.fecha) --seta o texto da direita + --_table_sort (meus_agressores, function (a, b) return a[2] > b[2] end) + _table_sort (meus_agressores, _detalhes.Sort2) - if (barra.mouse_over) then --> atualizar o tooltip - if (barra.isAlvo) then - GameTooltip:Hide() - GameTooltip:SetOwner (barra, "ANCHOR_TOPRIGHT") - if (not barra.minha_tabela:MontaTooltipAlvos (barra, index)) then - return - end - GameTooltip:Show() + local max_ = meus_agressores[1] and meus_agressores[1][2] or 0 --> dano que a primeiro magia vez + + local barra + for index, tabela in _ipairs (meus_agressores) do + barra = barras [index] + + if (not barra) then --> se a barra não existir, criar ela então + barra = gump:CriaNovaBarraInfo2 (instancia, index) + barra.textura:SetStatusBarColor (1, 1, 1, 1) --> isso aqui é a parte da seleção e desceleção end - end + + if (index == 1) then + barra.textura:SetValue (100) + else + barra.textura:SetValue (tabela[2]/max_*100) + end + + barra.texto_esquerdo:SetText (index..instancia.divisores.colocacao..tabela[1]) --seta o texto da esqueda + barra.texto_direita:SetText (tabela[2] .." ".. instancia.divisores.abre .._cstr("%.1f", tabela[3]) .."%".. instancia.divisores.fecha) --seta o texto da direita + + --barra.icone:SetTexture (tabela[4]) --CLASSE + + if (barra.mouse_over) then --> atualizar o tooltip + if (barra.isAlvo) then + GameTooltip:Hide() + GameTooltip:SetOwner (barra, "ANCHOR_TOPRIGHT") + if (not barra.minha_tabela:MontaTooltipDamageTaken (barra, index)) then + return + end + GameTooltip:Show() + end + end + + barra.minha_tabela = self --> grava o jogador na tabela + barra.nome_inimigo = tabela [1] --> salva o nome do inimigo na barra --> isso é necessário? + + -- no lugar do spell id colocar o que? + barra.spellid = "enemies" + + barra:Show() --> mostra a barra + end + else + local meus_inimigos = {} + conteudo = self.targets._ActorTable - --gump:TextoBarraOnInfo2 (index, , ) - -- o que mostrar no local do ícone? - --barra.icone:SetTexture (tabela[4][3]) + for _, tabela in _ipairs (conteudo) do + _table_insert (meus_inimigos, {tabela.nome, tabela.total, tabela.total/total*100}) + end - barra.minha_tabela = self --> grava o jogador na tabela - barra.nome_inimigo = tabela [1] --> salva o nome do inimigo na barra --> isso é necessário? + _table_sort (meus_inimigos, function(a, b) return a[2] > b[2] end ) - -- no lugar do spell id colocar o que? - barra.spellid = tabela[5] - barra:Show() + local amt_alvos = #meus_inimigos + if (amt_alvos < 1) then + return + end - --if (self.detalhes and self.detalhes == barra.spellid) then - -- self:MontaDetalhes (self.detalhes, barra) - --end + gump:JI_AtualizaContainerAlvos (amt_alvos) + + local max_inimigos = meus_inimigos[1] and meus_inimigos[1][2] or 0 + + local barra + for index, tabela in _ipairs (meus_inimigos) do + + barra = info.barras2 [index] + + if (not barra) then + barra = gump:CriaNovaBarraInfo2 (instancia, index) + barra.textura:SetStatusBarColor (1, 1, 1, 1) + end + + if (index == 1) then + barra.textura:SetValue (100) + else + barra.textura:SetValue (tabela[2]/max_inimigos*100) + end + + barra.texto_esquerdo:SetText (index..instancia.divisores.colocacao..tabela[1]) --seta o texto da esqueda + barra.texto_direita:SetText (_detalhes:comma_value (tabela[2]) .." ".. instancia.divisores.abre .._cstr("%.1f", tabela[3]) .. instancia.divisores.fecha) --seta o texto da direita + + if (barra.mouse_over) then --> atualizar o tooltip + if (barra.isAlvo) then + GameTooltip:Hide() + GameTooltip:SetOwner (barra, "ANCHOR_TOPRIGHT") + if (not barra.minha_tabela:MontaTooltipAlvos (barra, index)) then + return + end + GameTooltip:Show() + end + end + + barra.minha_tabela = self --> grava o jogador na tabela + barra.nome_inimigo = tabela [1] --> salva o nome do inimigo na barra --> isso é necessário? + + -- no lugar do spell id colocar o que? + barra.spellid = tabela[5] + barra:Show() + end end - end @@ -1859,6 +1919,77 @@ function atributo_damage:MontaDetalhesFriendlyFire (nome, barra) end +-- detalhes info enemies +function atributo_damage:MontaDetalhesEnemy (spellid, barra) + + for _, barra in _ipairs (info.barras3) do + barra:Hide() + end + + local container = info.instancia.showing[1] + local barras = info.barras3 + local instancia = info.instancia + local spell = self.spell_tables:PegaHabilidade (spellid) + + local targets = spell.targets._ActorTable + local target_pool = {} + + for _, target in _ipairs (targets) do + local classe + local this_actor = info.instancia.showing (1, target.nome) + if (this_actor) then + classe = this_actor.classe or "UNKNOW" + else + classe = "UNKNOW" + end + target_pool [#target_pool+1] = {target.nome, target.total, classe} + end + + _table_sort (target_pool, _detalhes.Sort2) + + local max_ = target_pool [1] and target_pool [1][2] or 0 + + local barra + for index, tabela in _ipairs (target_pool) do + barra = barras [index] + + if (not barra) then --> se a barra não existir, criar ela então + barra = gump:CriaNovaBarraInfo3 (instancia, index) + barra.textura:SetStatusBarColor (1, 1, 1, 1) --> isso aqui é a parte da seleção e desceleção + end + + if (index == 1) then + barra.textura:SetValue (100) + else + barra.textura:SetValue (tabela[2]/max_*100) --> muito mais rapido... + end + + barra.texto_esquerdo:SetText (index .. ". " .. tabela [1]) --seta o texto da esqueda + _detalhes:name_space_info (barra) + + if (spell.total > 0) then + barra.texto_direita:SetText (tabela[2] .." (".. _cstr("%.1f", tabela[2] / spell.total * 100) .."%)") --seta o texto da direita + else + barra.texto_direita:SetText (tabela[2] .." (0%)") --seta o texto da direita + end + + local texCoords = _detalhes.class_coords [tabela[3]] + if (not texCoords) then + texCoords = _detalhes.class_coords ["UNKNOW"] + end + + barra.icone:SetTexture ("Interface\\AddOns\\Details\\images\\classes_small") + barra.icone:SetTexCoord (unpack (texCoords)) + + barra:Show() --> mostra a barra + + if (index == 15) then + break + end + end + +end + ------ Detalhe Info Damage Taken function atributo_damage:MontaDetalhesDamageTaken (nome, barra) @@ -2142,6 +2273,43 @@ function atributo_damage:MontaDetalhesDamageDone (spellid, barra) end +function atributo_damage:MontaTooltipDamageTaken (esta_barra, index) + + local aggressor = info.instancia.showing [1]:PegarCombatente (_, esta_barra.nome_inimigo) + local container = aggressor.spell_tables._ActorTable + local habilidades = {} + + local total = 0 + + for spellid, spell in _pairs (container) do + for _, actor in _ipairs (spell.targets._ActorTable) do + if (actor.nome == self.nome) then + total = total + actor.total + habilidades [#habilidades+1] = {spellid, actor.total, actor.nome} + end + end + end + + table.sort (habilidades, function (a, b) return a[2] > b[2] end) + + GameTooltip:AddLine (index..". "..esta_barra.nome_inimigo) + GameTooltip:AddLine (Loc ["STRING_DAMAGE_TAKEN_FROM2"]..":") + GameTooltip:AddLine (" ") + + for index, tabela in _ipairs (habilidades) do + local nome, rank, icone = _GetSpellInfo (tabela[1]) + if (index < 8) then + GameTooltip:AddDoubleLine (index..". |T"..icone..":0|t "..nome, _detalhes:comma_value (tabela[2]).." (".._cstr("%.1f", tabela[2]/total*100).."%)", 1, 1, 1, 1, 1, 1) + --GameTooltip:AddTexture (icone) + else + GameTooltip:AddDoubleLine (index..". "..nome, _detalhes:comma_value (tabela[2]).." (".._cstr("%.1f", tabela[2]/total*100).."%)", .65, .65, .65, .65, .65, .65) + end + end + + return true + --GameTooltip:AddDoubleLine (meus_danos[i][4][1]..": ", meus_danos[i][2].." (".._cstr("%.1f", meus_danos[i][3]).."%)", 1, 1, 1, 1, 1, 1) + +end function atributo_damage:MontaTooltipAlvos (esta_barra, index) -- eu ja sei quem é o alvo a mostrar os detalhes diff --git a/core/parser.lua b/core/parser.lua index ae60bc12..1c116d2e 100644 --- a/core/parser.lua +++ b/core/parser.lua @@ -1517,7 +1517,7 @@ end else --> successful casts (not interrupted) - if (_bit_band (who_flags, 0x00000040) ~= 0) then --> byte 2 = 4 (enemy) + if (_bit_band (who_flags, 0x00000040) ~= 0 and who_name) then --> byte 2 = 4 (enemy) --> damager local este_jogador = damage_cache [who_name] if (not este_jogador) then diff --git a/functions/attributes.lua b/functions/attributes.lua index 31974cc7..f08af52e 100644 --- a/functions/attributes.lua +++ b/functions/attributes.lua @@ -16,6 +16,7 @@ do "damage", --damage taken "damage", --friendly fire "miscdata", --frags + "damage", --enemy damage "heal", --healing done "heal", --hps @@ -47,7 +48,7 @@ do --[[ DAMAGE ]] dano = 1, --> identifier - [1] = 5, --> sub attributes + [1] = 6, --> sub attributes --[[ HEALING ]] cura = 2, --> identifier @@ -85,21 +86,24 @@ do damage_taken = 3, friendly_fire = 4, frags = 5, + enemies = 6, lista = { --[[ String Names ]] Loc ["STRING_ATTRIBUTE_DAMAGE_DONE"], Loc ["STRING_ATTRIBUTE_DAMAGE_DPS"], Loc ["STRING_ATTRIBUTE_DAMAGE_TAKEN"], Loc ["STRING_ATTRIBUTE_DAMAGE_FRIENDLYFIRE"], - Loc ["STRING_ATTRIBUTE_DAMAGE_FRAGS"] + Loc ["STRING_ATTRIBUTE_DAMAGE_FRAGS"], + Loc ["STRING_ATTRIBUTE_DAMAGE_ENEMIES"] }, icones = { {"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {0, .125, 0, 1}}, {"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {.125, .25, 0, 1}}, {"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {.25, .375, 0, 1}}, {"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {.375, .5, 0, 1}}, - {"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {.5, 0.625, 0, 1}} + {"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {.5, 0.625, 0, 1}}, + {"Interface\\AddOns\\Details\\images\\atributos_icones_damage", {0.625, .75, 0, 1}} }, - internal = {"total", "last_dps", "damage_taken", "friendlyfire_total", "total"} + internal = {"total", "last_dps", "damage_taken", "friendlyfire_total", "frags", "enemies"} }, { diff --git a/gumps/janela_info.lua b/gumps/janela_info.lua index 9942f92f..1b76de23 100644 --- a/gumps/janela_info.lua +++ b/gumps/janela_info.lua @@ -59,6 +59,10 @@ function _detalhes:AbreJanelaInfo (jogador) info.nome:SetText (nome) + if (info.instancia.atributo == 1 and info.instancia.sub_atributo == 6) then --> enemy + atributo_nome = sub_atributos [info.atributo].lista [1] .. " " .. Loc ["STRING_ACTORFRAME_REPORTOF"] + end + info.atributo_nome:SetText (atributo_nome) info.atributo_nome:SetPoint ("CENTER", info.nome, "CENTER", 0, 14) @@ -128,69 +132,83 @@ function gump:TrocaBackgroundInfo() if (info.atributo == 1) then --> DANO if (info.sub_atributo == 1 or info.sub_atributo == 2) then --> damage done / dps if (info.tipo ~= 1) then --> janela com as divisorias - info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part1") --> top left - info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part3") --> bottom left - info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part2") --> top right - info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part4") --> bottom right - info.targets:SetText ("Alvos:") + + info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]]) + info.bg1_sec_texture:SetTexture (nil) + info.targets:SetText (Loc ["STRING_TARGETS"] .. ":") info.tipo = 1 end elseif (info.sub_atributo == 3) then --> damage taken if (info.tipo ~= 2) then --> janela com fundo diferente - info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left - info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left - info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right - info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right - info.targets:SetText ("Alvos:") + info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]]) + info.bg1_sec_texture:SetTexture ([[Interface\AddOns\Details\images\info_window_damagetaken]]) + info.targets:SetText (Loc ["STRING_TARGETS"] .. ":") info.tipo = 2 end elseif (info.sub_atributo == 4) then --> friendly fire if (info.tipo ~= 3) then --> janela com fundo diferente - info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left - info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left - info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right - info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right - info.targets:SetText ("Habilidades:") + info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]]) + info.bg1_sec_texture:SetTexture ([[Interface\AddOns\Details\images\info_window_friendlyfire]]) + info.targets:SetText (Loc ["STRING_SPELLS"] .. ":") + info.tipo = 3 + end + elseif (info.sub_atributo == 6) then --> enemies + if (info.tipo ~= 3) then --> janela com fundo diferente + info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]]) + info.bg1_sec_texture:SetTexture ([[Interface\AddOns\Details\images\info_window_damagetaken]]) + info.targets:SetText (Loc ["STRING_DAMAGE_TAKEN_FROM"]) info.tipo = 3 end end elseif (info.atributo == 2) then --> HEALING if (info.sub_atributo == 1 or info.sub_atributo == 2 or info.sub_atributo == 3) then --> damage done / dps if (info.tipo ~= 1) then --> janela com as divisorias - info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part1") --> top left - info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part3") --> bottom left - info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part2") --> top right - info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part4") --> bottom right - info.targets:SetText ("Alvos:") + --info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part1") --> top left + --info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part3") --> bottom left + --info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part2") --> top right + --info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part4") --> bottom right + + info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]]) + info.bg1_sec_texture:SetTexture (nil) + info.targets:SetText (Loc ["STRING_TARGETS"] .. ":") info.tipo = 1 end elseif (info.sub_atributo == 4) then --> Healing taken if (info.tipo ~= 2) then --> janela com fundo diferente - info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left - info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left - info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right - info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right - info.targets:SetText ("Alvos:") + --info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left + --info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left + --info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right + --info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right + + info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]]) + info.bg1_sec_texture:SetTexture ([[Interface\AddOns\Details\images\info_window_damagetaken]]) + info.targets:SetText (Loc ["STRING_TARGETS"] .. ":") info.tipo = 2 end end elseif (info.atributo == 3) then --> REGEN if (info.tipo ~= 2) then --> janela com fundo diferente - info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left - info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left - info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right - info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right + --info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left + --info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left + --info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right + --info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right + + info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]]) + info.bg1_sec_texture:SetTexture (nil) info.targets:SetText ("Vindo de:") info.tipo = 2 end elseif (info.atributo == 4) then --> MISC if (info.tipo ~= 2) then --> janela com fundo diferente - info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left - info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left - info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right - info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right - info.targets:SetText ("Alvos:") + --info.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part1_sr") --> top left + --info.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part3_sr") --> bottom left + --info.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part2_sr") --> top right + --info.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\bg_part4_sr") --> bottom right + + info.bg1:SetTexture ([[Interface\AddOns\Details\images\info_window_background]]) + info.bg1_sec_texture:SetTexture (nil) + info.targets:SetText (Loc ["STRING_TARGETS"] .. ":") info.tipo = 2 end end @@ -702,9 +720,17 @@ function gump:CriaJanelaInfo() --> top left este_gump.bg1 = este_gump:CreateTexture (nil, "BORDER") este_gump.bg1:SetPoint ("TOPLEFT", este_gump, "TOPLEFT", 0, 0) - este_gump.bg1:SetWidth (512) - este_gump.bg1:SetHeight (256) + --este_gump.bg1:SetWidth (512) + --este_gump.bg1:SetHeight (256) este_gump.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part1") + este_gump.bg1:SetTexture ("Interface\\AddOns\\Details\\images\\info_window_background") + este_gump.bg1:SetDrawLayer ("BORDER", 1) + + este_gump.bg1_sec_texture = este_gump:CreateTexture (nil, "BORDER") + este_gump.bg1_sec_texture:SetDrawLayer ("BORDER", 2) + este_gump.bg1_sec_texture:SetPoint ("topleft", este_gump.bg1, "topleft", 356, -86) + este_gump.bg1_sec_texture:SetHeight (262) + este_gump.bg1_sec_texture:SetWidth (258) --> bottom left este_gump.bg3 = este_gump:CreateTexture (nil, "BORDER") @@ -713,6 +739,7 @@ function gump:CriaJanelaInfo() este_gump.bg3:SetWidth (512) este_gump.bg3:SetHeight (128) este_gump.bg3:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part3") + este_gump.bg3:Hide() --> top right este_gump.bg2 = este_gump:CreateTexture (nil, "BORDER") @@ -720,6 +747,7 @@ function gump:CriaJanelaInfo() este_gump.bg2:SetWidth (128) este_gump.bg2:SetHeight (128) este_gump.bg2:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part2") + este_gump.bg2:Hide() --> bottom right este_gump.bg4 = este_gump:CreateTexture (nil, "BORDER") @@ -729,6 +757,7 @@ function gump:CriaJanelaInfo() este_gump.bg4:SetWidth (128) este_gump.bg4:SetHeight (256) este_gump.bg4:SetTexture ("Interface\\AddOns\\Details\\images\\info_bg_part4") + este_gump.bg4:Hide() --> botão de fechar este_gump.fechar = _CreateFrame ("Button", nil, este_gump, "UIPanelCloseButton") @@ -1053,7 +1082,13 @@ local function SetBarraScripts (esta_barra, instancia, i) if (self.isAlvo) then --> monta o tooltip do alvo --> talvez devesse escurecer a janela no fundo... pois o tooltip é transparente e pode confundir GameTooltip:SetOwner (self, "ANCHOR_TOPRIGHT") - if (not self.minha_tabela or not self.minha_tabela:MontaTooltipAlvos (self, i)) then -- > poderia ser aprimerado para uma tailcall + + if (self.spellid == "enemies") then --> damage taken enemies + if (not self.minha_tabela or not self.minha_tabela:MontaTooltipDamageTaken (self, i)) then -- > poderia ser aprimerado para uma tailcall + return + end + + elseif (not self.minha_tabela or not self.minha_tabela:MontaTooltipAlvos (self, i)) then -- > poderia ser aprimerado para uma tailcall return end GameTooltip:Show() diff --git a/images/atributos_icones_damage.tga b/images/atributos_icones_damage.tga index efc7bb6b..22b577f7 100644 Binary files a/images/atributos_icones_damage.tga and b/images/atributos_icones_damage.tga differ diff --git a/images/bg_part1.tga b/images/bg_part1.tga deleted file mode 100644 index 7914a902..00000000 Binary files a/images/bg_part1.tga and /dev/null differ diff --git a/images/bg_part1_sr.tga b/images/bg_part1_sr.tga deleted file mode 100644 index a9e27308..00000000 Binary files a/images/bg_part1_sr.tga and /dev/null differ diff --git a/images/bg_part2.tga b/images/bg_part2.tga deleted file mode 100644 index da0beb48..00000000 Binary files a/images/bg_part2.tga and /dev/null differ diff --git a/images/bg_part2_sr.tga b/images/bg_part2_sr.tga deleted file mode 100644 index b0b18581..00000000 Binary files a/images/bg_part2_sr.tga and /dev/null differ diff --git a/images/bg_part3.tga b/images/bg_part3.tga deleted file mode 100644 index a2aa0559..00000000 Binary files a/images/bg_part3.tga and /dev/null differ diff --git a/images/bg_part3_sr.tga b/images/bg_part3_sr.tga deleted file mode 100644 index 8732eb40..00000000 Binary files a/images/bg_part3_sr.tga and /dev/null differ diff --git a/images/bg_part4_sr.tga b/images/bg_part4_sr.tga deleted file mode 100644 index 92342a6b..00000000 Binary files a/images/bg_part4_sr.tga and /dev/null differ diff --git a/images/info_bg_part1.tga b/images/info_bg_part1.tga deleted file mode 100644 index a81a3e30..00000000 Binary files a/images/info_bg_part1.tga and /dev/null differ diff --git a/images/info_bg_part2.tga b/images/info_bg_part2.tga deleted file mode 100644 index e216bcfb..00000000 Binary files a/images/info_bg_part2.tga and /dev/null differ diff --git a/images/info_bg_part3.tga b/images/info_bg_part3.tga deleted file mode 100644 index a2aa0559..00000000 Binary files a/images/info_bg_part3.tga and /dev/null differ diff --git a/images/info_bg_part4.tga b/images/info_bg_part4.tga deleted file mode 100644 index 34126a06..00000000 Binary files a/images/info_bg_part4.tga and /dev/null differ diff --git a/images/info_window_background.tga b/images/info_window_background.tga new file mode 100644 index 00000000..4925b021 Binary files /dev/null and b/images/info_window_background.tga differ diff --git a/images/info_window_damagetaken.tga b/images/info_window_damagetaken.tga new file mode 100644 index 00000000..ef9e3774 Binary files /dev/null and b/images/info_window_damagetaken.tga differ diff --git a/images/info_window_friendlyfire.tga b/images/info_window_friendlyfire.tga new file mode 100644 index 00000000..119ad605 Binary files /dev/null and b/images/info_window_friendlyfire.tga differ diff --git a/locales/Details-enUS.lua b/locales/Details-enUS.lua index 9dddda70..3ef5f436 100644 --- a/locales/Details-enUS.lua +++ b/locales/Details-enUS.lua @@ -3,8 +3,8 @@ if not Loc then return end -------------------------------------------------------------------------------------------------------------------------------------------- -- \n\n|cFFFFFF00-|r - - Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.3|r\n\n|cFFFFFF00-|r data capture now runs 4% faster.\n\n|cFFFFFF00-|r Fixed issue with pets were wasn't uptading owner activity time.\n\n|cFFFFFF00-|r Fixed healing being counted even out of combat.\n\n|cFFFFFF00-|r Fixed some problems with multi-boss encountes like Twin Consorts.\n\n|cFFFFFF00-|r Added options for concatenate trash segments.\n\n|cFFFFFF00-|r Added options for auto remove trash segments. \n\n|cFFFFFF00-|r Added options for change bar height. \n\n|cFFFFFF00-|r Encounter Details now display how many interrupted and successful cast of a boss skill.\n\n|cFFFFFF00v1.6.1|r\n\n|cFFFFFF00-|r Fixed:\n- a issue with debuff uptime.\n- overall data dps and hps for overall data on micro display.\n- many bugs involving sword and book menus.\n- garbage collector erasing actors with interactions with your group members.\n\n|cFFFFFF00-|r overall data now always use the combat data for measure dps and hps.\n\n|cFFFFFF00v1.6.0|r\n\n|cFFFFFF00-|r Added debuff uptime at misc attribute.\n\n|cFFFFFF00-|r Disabled attributes now have a darkness effect over sword menu.\n\n|cFFFFFF00-|r Fixed a issue were sometimes you need to /reload before change a talent.\n\n|cFFFFFF00v1.5.3|r\n\n|cFFFFFF00-|r Fixed a issue with report data during combat lockdown.\n\n|cFFFFFF00-|r Improved pet owner recognition and added a ignore list if couldn't find his owner.\n\n|cFFFFFF00-|r Added an option to display only frags on enemy players.\n\n|cFFFFFF00-|r Added class colors for frags.\n\n|cFFFFFF00v1.5.2|r\n\n|cFFFFFF00-|r Fixed a issue were turning off buff uptime was disabling healing done too.\n\n|cFFFFFF00-|r Avoidance statistics will not be recorded for pets, ungrouped players and monsters.\n\n|cFFFFFF00-|r Fixed a issue were sometimes buff uptime was taking too long to save data on logout.\n\n|cFFFFFF00v1.5.1|r\n\n|cFFFFFF00-|r Fixed a issue with report data were sometimes wasn't working.\n\n|cFFFFFF00v1.5.0|r\n\n|cFFFFFF00-|r Buff Uptime was been implemented over Miscellaneous attribute.\n\n|cFFFFFF00-|r Death Logs now also display cooldowns and last cooldown used.\n\n|cFFFFFF00-|r Added this window showing the latest changes.\n\n|cFFFFFF00-|r Fixed the issue were sometimes the instance stops to update when clicking on the attribute name over sword menu.\n\n|cFFFFFF00-|r Disabling Healing now shutdown the absorbs too, disabling auras doesn't interrupt absorbs any more.\n\n|cFFFFFF00-|r Friendly Fire now only track players which is inside a group.\n\n|cFFFFFF00-|r Fixed a issue were pet damage on target isn't added to owner target.\n\n|cFFFFFF00-|r Fixed a bug were refreshing a cooldown isn't counting.\n\n|cFFFFFF00-|r Added absorbs for shammy and monk 2P tier 16.\n\n|cFFFFFF00-|r Added slash command 'worldboss' and 'updates'.\n\n" + + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.5|r\n\n|cFFFFFF00-|r Added sub attribute 'Enemies' which shows, of course, only enemies.\n\n|cFFFFFF00-|r Fixed issue with successful spell cast.\n\n|cFFFFFF00v1.6.3|r\n\n|cFFFFFF00-|r data capture now runs 4% faster.\n\n|cFFFFFF00-|r Fixed issue with pets were wasn't uptading owner activity time.\n\n|cFFFFFF00-|r Fixed healing being counted even out of combat.\n\n|cFFFFFF00-|r Fixed some problems with multi-boss encountes like Twin Consorts.\n\n|cFFFFFF00-|r Added options for concatenate trash segments.\n\n|cFFFFFF00-|r Added options for auto remove trash segments. \n\n|cFFFFFF00-|r Added options for change bar height. \n\n|cFFFFFF00-|r Encounter Details now display how many interrupted and successful cast of a boss skill.\n\n|cFFFFFF00v1.6.1|r\n\n|cFFFFFF00-|r Fixed:\n- a issue with debuff uptime.\n- overall data dps and hps for overall data on micro display.\n- many bugs involving sword and book menus.\n- garbage collector erasing actors with interactions with your group members.\n\n|cFFFFFF00-|r overall data now always use the combat data for measure dps and hps.\n\n|cFFFFFF00v1.6.0|r\n\n|cFFFFFF00-|r Added debuff uptime at misc attribute.\n\n|cFFFFFF00-|r Disabled attributes now have a darkness effect over sword menu.\n\n|cFFFFFF00-|r Fixed a issue were sometimes you need to /reload before change a talent.\n\n|cFFFFFF00v1.5.3|r\n\n|cFFFFFF00-|r Fixed a issue with report data during combat lockdown.\n\n|cFFFFFF00-|r Improved pet owner recognition and added a ignore list if couldn't find his owner.\n\n|cFFFFFF00-|r Added an option to display only frags on enemy players.\n\n|cFFFFFF00-|r Added class colors for frags.\n\n|cFFFFFF00v1.5.2|r\n\n|cFFFFFF00-|r Fixed a issue were turning off buff uptime was disabling healing done too.\n\n|cFFFFFF00-|r Avoidance statistics will not be recorded for pets, ungrouped players and monsters.\n\n|cFFFFFF00-|r Fixed a issue were sometimes buff uptime was taking too long to save data on logout.\n\n|cFFFFFF00v1.5.1|r\n\n|cFFFFFF00-|r Fixed a issue with report data were sometimes wasn't working.\n\n|cFFFFFF00v1.5.0|r\n\n|cFFFFFF00-|r Buff Uptime was been implemented over Miscellaneous attribute.\n\n|cFFFFFF00-|r Death Logs now also display cooldowns and last cooldown used.\n\n|cFFFFFF00-|r Added this window showing the latest changes.\n\n|cFFFFFF00-|r Fixed the issue were sometimes the instance stops to update when clicking on the attribute name over sword menu.\n\n|cFFFFFF00-|r Disabling Healing now shutdown the absorbs too, disabling auras doesn't interrupt absorbs any more.\n\n|cFFFFFF00-|r Friendly Fire now only track players which is inside a group.\n\n|cFFFFFF00-|r Fixed a issue were pet damage on target isn't added to owner target.\n\n|cFFFFFF00-|r Fixed a bug were refreshing a cooldown isn't counting.\n\n|cFFFFFF00-|r Added absorbs for shammy and monk 2P tier 16.\n\n|cFFFFFF00-|r Added slash command 'worldboss' and 'updates'.\n\n" Loc ["STRING_DETAILS1"] = "|cffffaeaeDetails:|r " --> color and details name @@ -149,8 +149,11 @@ if not Loc then return end Loc ["STRING_ATTRIBUTE_DAMAGE_DONE"] = "Damage Done" Loc ["STRING_ATTRIBUTE_DAMAGE_DPS"] = "Damage Per Second" Loc ["STRING_ATTRIBUTE_DAMAGE_TAKEN"] = "Damage Taken" + Loc ["STRING_DAMAGE_TAKEN_FROM"] = "Damage Taken From" + Loc ["STRING_DAMAGE_TAKEN_FROM2"] = "applied damage with" Loc ["STRING_ATTRIBUTE_DAMAGE_FRIENDLYFIRE"] = "Friendly Fire" Loc ["STRING_ATTRIBUTE_DAMAGE_FRAGS"] = "Frags" + Loc ["STRING_ATTRIBUTE_DAMAGE_ENEMIES"] = "Enemies" Loc ["STRING_ATTRIBUTE_HEAL"] = "Heal" Loc ["STRING_ATTRIBUTE_HEAL_DONE"] = "Healing Done" diff --git a/locales/Details-ptBR.lua b/locales/Details-ptBR.lua index 9582d45a..b4436fc3 100644 --- a/locales/Details-ptBR.lua +++ b/locales/Details-ptBR.lua @@ -3,7 +3,7 @@ if not Loc then return end -------------------------------------------------------------------------------------------------------------------------------------------- - Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.3|r\n\n|cFFFFFF00-|r captura de dados agora roda 4% mais rapido.\n\n|cFFFFFF00-|r Corrigido problema onde os ajudantes nao atualizavam o tempo de atividade do dono.\n\n|cFFFFFF00-|r Corrigido problema onde o healing era contado mesmo fora do combate.\n\n|cFFFFFF00-|r Corrigido problema com chefes multiplos como Twin Consorts.\n\n|cFFFFFF00-|r Adicionada opcao para juntar os segmentos de trash mobs.\n\n|cFFFFFF00-|r Adicionada opcao para auto remover os segmentos de trash mobs. \n\n|cFFFFFF00-|r Adicionada opcao para alterar a altura das barras.\n\n|cFFFFFF00-|r Plugin Encounter Details agora mostra quantos cast bem sucedidos as magias interrompidas tiveram.\n\n|cFFFFFF00v1.6.1|r\n\n|cFFFFFF00-|r Corrigido:\n- problema com o tempo de debuffs.\n- dps dos dados gerais e o dps no micro display .\n- varios bugs envolvendo o menu da espada e do livro.\n- o coletor de lixo nao ira mais apagar jogadores com vinculo a membros do grupo.\n\n|cFFFFFF00-|r dados gerais agora sempre ira usar o tempo do combate para medir dps e hps.\n\n|cFFFFFF00v1.6.0|r\n\n|cFFFFFF00-|r Adicionado tempo de debuff no atributo miscelanea.\n\n|cFFFFFF00-|r Atributos desativados agora ficam escurecidos no menu da espada.\n\n|cFFFFFF00-|r Corrigido um problema aonde algumas vezes era necessario dar /reload para trocar um talento.\n\n|cFFFFFF00v1.5.3|r\n\n|cFFFFFF00-|r Corrigido problema ao reportar durante o combate.\n\n|cFFFFFF00-|r Melhorado a reconhecimento dos donos de ajudantes.\n\n|cFFFFFF00-|r Adicionada uma opcao para mostrar apenas frags em cima de jogadores inimigos.\n\n|cFFFFFF00-|r Adicionado cor e icone aos frags.\n\n|cFFFFFF00v1.5.2|r\n\n|cFFFFFF00-|r Corrigido problema onde desativando o tempo dos buffs estava desativando tambem a cura feita.\n\n|cFFFFFF00-|r Estatisticas de Avoidance nao seram mais capturadas para pessoas foram do grupo, monstros ou ajudantes.\n\n|cFFFFFF00-|r Corrigido problema onde as vezes estava demorando muito para salvar o tempo dos buffs ao sair do jogo.\n\n|cFFFFFF00v1.5.1|r\n\n|cFFFFFF00-|r Corrigido problema ao reportar o Dps onde as vezes nao mostrava nenhum jogador.\n\n|cFFFFFF00v1.5.0|r\n\n|cFFFFFF00-|r Buff Uptime foi implementado no atributo miscelanea.\n\n|cFFFFFF00-|r Cooldowns usados agora aparecem nos registros da morte.\n\n|cFFFFFF00-|r Implementado esta janela mostrando as atualizacoes.\n\n|cFFFFFF00-|r Corrigido problema onde algumas vezes clicando no nome do atributo fazia a instancia parar de atualizar.\n\n|cFFFFFF00-|r Desativando a cura agora para as absorcoes tambem. Desligando as Auras nao interrompe as absorcoes. \n\n|cFFFFFF00-|r Fogo Amigo agora conta apenas jogadores dentro do grupo.\n\n|cFFFFFF00-|r Corrigido problema onde o dano feito por um ajudando nao estava contando no alvo do dono.\n\n|cFFFFFF00-|r Corrigido problema onde a atualizacao de um cooldown nao estava sendo contada.\n\n|cFFFFFF00-|r Adicionada as magias de absorcao para 2P tier 16.\n\n|cFFFFFF00-|r Adicionado os comandos de barra 'worldboss' e 'updates'.\n\n|cFFFFFF00-|r Corrigido problema ao reportar onde algumas vezes nao estava funcionando." + Loc ["STRING_VERSION_LOG"] = "|cFFFFFF00v1.6.5|r\n\n|cFFFFFF00-|r Adicionado o sub atributo 'Inimigos' que mostra, eh claro, somente inimigos.\n\n|cFFFFFF00-|r Corrigido um problema na captura das magias conjuradas.|cFFFFFF00v1.6.3|r\n\n|cFFFFFF00-|r captura de dados agora roda 4% mais rapido.\n\n|cFFFFFF00-|r Corrigido problema onde os ajudantes nao atualizavam o tempo de atividade do dono.\n\n|cFFFFFF00-|r Corrigido problema onde o healing era contado mesmo fora do combate.\n\n|cFFFFFF00-|r Corrigido problema com chefes multiplos como Twin Consorts.\n\n|cFFFFFF00-|r Adicionada opcao para juntar os segmentos de trash mobs.\n\n|cFFFFFF00-|r Adicionada opcao para auto remover os segmentos de trash mobs. \n\n|cFFFFFF00-|r Adicionada opcao para alterar a altura das barras.\n\n|cFFFFFF00-|r Plugin Encounter Details agora mostra quantos cast bem sucedidos as magias interrompidas tiveram.\n\n|cFFFFFF00v1.6.1|r\n\n|cFFFFFF00-|r Corrigido:\n- problema com o tempo de debuffs.\n- dps dos dados gerais e o dps no micro display .\n- varios bugs envolvendo o menu da espada e do livro.\n- o coletor de lixo nao ira mais apagar jogadores com vinculo a membros do grupo.\n\n|cFFFFFF00-|r dados gerais agora sempre ira usar o tempo do combate para medir dps e hps.\n\n|cFFFFFF00v1.6.0|r\n\n|cFFFFFF00-|r Adicionado tempo de debuff no atributo miscelanea.\n\n|cFFFFFF00-|r Atributos desativados agora ficam escurecidos no menu da espada.\n\n|cFFFFFF00-|r Corrigido um problema aonde algumas vezes era necessario dar /reload para trocar um talento.\n\n|cFFFFFF00v1.5.3|r\n\n|cFFFFFF00-|r Corrigido problema ao reportar durante o combate.\n\n|cFFFFFF00-|r Melhorado a reconhecimento dos donos de ajudantes.\n\n|cFFFFFF00-|r Adicionada uma opcao para mostrar apenas frags em cima de jogadores inimigos.\n\n|cFFFFFF00-|r Adicionado cor e icone aos frags.\n\n|cFFFFFF00v1.5.2|r\n\n|cFFFFFF00-|r Corrigido problema onde desativando o tempo dos buffs estava desativando tambem a cura feita.\n\n|cFFFFFF00-|r Estatisticas de Avoidance nao seram mais capturadas para pessoas foram do grupo, monstros ou ajudantes.\n\n|cFFFFFF00-|r Corrigido problema onde as vezes estava demorando muito para salvar o tempo dos buffs ao sair do jogo.\n\n|cFFFFFF00v1.5.1|r\n\n|cFFFFFF00-|r Corrigido problema ao reportar o Dps onde as vezes nao mostrava nenhum jogador.\n\n|cFFFFFF00v1.5.0|r\n\n|cFFFFFF00-|r Buff Uptime foi implementado no atributo miscelanea.\n\n|cFFFFFF00-|r Cooldowns usados agora aparecem nos registros da morte.\n\n|cFFFFFF00-|r Implementado esta janela mostrando as atualizacoes.\n\n|cFFFFFF00-|r Corrigido problema onde algumas vezes clicando no nome do atributo fazia a instancia parar de atualizar.\n\n|cFFFFFF00-|r Desativando a cura agora para as absorcoes tambem. Desligando as Auras nao interrompe as absorcoes. \n\n|cFFFFFF00-|r Fogo Amigo agora conta apenas jogadores dentro do grupo.\n\n|cFFFFFF00-|r Corrigido problema onde o dano feito por um ajudando nao estava contando no alvo do dono.\n\n|cFFFFFF00-|r Corrigido problema onde a atualizacao de um cooldown nao estava sendo contada.\n\n|cFFFFFF00-|r Adicionada as magias de absorcao para 2P tier 16.\n\n|cFFFFFF00-|r Adicionado os comandos de barra 'worldboss' e 'updates'.\n\n|cFFFFFF00-|r Corrigido problema ao reportar onde algumas vezes nao estava funcionando." Loc ["STRING_DETAILS1"] = "|cffffaeaeDetalhes:|r " --> color and details name @@ -146,8 +146,11 @@ if not Loc then return end Loc ["STRING_ATTRIBUTE_DAMAGE_DONE"] = "Dano Feito" Loc ["STRING_ATTRIBUTE_DAMAGE_DPS"] = "Dano por Segundo" Loc ["STRING_ATTRIBUTE_DAMAGE_TAKEN"] = "Dano Recebido" + Loc ["STRING_DAMAGE_TAKEN_FROM"] = "Dano Recebido Vindo De" + Loc ["STRING_DAMAGE_TAKEN_FROM2"] = "aplicou dano com" Loc ["STRING_ATTRIBUTE_DAMAGE_FRIENDLYFIRE"] = "Fogo Amigo" Loc ["STRING_ATTRIBUTE_DAMAGE_FRAGS"] = "Inimigos Abatidos" + Loc ["STRING_ATTRIBUTE_DAMAGE_ENEMIES"] = "Inimigos" Loc ["STRING_ATTRIBUTE_HEAL"] = "Cura" Loc ["STRING_ATTRIBUTE_HEAL_DONE"] = "Cura Feita" diff --git a/startup.lua b/startup.lua index a1db0371..2f3f39a7 100644 --- a/startup.lua +++ b/startup.lua @@ -139,13 +139,10 @@ function _G._detalhes:Start() self.class_coords ["UNKNOW"] = {0.5, 0.75, 0.75, 1} self.class_coords ["UNGROUPPLAYER"] = {0.5, 0.75, 0.75, 1} - - - --> single click row function replace --damage, dps, damage taken, friendly fire - self.row_singleclick_overwrite [1] = {true, true, true, true, self.atributo_damage.ReportSingleFragsLine} + self.row_singleclick_overwrite [1] = {true, true, true, true, self.atributo_damage.ReportSingleFragsLine, true} --healing, hps, overheal, healing taken self.row_singleclick_overwrite [2] = {true, true, true, true, false, self.atributo_heal.ReportSingleDamagePreventedLine} --mana, rage, energy, runepower