- 4% parser speed up.
- added options for concatenate trash segments. - added options for auto eliminate trash segments. - added capture for enemy spell cast successful. - added options for bar height. - fixed problem were pets wasn't updating owner activity time. - fixed issue with healing done being computated out of combat. - fixed a bug with twin's encounter on Throne of Thunder. - plugin encounter details now show the amount of interrupted cast / successful cast.
This commit is contained in:
@@ -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.1"
|
||||
_detalhes.userversion = "v1.6.3"
|
||||
_detalhes.version = "Alpha 010"
|
||||
_detalhes.realversion = 10
|
||||
|
||||
@@ -29,6 +29,8 @@ do
|
||||
--> containers
|
||||
--> armazenas as funções do parser - All parse functions
|
||||
_detalhes.parser = {}
|
||||
_detalhes.parser_frame = CreateFrame ("Frame", nil, _UIParent)
|
||||
_detalhes.parser_frame:Hide()
|
||||
--> armazena os escudos - Shields information for absorbs
|
||||
_detalhes.escudos = {}
|
||||
--> armazena os overwirtes de spells pelo usuario
|
||||
|
||||
@@ -37,7 +37,7 @@ function habilidade_dano:NovaTabela (id, link, token) --aqui eu n
|
||||
total = 0, --total de dano aplicado por esta habilidade
|
||||
counter = 0, --conta quantas vezes a habilidade foi chamada
|
||||
id = id,
|
||||
--school = 0,
|
||||
successful_casted = 0,
|
||||
|
||||
--> normal
|
||||
n_min = 0,
|
||||
@@ -52,31 +52,21 @@ function habilidade_dano:NovaTabela (id, link, token) --aqui eu n
|
||||
c_dmg = 0,
|
||||
|
||||
--> glacing
|
||||
--g_min = 0, --not sure but, glancing min and max shouldn't be necessary
|
||||
--g_max = 0, --
|
||||
g_amt = 0,
|
||||
g_dmg = 0,
|
||||
|
||||
--> resisted
|
||||
--r_min = 0, --not sure but, resisted min and max shouldn't be necessary
|
||||
--r_max = 0, --
|
||||
r_amt = 0,
|
||||
r_dmg = 0,
|
||||
|
||||
--> blocked
|
||||
--b_min = 0, --not sure but, block min and max shouldn't be necessary
|
||||
--b_max = 0, --
|
||||
b_amt = 0,
|
||||
b_dmg = 0,
|
||||
|
||||
--> obsorved
|
||||
--a_min = 0, --not sure but, absorbed min and max shouldn't be necessary
|
||||
--a_max = 0, --
|
||||
a_amt = 0,
|
||||
a_dmg = 0,
|
||||
|
||||
--crushing = 0, --> this still exists?
|
||||
|
||||
targets = container_combatentes:NovoContainer (container_damage_target)
|
||||
}
|
||||
|
||||
@@ -117,7 +107,6 @@ function habilidade_dano:Add (serial, nome, flag, amount, who_nome, resisted, bl
|
||||
|
||||
self.counter = self.counter + 1
|
||||
|
||||
--local alvo = self.targets:PegarCombatente (serial, nome, flag, true)
|
||||
local alvo = self.targets._NameIndexTable [nome]
|
||||
if (not alvo) then
|
||||
alvo = self.targets:PegarCombatente (serial, nome, flag, true)
|
||||
@@ -128,56 +117,26 @@ function habilidade_dano:Add (serial, nome, flag, amount, who_nome, resisted, bl
|
||||
if (resisted and resisted > 0) then
|
||||
self.r_dmg = self.r_dmg+amount --> tabela.total é o total de dano
|
||||
self.r_amt = self.r_amt+1 --> tabela.total é o total de dano
|
||||
--if (amount > self.r_max) then
|
||||
-- self.r_max = amount
|
||||
--end
|
||||
--if (self.r_min > amount or self.r_min == 0) then
|
||||
-- self.r_min = amount
|
||||
--end
|
||||
end
|
||||
|
||||
if (blocked and blocked > 0) then
|
||||
self.b_dmg = self.b_dmg+amount --> amount é o total de dano
|
||||
self.b_amt = self.b_amt+1 --> amount é o total de dano
|
||||
--if (amount > self.b_max) then
|
||||
-- self.b_max = amount
|
||||
--end
|
||||
--if (self.b_min > amount or self.b_min == 0) then
|
||||
-- self.b_min = amount
|
||||
--end
|
||||
end
|
||||
|
||||
if (absorbed and absorbed > 0) then
|
||||
self.a_dmg = self.a_dmg+amount --> amount é o total de dano
|
||||
self.a_amt = self.a_amt+1 --> amount é o total de dano
|
||||
--if (amount > self.a_max) then
|
||||
-- self.a_max = amount
|
||||
--end
|
||||
--if (self.a_min > amount or self.a_min == 0) then
|
||||
-- self.a_min = amount
|
||||
--end
|
||||
end
|
||||
|
||||
--if (amount and amount > 0) then
|
||||
--if (amount and amount > 0) then
|
||||
|
||||
self.total = self.total + amount
|
||||
|
||||
--alvo:AddQuantidade (amount)
|
||||
alvo.total = alvo.total + amount
|
||||
|
||||
if (glacing) then
|
||||
-- esta_tabela.glacing = {["mim"] = 0, ["max"] = 0, ["total"] = 0, ["dmg"] = 0}
|
||||
self.g_dmg = self.g_dmg+amount --> amount é o total de dano
|
||||
self.g_amt = self.g_amt+1 --> amount é o total de dano
|
||||
--if (amount > self.g_max) then
|
||||
-- self.g_max = amount
|
||||
--end
|
||||
--if (self.g_min > amount or self.g_min == 0) then
|
||||
-- self.g_min = amount
|
||||
--end
|
||||
|
||||
elseif (critical) then
|
||||
--esta_tabela.critico = {["mim"] = 0, ["max"] = 0, ["total"] = 0, ["dmg"] = 0}
|
||||
self.c_dmg = self.c_dmg+amount --> amount é o total de dano
|
||||
self.c_amt = self.c_amt+1 --> amount é o total de dano
|
||||
if (amount > self.c_max) then
|
||||
@@ -187,7 +146,6 @@ function habilidade_dano:Add (serial, nome, flag, amount, who_nome, resisted, bl
|
||||
self.c_min = amount
|
||||
end
|
||||
else
|
||||
--esta_tabela.normal = {["mim"] = 0, ["max"] = 0, ["total"] = 0, ["dmg"] = 0}
|
||||
self.n_dmg = self.n_dmg+amount
|
||||
self.n_amt = self.n_amt+1
|
||||
if (amount > self.n_max) then
|
||||
@@ -276,7 +234,8 @@ end
|
||||
habilidade_dano.__add = function (tabela1, tabela2)
|
||||
tabela1.total = tabela1.total + tabela2.total
|
||||
tabela1.counter = tabela1.counter + tabela2.counter
|
||||
|
||||
tabela1.successful_casted = tabela1.successful_casted + tabela2.successful_casted
|
||||
|
||||
tabela1.n_min = tabela1.n_min + tabela2.n_min
|
||||
tabela1.n_max = tabela1.n_max + tabela2.n_max
|
||||
tabela1.n_amt = tabela1.n_amt + tabela2.n_amt
|
||||
@@ -315,6 +274,7 @@ end
|
||||
habilidade_dano.__sub = function (tabela1, tabela2)
|
||||
tabela1.total = tabela1.total - tabela2.total
|
||||
tabela1.counter = tabela1.counter - tabela2.counter
|
||||
tabela1.successful_casted = tabela1.successful_casted - tabela2.successful_casted
|
||||
|
||||
tabela1.n_min = tabela1.n_min - tabela2.n_min
|
||||
tabela1.n_max = tabela1.n_max - tabela2.n_max
|
||||
|
||||
@@ -860,6 +860,9 @@ function _detalhes:RestauraJanela (index, temp)
|
||||
|
||||
self.consolidate = self.consolidate or false
|
||||
self.icons = self.icons or {true, true, true, true}
|
||||
|
||||
--> teste
|
||||
--self.barrasInfo.altura = 14
|
||||
|
||||
self.barrasInfo.mostrando = 0
|
||||
self.barrasInfo.criadas = 0
|
||||
@@ -970,7 +973,19 @@ function _detalhes:RefreshBars (instance)
|
||||
self = instance
|
||||
end
|
||||
if (self.barras and self.barras[1]) then
|
||||
|
||||
local altura = self.barrasInfo.altura
|
||||
|
||||
for index, row in _ipairs (self.barras) do
|
||||
|
||||
local y = self.barrasInfo.alturaReal * (row.row_id - 1)
|
||||
y = y*-1
|
||||
row:SetPoint ("TOPLEFT", self.baseframe, "TOPLEFT", self.barrasInfo.espaco.esquerda, y)
|
||||
row:SetHeight (altura)
|
||||
row.icone_classe:SetHeight (altura)
|
||||
row.icone_classe:SetWidth (altura)
|
||||
row.icone_terceiro:SetHeight (altura)
|
||||
row.icone_terceiro:SetWidth (altura)
|
||||
|
||||
row.textura:SetTexture (self.barrasInfo.textura)
|
||||
|
||||
@@ -984,8 +999,8 @@ function _detalhes:RefreshBars (instance)
|
||||
row.background:SetVertexColor (r, g, b, c[4])
|
||||
end
|
||||
|
||||
row.texto_esquerdo:SetFont (self.barrasInfo.font or "GameFontHighlight", self.barrasInfo.fontSize or self.barrasInfo.altura*0.75)
|
||||
row.texto_direita:SetFont (self.barrasInfo.font or "GameFontHighlight", self.barrasInfo.fontSize or self.barrasInfo.altura*0.75)
|
||||
row.texto_esquerdo:SetFont (self.barrasInfo.font or "GameFontHighlight", self.barrasInfo.fontSize or altura * 0.75)
|
||||
row.texto_direita:SetFont (self.barrasInfo.font or "GameFontHighlight", self.barrasInfo.fontSize or altura * 0.75)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1005,7 +1005,8 @@ function _detalhes:CatchRaidDebuffUptime (in_or_out) -- "DEBUFF_UPTIME_IN"
|
||||
|
||||
for raidIndex = 1, _GetNumGroupMembers() do
|
||||
local his_target = _UnitGUID ("raid"..raidIndex.."target")
|
||||
if (his_target and not checked [his_target] and UnitReaction ("raid"..raidIndex.."target", "player") <= 4) then
|
||||
local rect = UnitReaction ("raid"..raidIndex.."target", "player")
|
||||
if (his_target and rect and not checked [his_target] and rect <= 4) then
|
||||
|
||||
checked [his_target] = true
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ function historico:adicionar (tabela)
|
||||
--> fazer limpeza na tabela
|
||||
|
||||
local _segundo_combate = self.tabelas[2]
|
||||
local _terceiro_combate = self.tabelas[3]
|
||||
|
||||
local container_damage = _segundo_combate [1]
|
||||
local container_heal = _segundo_combate [2]
|
||||
@@ -63,29 +64,58 @@ function historico:adicionar (tabela)
|
||||
end
|
||||
end
|
||||
|
||||
--[[
|
||||
if (self.tabelas[3]) then
|
||||
if (self.tabelas[3].is_trash and self.tabelas[2].is_trash and not self.tabelas[3].is_boss and not self.tabelas[2].is_boss) then
|
||||
--> tabela 2 deve ser deletada e somada a tabela 1
|
||||
if (_detalhes.debug) then
|
||||
detalhes:Msg ("(debug) concatenating two trash segments.")
|
||||
if (_detalhes.trash_auto_remove) then
|
||||
if (_terceiro_combate) then
|
||||
if (_terceiro_combate.is_trash and not _terceiro_combate.is_boss) then
|
||||
_detalhes.tabela_overall = _detalhes.tabela_overall - _terceiro_combate
|
||||
--> verificar novamente a time machine
|
||||
for _, jogador in ipairs (_terceiro_combate [1]._ActorTable) do --> damage
|
||||
if (jogador.timeMachine) then
|
||||
jogador:DesregistrarNaTimeMachine()
|
||||
end
|
||||
end
|
||||
for _, jogador in ipairs (_terceiro_combate [2]._ActorTable) do --> heal
|
||||
if (jogador.timeMachine) then
|
||||
jogador:DesregistrarNaTimeMachine()
|
||||
end
|
||||
end
|
||||
--> remover
|
||||
_table_remove (self.tabelas, 3)
|
||||
_detalhes:SendEvent ("DETAILS_DATA_SEGMENTREMOVED", nil, nil)
|
||||
end
|
||||
|
||||
self.tabelas[2] = self.tabelas[2] + self.tabelas[3]
|
||||
_detalhes.tabela_overall = _detalhes.tabela_overall - self.tabelas[3]
|
||||
|
||||
self.tabelas[2].is_trash = true
|
||||
|
||||
--> remover
|
||||
_table_remove (self.tabelas, 3)
|
||||
_detalhes:SendEvent ("DETAILS_DATA_SEGMENTREMOVED", nil, nil)
|
||||
end
|
||||
|
||||
--> debug
|
||||
--self.tabelas[2] = self.tabelas[2] + self.tabelas[3]
|
||||
--_table_remove (self.tabelas, 3)
|
||||
elseif (_detalhes.trash_concatenate) then
|
||||
|
||||
if (_terceiro_combate) then
|
||||
if (_terceiro_combate.is_trash and _segundo_combate.is_trash and not _terceiro_combate.is_boss and not _segundo_combate.is_boss) then
|
||||
--> tabela 2 deve ser deletada e somada a tabela 1
|
||||
if (_detalhes.debug) then
|
||||
detalhes:Msg ("(debug) concatenating two trash segments.")
|
||||
end
|
||||
|
||||
_segundo_combate = _segundo_combate + _terceiro_combate
|
||||
_detalhes.tabela_overall = _detalhes.tabela_overall - _terceiro_combate
|
||||
|
||||
_segundo_combate.is_trash = true
|
||||
|
||||
--> verificar novamente a time machine
|
||||
for _, jogador in ipairs (_terceiro_combate [1]._ActorTable) do --> damage
|
||||
if (jogador.timeMachine) then
|
||||
jogador:DesregistrarNaTimeMachine()
|
||||
end
|
||||
end
|
||||
for _, jogador in ipairs (_terceiro_combate [2]._ActorTable) do --> heal
|
||||
if (jogador.timeMachine) then
|
||||
jogador:DesregistrarNaTimeMachine()
|
||||
end
|
||||
end
|
||||
--> remover
|
||||
_table_remove (self.tabelas, 3)
|
||||
_detalhes:SendEvent ("DETAILS_DATA_SEGMENTREMOVED", nil, nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
--]]
|
||||
|
||||
end
|
||||
|
||||
|
||||
+45
-96
@@ -206,7 +206,6 @@
|
||||
end
|
||||
|
||||
end
|
||||
--]]
|
||||
|
||||
--> damager shadow
|
||||
local shadow = este_jogador.shadow
|
||||
@@ -348,6 +347,8 @@
|
||||
owner_target = meu_dono.targets._ActorTable [owner_target]
|
||||
end
|
||||
owner_target.total = owner_target.total + amount
|
||||
|
||||
meu_dono.last_event = _tempo
|
||||
end
|
||||
|
||||
--> actor
|
||||
@@ -374,7 +375,6 @@
|
||||
spell = este_jogador.spell_tables:PegaHabilidade (spellid, true, token)
|
||||
end
|
||||
|
||||
--return spell:Add (alvo_serial, alvo_name, alvo_flags, amount, who_name, resisted, blocked, absorbed, critical, glacing, token)
|
||||
return spell_damage_func (spell, alvo_serial, alvo_name, alvo_flags, amount, who_name, resisted, blocked, absorbed, critical, glacing, token)
|
||||
end
|
||||
|
||||
@@ -457,6 +457,11 @@
|
||||
------------------------------------------------------------------------------------------------
|
||||
--> early checks and fixes
|
||||
|
||||
--> only capture heal if is in combat
|
||||
if (not _in_combat) then
|
||||
return
|
||||
end
|
||||
|
||||
--> check nil serial against pets
|
||||
if (who_serial == "0x0000000000000000") then
|
||||
if (who_flags and _bit_band (who_flags, OBJECT_TYPE_PETS) ~= 0) then --> é um pet
|
||||
@@ -486,11 +491,10 @@
|
||||
|
||||
_current_heal_container.need_refresh = true
|
||||
_overall_heal_container.need_refresh = true
|
||||
|
||||
|
||||
------------------------------------------------------------------------------------------------
|
||||
--> get actors
|
||||
|
||||
--> debug - no cache
|
||||
local este_jogador, meu_dono = healing_cache [who_name]
|
||||
if (not este_jogador) then --> pode ser um desconhecido ou um pet
|
||||
este_jogador, meu_dono, who_name = _current_heal_container:PegarCombatente (who_serial, who_name, who_flags, true)
|
||||
@@ -1487,7 +1491,7 @@
|
||||
|
||||
end
|
||||
|
||||
--> search key: ~spellcast castspell
|
||||
--> search key: ~spellcast ~castspell ~cast
|
||||
function parser:spellcast (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype)
|
||||
|
||||
--print (token, time, "WHO:",who_serial, who_name, who_flags, "TARGET:",alvo_serial, alvo_name, alvo_flags, "SPELL:",spellid, spellname, spelltype)
|
||||
@@ -1512,7 +1516,21 @@
|
||||
return
|
||||
end
|
||||
else
|
||||
-->
|
||||
--> successful casts (not interrupted)
|
||||
if (_bit_band (who_flags, 0x00000040) ~= 0) then --> byte 2 = 4 (enemy)
|
||||
--> damager
|
||||
local este_jogador = damage_cache [who_name]
|
||||
if (not este_jogador) then
|
||||
este_jogador = _current_damage_container:PegarCombatente (who_serial, who_name, who_flags, true)
|
||||
end
|
||||
--> actor spells table
|
||||
local spell = este_jogador.spell_tables._ActorTable [spellid]
|
||||
if (not spell) then
|
||||
spell = este_jogador.spell_tables:PegaHabilidade (spellid, true, token)
|
||||
end
|
||||
spell.successful_casted = spell.successful_casted + 1
|
||||
--print ("cast success", who_name, spellname)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
@@ -1924,7 +1942,7 @@
|
||||
--> build dead
|
||||
|
||||
|
||||
if (alvo_flags and _bit_band (alvo_flags, 0x00000008) ~= 0) then -- and _in_combat --byte 1 = 8 (AFFILIATION_OUTSIDER)
|
||||
if (_in_combat and alvo_flags and _bit_band (alvo_flags, 0x00000008) ~= 0) then -- and _in_combat --byte 1 = 8 (AFFILIATION_OUTSIDER)
|
||||
--> outsider death while in combat
|
||||
|
||||
--> frags
|
||||
@@ -1966,10 +1984,13 @@
|
||||
|
||||
--> check if it's done
|
||||
local its_done = true
|
||||
for _, killed in pairs (_detalhes.encounter.data) do
|
||||
for npcID, killed in pairs (_detalhes.encounter.data) do
|
||||
if (not killed) then
|
||||
its_done = false
|
||||
--print ("npc",npcID,"NAO esta morto","quem morreu:",alvo_name)
|
||||
break
|
||||
else
|
||||
--print ("npc",npcID,"esta morto","quem morreu:",alvo_name)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1978,6 +1999,9 @@
|
||||
if (_detalhes.debug) then
|
||||
_detalhes:Msg ("(debug) combat finished: encounter objective is completed")
|
||||
end
|
||||
|
||||
--print ("saindo do combate")
|
||||
|
||||
_detalhes:SairDoCombate (true)
|
||||
end
|
||||
end
|
||||
@@ -2017,44 +2041,6 @@
|
||||
misc_cache [alvo_name] = este_jogador
|
||||
end
|
||||
end
|
||||
|
||||
--[[
|
||||
if (dano.last_events_table) then
|
||||
|
||||
local novaTabela = {}
|
||||
local counter = 1
|
||||
|
||||
--> junta os danos iguais
|
||||
for i = 1, #dano.last_events_table, 1 do
|
||||
|
||||
local este_dano = dano.last_events_table[i]
|
||||
local proximo_dano = dano.last_events_table[counter+1]
|
||||
|
||||
if (este_dano and proximo_dano) then
|
||||
|
||||
local spellId_this = este_dano[2]
|
||||
local tempo_this = este_dano[4]
|
||||
|
||||
local spellId_next = proximo_dano[2]
|
||||
local tempo_next = proximo_dano[4]
|
||||
|
||||
if (spellId_this == spellId_next and _cstr ("%.1f", tempo_this) == _cstr ("%.1f", tempo_next)) then
|
||||
este_dano[3] = este_dano[3] + proximo_dano[3]
|
||||
if (not este_dano [7]) then
|
||||
este_dano[7] = 2
|
||||
else
|
||||
este_dano[7] = este_dano[7] + 1
|
||||
end
|
||||
_table_remove (dano.last_events_table, counter+1)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
counter = counter + 1
|
||||
|
||||
end
|
||||
end
|
||||
--]]
|
||||
|
||||
--> monta a estrutura da morte pegando a tabela de dano e a tabela de cura
|
||||
local dano = _current_combat[1]:PegarCombatente (alvo_serial, alvo_name, alvo_flags, true) --> container do dano
|
||||
@@ -2313,60 +2299,13 @@
|
||||
|
||||
|
||||
-- PARSER
|
||||
--serach key: ~parser
|
||||
function parser:do_parser (time, token, hidding, who_serial, who_name, who_flags, who_flags2, alvo_serial, alvo_name, alvo_flags, alvo_flags2, ...)
|
||||
--serach key: ~parser ~event
|
||||
|
||||
--print (token)
|
||||
|
||||
-- DEBUG
|
||||
--[
|
||||
--if (alvo_name == "Ditador") then
|
||||
-- local a, b, c, d, e, f, g, h, i, j, k = select (1, ...)
|
||||
-- print (token, who_name, a, b, c, d, e, f, g, h, i, j, k)
|
||||
--end
|
||||
--]]
|
||||
--[[
|
||||
if (who_name == "Ditador") then
|
||||
if (token:find ("CAST")) then
|
||||
|
||||
if (token == "SPELL_CAST_START") then
|
||||
_detalhes.castStart = time
|
||||
end
|
||||
|
||||
if (token == "SPELL_CAST_SUCCESS") then
|
||||
local tempoGasto = time - _detalhes.castStart
|
||||
local default_cast_time = 2500 -- 2.5 sec
|
||||
print (tempoGasto)
|
||||
|
||||
local arg1, arg2, arg3, arg4, arg5 = select (1, ...)
|
||||
local cd = GetSpellCooldown (arg1)
|
||||
print (cd)
|
||||
end
|
||||
--local arg1, arg2, arg3, arg4, arg5 = select (1, ...)
|
||||
--print (token, arg1, arg2, arg3, arg4, arg5)
|
||||
--local name, rank, icon, cost, isFunnel, powerType, castTime, minRange, maxRange = GetSpellInfo (arg1)
|
||||
--print (castTime)
|
||||
end
|
||||
end
|
||||
--]]
|
||||
|
||||
local funcao = token_list [token]
|
||||
if (funcao) then
|
||||
return funcao (nil, token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, ... )
|
||||
else
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
--serach key: ~event
|
||||
function _detalhes:OnEvent (evento, ...)
|
||||
|
||||
--print (evento, select (1, ...))
|
||||
|
||||
if (evento == "COMBAT_LOG_EVENT_UNFILTERED") then
|
||||
return parser:do_parser (...)
|
||||
|
||||
elseif (evento == "ZONE_CHANGED_NEW_AREA" or evento == "PLAYER_ENTERING_WORLD") then
|
||||
|
||||
if (evento == "ZONE_CHANGED_NEW_AREA" or evento == "PLAYER_ENTERING_WORLD") then
|
||||
|
||||
local zoneName, zoneType, _, _, _, _, _, zoneMapID = _GetInstanceInfo()
|
||||
|
||||
@@ -2512,6 +2451,16 @@
|
||||
end
|
||||
|
||||
_detalhes.listener:SetScript ("OnEvent", _detalhes.OnEvent)
|
||||
|
||||
function _detalhes:OnParserEvent (evento, time, token, hidding, who_serial, who_name, who_flags, who_flags2, alvo_serial, alvo_name, alvo_flags, alvo_flags2, ...)
|
||||
local funcao = token_list [token]
|
||||
if (funcao) then
|
||||
return funcao (nil, token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, ... )
|
||||
else
|
||||
return
|
||||
end
|
||||
end
|
||||
_detalhes.parser_frame:SetScript ("OnEvent", _detalhes.OnParserEvent)
|
||||
|
||||
function _detalhes:UpdateParser()
|
||||
_tempo = _detalhes._tempo
|
||||
|
||||
@@ -122,6 +122,8 @@ function _detalhes:SaveDataOnLogout()
|
||||
_detalhes_global.memory_threshold = _detalhes.memory_threshold
|
||||
_detalhes_global.memory_ram = _detalhes.memory_ram
|
||||
_detalhes_global.remove_realm_from_name = _detalhes.remove_realm_from_name
|
||||
_detalhes_global.trash_concatenate = _detalhes.trash_concatenate
|
||||
_detalhes_global.trash_auto_remove = _detalhes.trash_auto_remove
|
||||
|
||||
_detalhes_global.SpellOverwriteUser = _detalhes.SpellOverwriteUser
|
||||
|
||||
@@ -330,7 +332,9 @@ end --]]
|
||||
_detalhes.memory_threshold = _detalhes_global.memory_threshold
|
||||
_detalhes.memory_ram = _detalhes_global.memory_ram
|
||||
_detalhes.remove_realm_from_name = _detalhes_global.remove_realm_from_name
|
||||
|
||||
_detalhes.trash_concatenate = _detalhes_global.trash_concatenate
|
||||
_detalhes.trash_auto_remove = _detalhes_global.trash_auto_remove
|
||||
|
||||
_detalhes.SpellOverwriteUser = _detalhes_global.SpellOverwriteUser or _detalhes.SpellOverwriteUser
|
||||
else
|
||||
_detalhes.is_first_run = true
|
||||
|
||||
@@ -339,6 +339,28 @@ function _detalhes:OpenOptionsWindow (instance)
|
||||
end
|
||||
window.fragsPvpSlider.tooltip = "Only record frags from player characters."
|
||||
|
||||
--------------- Concatenate Trash
|
||||
g:NewLabel (window, _, "$parentConcatenateTrash", "concatenateTrashLabel", "concatenate clean up segments")
|
||||
window.concatenateTrashLabel:SetPoint (10, -344)
|
||||
--
|
||||
g:NewSwitch (window, _, "$parentConcatenateTrashSlider", "concatenateTrashSlider", 60, 20, _, _, _detalhes.trash_concatenate)
|
||||
window.concatenateTrashSlider:SetPoint ("left", window.concatenateTrashLabel, "right")
|
||||
window.concatenateTrashSlider.OnSwitch = function (self, _, amount) --> slider, fixedValue, sliderValue
|
||||
_detalhes.trash_concatenate = amount
|
||||
end
|
||||
window.concatenateTrashSlider.tooltip = "Concatenate the next boss segments into only one."
|
||||
|
||||
--------------- Erase Trash
|
||||
g:NewLabel (window, _, "$parentEraseTrash", "eraseTrashLabel", "remove clean up segments")
|
||||
window.eraseTrashLabel:SetPoint (10, -359)
|
||||
--
|
||||
g:NewSwitch (window, _, "$parentRemoveTrashSlider", "removeTrashSlider", 60, 20, _, _, _detalhes.trash_auto_remove)
|
||||
window.removeTrashSlider:SetPoint ("left", window.eraseTrashLabel, "right")
|
||||
window.removeTrashSlider.OnSwitch = function (self, _, amount) --> slider, fixedValue, sliderValue
|
||||
_detalhes.trash_auto_remove = amount
|
||||
end
|
||||
window.removeTrashSlider.tooltip = "Auto erase the next boss segments."
|
||||
|
||||
-- Current Instalnce --------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -364,7 +386,7 @@ function _detalhes:OpenOptionsWindow (instance)
|
||||
g:NewLabel (window, _, "$parentFontSizeLabel", "fonsizeLabel", "text size")
|
||||
window.fonsizeLabel:SetPoint (250, -53)
|
||||
--
|
||||
g:NewSlider (window, _, "$parentSliderFontSize", "fonsizeSlider", 90, 20, 8, 15, 1, tonumber (instance.barrasInfo.fontSize)) --parent, container, name, member, w, h, min, max, step, defaultv
|
||||
g:NewSlider (window, _, "$parentSliderFontSize", "fonsizeSlider", 150, 20, 8, 15, 1, tonumber (instance.barrasInfo.fontSize)) --parent, container, name, member, w, h, min, max, step, defaultv
|
||||
window.fonsizeSlider:SetPoint ("left", window.fonsizeLabel, "right", 2)
|
||||
window.fonsizeSlider:SetThumbSize (50)
|
||||
window.fonsizeSlider:SetHook ("OnValueChange", function (self, instance, amount)
|
||||
@@ -555,6 +577,21 @@ function _detalhes:OpenOptionsWindow (instance)
|
||||
instance:InstanceRefreshRows()
|
||||
end
|
||||
|
||||
--------------- Bar Height
|
||||
g:NewLabel (window, _, "$parentRowHeightLabel", "rowHeightLabel", "bar height")
|
||||
window.rowHeightLabel:SetPoint (250, -163)
|
||||
--
|
||||
g:NewSlider (window, _, "$parentSliderRowHeight", "rowHeightSlider", 170, 20, 10, 30, 1, tonumber (instance.barrasInfo.altura)) --parent, container, name, member, w, h, min, max, step, defaultv
|
||||
window.rowHeightSlider:SetPoint ("left", window.rowHeightLabel, "right", 2)
|
||||
window.rowHeightSlider:SetThumbSize (50)
|
||||
window.rowHeightSlider:SetHook ("OnValueChange", function (self, instance, amount)
|
||||
instance.barrasInfo.altura = amount
|
||||
instance.barrasInfo.alturaReal = instance.barrasInfo.altura+instance.barrasInfo.espaco.entre
|
||||
instance:RefreshBars()
|
||||
instance:InstanceReset()
|
||||
instance:ReajustaGump()
|
||||
end)
|
||||
|
||||
--------------- Background
|
||||
|
||||
local onSelectSecTexture = function (self, instance, texturePath)
|
||||
@@ -1333,6 +1370,9 @@ function _detalhes:OpenOptionsWindow (instance)
|
||||
_G.DetailsOptionsWindowFontDropdown.MyObject:SetFixedParameter (instance)
|
||||
_G.DetailsOptionsWindowFontDropdown.MyObject:Select (instance.barrasInfo.fontName)
|
||||
--
|
||||
_G.DetailsOptionsWindowSliderRowHeight.MyObject:SetFixedParameter (instance)
|
||||
_G.DetailsOptionsWindowSliderRowHeight.MyObject:SetValue (instance.barrasInfo.altura)
|
||||
--
|
||||
_G.DetailsOptionsWindowSliderFontSize.MyObject:SetFixedParameter (instance)
|
||||
_G.DetailsOptionsWindowSliderFontSize.MyObject:SetValue (instance.barrasInfo.fontSize)
|
||||
--
|
||||
|
||||
@@ -2174,11 +2174,12 @@ end
|
||||
function gump:NewRow (instancia, index)
|
||||
return gump:CriaNovaBarra (instancia, index)
|
||||
end
|
||||
|
||||
--> search key: ~row ~barra
|
||||
function gump:CriaNovaBarra (instancia, index)
|
||||
|
||||
local BaseFrame = instancia.baseframe
|
||||
local esta_barra = _CreateFrame ("Button", "DetailsBarra_"..instancia.meu_id.."_"..index, BaseFrame)
|
||||
esta_barra.row_id = index
|
||||
local y = instancia.barrasInfo.alturaReal*(index-1)
|
||||
|
||||
y = y*-1
|
||||
|
||||
@@ -4,7 +4,7 @@ if not Loc then return end
|
||||
--------------------------------------------------------------------------------------------------------------------------------------------
|
||||
-- \n\n|cFFFFFF00-|r
|
||||
|
||||
Loc ["STRING_VERSION_LOG"] = "|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.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
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ if not Loc then return end
|
||||
|
||||
--------------------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Loc ["STRING_VERSION_LOG"] = "|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.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
|
||||
|
||||
|
||||
@@ -1104,10 +1104,21 @@ function EncounterDetails:OpenAndRefresh()
|
||||
barra.report_text = "Details! ".. Loc ["STRING_INTERRUPT_BY"]
|
||||
end
|
||||
|
||||
local spellid = tabela [3]
|
||||
|
||||
local nome_magia, _, icone_magia = _GetSpellInfo (tabela [3])
|
||||
local successful = 0
|
||||
--> pegar quantas vezes a magia passou com sucesso.
|
||||
for _, enemy_actor in _ipairs (DamageContainer._ActorTable) do
|
||||
if (enemy_actor.spell_tables._ActorTable [spellid]) then
|
||||
local spell = enemy_actor.spell_tables._ActorTable [spellid]
|
||||
successful = spell.successful_casted
|
||||
end
|
||||
end
|
||||
|
||||
barra.texto_esquerdo:SetText (nome_magia)
|
||||
barra.texto_direita:SetText (tabela [2])
|
||||
local total = successful + tabela [2]
|
||||
barra.texto_direita:SetText (tabela [2] .. " / ".. total)
|
||||
|
||||
_detalhes:name_space (barra)
|
||||
|
||||
|
||||
+9
-1
@@ -37,6 +37,13 @@ function _G._detalhes:Start()
|
||||
self.deadlog_limit = self.deadlog_limit or 12
|
||||
self.minimum_combat_time = self.minimum_combat_time or 5
|
||||
|
||||
if (type (self.trash_concatenate) ~= "boolean") then
|
||||
self.trash_concatenate = false
|
||||
end
|
||||
if (type (self.trash_auto_remove) ~= "boolean") then
|
||||
self.trash_auto_remove = false
|
||||
end
|
||||
|
||||
if (type (self.only_pvp_frags) ~= "boolean") then
|
||||
self.only_pvp_frags = false
|
||||
end
|
||||
@@ -245,7 +252,8 @@ function _G._detalhes:Start()
|
||||
--> load parser capture options
|
||||
self:CaptureRefresh()
|
||||
--> register parser events
|
||||
self.listener:RegisterEvent ("COMBAT_LOG_EVENT_UNFILTERED")
|
||||
--self.listener:RegisterEvent ("COMBAT_LOG_EVENT_UNFILTERED")
|
||||
self.parser_frame:RegisterEvent ("COMBAT_LOG_EVENT_UNFILTERED")
|
||||
self.listener:RegisterEvent ("PLAYER_REGEN_DISABLED")
|
||||
self.listener:RegisterEvent ("PLAYER_REGEN_ENABLED")
|
||||
self.listener:RegisterEvent ("SPELL_SUMMON")
|
||||
|
||||
Reference in New Issue
Block a user