- Fixed pets with the owner name showing twice in the pet name.

- Fixed tooltips not showing pets for the end segment created after a mythic dungeon.
This commit is contained in:
Tercio
2018-09-18 18:13:39 -03:00
parent 404f3c3ab4
commit d8134d51f1
14 changed files with 337 additions and 112 deletions
+178 -76
View File
@@ -45,7 +45,7 @@ local default_text_for_aura_frame = {
MANUAL_ADD_TRACKLIST_DEBUFF = "Add Debuff to Tracklist",
}
function DF:LoadAllSpells (hashMap, indexTable)
function DF:LoadAllSpells (hashMap, indexTable, allSpellsSameName)
--pre checking which tables to fill to avoid checking if the table exists during the gigantic loop for performance
@@ -88,11 +88,32 @@ function DF:LoadAllSpells (hashMap, indexTable)
end
elseif (hashMap and indexTable) then
for i = 1, CONST_MAX_SPELLS do
local spellName = GetSpellInfo (i)
if (spellName) then
indexTable [#indexTable+1] = lower (spellName)
hashMap [indexTable [#indexTable]] = i
--DF_CALC_PERFORMANCE()
if (allSpellsSameName) then
for i = 1, CONST_MAX_SPELLS do
local spellName = GetSpellInfo (i)
if (spellName) then
spellName = lower (spellName)
indexTable [#indexTable + 1] = spellName
hashMap [spellName] = i
--same name table
local sameNameTable = allSpellsSameName [spellName]
if (not sameNameTable) then
sameNameTable = {}
allSpellsSameName [spellName] = sameNameTable
end
sameNameTable [#sameNameTable + 1] = i
end
end
else
for i = 1, CONST_MAX_SPELLS do
local spellName = GetSpellInfo (i)
if (spellName) then
spellName = lower (spellName)
indexTable [#indexTable + 1] = spellName
hashMap [spellName] = i
end
end
end
end
@@ -264,9 +285,12 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
local AllSpellsMap = {}
local AllSpellNames = {}
--store a table with spell name as key and in the value an index table with spell IDs
local AllSpellsSameName = {}
local load_all_spells = function (self, capsule)
if (not next (AllSpellsMap)) then
DF:LoadAllSpells (AllSpellsMap, AllSpellNames)
DF:LoadAllSpells (AllSpellsMap, AllSpellNames, AllSpellsSameName)
f_auto.AddBuffBlacklistTextBox.SpellAutoCompleteList = AllSpellNames
f_auto.AddDebuffBlacklistTextBox.SpellAutoCompleteList = AllSpellNames
@@ -321,19 +345,54 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
debuff_name_blacklist_entry:SetJustifyH ("left")
debuff_name_blacklist_entry.tooltip = "Enter the debuff name using lower case letters."
f_auto.AddDebuffBlacklistTextBox = debuff_name_blacklist_entry
local same_name_spells_add = function (spellID)
local spellName = GetSpellInfo (spellID)
if (spellName) then
if (not next (AllSpellsMap)) then
load_all_spells()
end
spellName = lower (spellName)
local spellWithSameName = AllSpellsSameName [spellName]
if (spellWithSameName) then
db.aura_cache_by_name [spellName] = DF.table.copy ({}, spellWithSameName)
end
end
end
local get_spellID_from_string = function (text)
--check if the user entered a spell ID
local isSpellID = tonumber (text)
if (isSpellID and isSpellID > 1 and isSpellID < 10000000) then
local isValidSpellID = GetSpellInfo (isSpellID)
if (isValidSpellID) then
return isSpellID
else
return
end
end
--get the spell ID from the spell name
text = lower (text)
local spellID = AllSpellsMap [text]
if (not spellID) then
return
end
return spellID
end
local add_blacklist_buff_button = self:CreateButton (background_add_blacklist, function()
local text = buff_name_blacklist_entry.text
buff_name_blacklist_entry:SetText ("")
buff_name_blacklist_entry:ClearFocus()
if (text ~= "") then
text = lower (text)
--get the spellId
local spellId = AllSpellsMap [text]
local spellId = get_spellID_from_string (text)
if (not spellId) then
print ("spell not found")
DetailsFramework.Msg ({__name = "DetailsFramework"}, "Spell not found!")
return
end
@@ -344,6 +403,9 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
_G [f_auto:GetName() .. "BuffIgnored"]:Refresh()
DF:QuickDispatch (change_callback)
--add to spells with the same name cache
same_name_spells_add (spellId)
end
end, 100, 20, "Add to Blacklist", nil, nil, nil, nil, nil, nil, DF:GetTemplate ("button", "OPTIONS_BUTTON_TEMPLATE"), DF:GetTemplate ("font", options.button_text_template))
@@ -354,12 +416,10 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
debuff_name_blacklist_entry:ClearFocus()
if (text ~= "") then
text = lower (text)
--get the spellId
local spellId = AllSpellsMap [text]
local spellId = get_spellID_from_string (text)
if (not spellId) then
print ("spell not found")
DetailsFramework.Msg ({__name = "DetailsFramework"}, "Spell not found!")
return
end
@@ -370,6 +430,9 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
_G [f_auto:GetName() .. "DebuffIgnored"]:Refresh()
DF:QuickDispatch (change_callback)
--add to spells with the same name cache
same_name_spells_add (spellId)
end
end, 100, 20, "Add to Blacklist", nil, nil, nil, nil, nil, nil, DF:GetTemplate ("button", "OPTIONS_BUTTON_TEMPLATE"), DF:GetTemplate ("font", options.button_text_template))
@@ -390,44 +453,16 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
debuff_name_tracklist_entry.tooltip = "Enter the debuff name using lower case letters."
f_auto.AddDebuffTracklistTextBox = debuff_name_tracklist_entry
local add_tracklist_buff_button = self:CreateButton (background_add_tracklist, function()
local text = buff_name_tracklist_entry.text
buff_name_tracklist_entry:SetText ("")
buff_name_tracklist_entry:ClearFocus()
if (text ~= "") then
text = lower (text)
--get the spellId
local spellId = AllSpellsMap [text]
if (not spellId) then
print ("spell not found")
return
end
--add the spellId to the blacklist
f.db.aura_tracker.buff_tracked [spellId] = true
--refresh the buff blacklist frame
_G [f_auto:GetName() .. "BuffTracked"]:Refresh()
DF:QuickDispatch (change_callback)
end
end, 100, 20, "Add to Tracklist", nil, nil, nil, nil, nil, nil, DF:GetTemplate ("button", "OPTIONS_BUTTON_TEMPLATE"), DF:GetTemplate ("font", options.button_text_template))
local add_tracklist_debuff_button = self:CreateButton (background_add_tracklist, function()
local text = debuff_name_tracklist_entry.text
debuff_name_tracklist_entry:SetText ("")
debuff_name_tracklist_entry:ClearFocus()
if (text ~= "") then
text = lower (text)
--get the spellId
local spellId = AllSpellsMap [text]
local spellId = get_spellID_from_string (text)
if (not spellId) then
print ("spell not found")
DetailsFramework.Msg ({__name = "DetailsFramework"}, "Spell not found!")
return
end
@@ -438,9 +473,40 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
_G [f_auto:GetName() .. "DebuffTracked"]:Refresh()
DF:QuickDispatch (change_callback)
--add to spells with the same name cache
same_name_spells_add (spellId)
end
end, 100, 20, "Add to Tracklist", nil, nil, nil, nil, nil, nil, DF:GetTemplate ("button", "OPTIONS_BUTTON_TEMPLATE"), DF:GetTemplate ("font", options.button_text_template))
local add_tracklist_buff_button = self:CreateButton (background_add_tracklist, function()
local text = buff_name_tracklist_entry.text
buff_name_tracklist_entry:SetText ("")
buff_name_tracklist_entry:ClearFocus()
if (text ~= "") then
--get the spellId
local spellId = get_spellID_from_string (text)
if (not spellId) then
DetailsFramework.Msg ({__name = "DetailsFramework"}, "Spell not found!")
return
end
--add the spellId to the blacklist
f.db.aura_tracker.buff_tracked [spellId] = true
--refresh the buff blacklist frame
_G [f_auto:GetName() .. "BuffTracked"]:Refresh()
DF:QuickDispatch (change_callback)
--add to spells with the same name cache
same_name_spells_add (spellId)
end
end, 100, 20, "Add to Tracklist", nil, nil, nil, nil, nil, nil, DF:GetTemplate ("button", "OPTIONS_BUTTON_TEMPLATE"), DF:GetTemplate ("font", options.button_text_template))
--anchors:
background_add_blacklist:SetPoint ("topleft", f_auto, "topleft", 0, y)
background_add_tracklist:SetPoint ("topleft", background_add_blacklist, "bottomleft", 0, -10)
@@ -472,6 +538,44 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
--options passed to the create aura panel
local width, height, row_height = options.width, options.height, options.row_height
local autoTrackList_LineOnEnter = function (self, capsule, value)
local spellName = GetSpellInfo (value)
if (spellName) then
--GameTooltip:SetOwner (self, "ANCHOR_TOPLEFT", -40, 0);
--GameTooltip:SetSpellByID(value);
--GameTooltip:Show()
local spellsWithSameName = db.aura_cache_by_name [lower (spellName)]
if (not spellsWithSameName) then
same_name_spells_add (value)
spellsWithSameName = db.aura_cache_by_name [lower (spellName)]
end
if (spellsWithSameName) then
GameCooltip2:Preset (2)
GameCooltip2:SetOwner (self, "left", "right", 2, 0)
GameCooltip2:AddLine ("List of Spells:")
GameCooltip2:AddIcon ("", 1, 1, 1, 20)
GameCooltip2:AddStatusBar (100, 1, .2, .2, .2, .5, false, false, "Details Flat")
for i, spellID in ipairs (spellsWithSameName) do
local spellName, _, spellIcon = GetSpellInfo (spellID)
if (spellName) then
GameCooltip2:AddLine (spellName)
GameCooltip2:AddIcon (spellIcon)
end
end
GameCooltip2:Show()
end
end
end
local autoTrackList_LineOnLeave = function()
GameCooltip2:Hide()
end
--Debuffs on the black list
local debuff_ignored = self:CreateSimpleListBox (f_auto, "$parentDebuffIgnored", texts.DEBUFFS_IGNORED, "the list is empty", f.db.aura_tracker.debuff_banned, function (spellid)
@@ -486,7 +590,8 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
backdrop_color = {.8, .8, .8, 0.2},
panel_border_color = {.01, 0, 0, 1},
iconcoords = {.1, .9, .1, .9},
onenter = function(self, capsule, value) GameTooltip:SetOwner (self, "ANCHOR_CURSOR"); GameTooltip:SetSpellByID(value); GameTooltip:AddLine (" "); GameTooltip:Show() end,
onenter = autoTrackList_LineOnEnter,
onleave = autoTrackList_LineOnLeave,
show_x_button = true,
x_button_func = function (spellId)
f.db.aura_tracker.debuff_banned [spellId] = nil; DF:QuickDispatch (change_callback);
@@ -507,7 +612,8 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
backdrop_color = {.8, .8, .8, 0.2},
panel_border_color = {.02, 0, 0, 1},
iconcoords = {.1, .9, .1, .9},
onenter = function(self, capsule, value) GameTooltip:SetOwner (self, "ANCHOR_CURSOR"); GameTooltip:SetSpellByID(value); GameTooltip:AddLine (" "); GameTooltip:Show() end,
onenter = autoTrackList_LineOnEnter,
onleave = autoTrackList_LineOnLeave,
show_x_button = true,
x_button_func = function (spellId)
f.db.aura_tracker.buff_banned [spellId] = nil; DF:QuickDispatch (change_callback);
@@ -527,7 +633,8 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
backdrop_color = {.8, .8, .8, 0.2},
panel_border_color = {0, .02, 0, 1},
iconcoords = {.1, .9, .1, .9},
onenter = function(self, capsule, value) GameTooltip:SetOwner (self, "ANCHOR_CURSOR"); GameTooltip:SetSpellByID(value); GameTooltip:AddLine (" "); GameTooltip:Show() end,
onenter = autoTrackList_LineOnEnter,
onleave = autoTrackList_LineOnLeave,
show_x_button = true,
x_button_func = function (spellId)
f.db.aura_tracker.debuff_tracked [spellId] = nil; DF:QuickDispatch (change_callback);
@@ -547,7 +654,8 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
backdrop_color = {.8, .8, .8, 0.2},
panel_border_color = {0, .01, 0, 1},
iconcoords = {.1, .9, .1, .9},
onenter = function(self, capsule, value) GameTooltip:SetOwner (self, "ANCHOR_CURSOR"); GameTooltip:SetSpellByID(value); GameTooltip:AddLine (" "); GameTooltip:Show() end,
onenter = autoTrackList_LineOnEnter,
onleave = autoTrackList_LineOnLeave,
show_x_button = true,
x_button_func = function (spellId)
f.db.aura_tracker.buff_tracked [spellId] = nil; DF:QuickDispatch (change_callback);
@@ -741,26 +849,23 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
if (text:find (";")) then
for _, spellName in ipairs ({strsplit (";", text)}) do
spellName = self:trim (spellName)
spellName = lower (spellName)
if (string.len (spellName) > 0) then
local spellId = AllSpellsMap [spellName]
if (spellId) then
tinsert (f.db.aura_tracker.buff, spellId)
else
print ("spellId not found for spell:", spellName)
end
local spellID = get_spellID_from_string (spellName)
if (spellID) then
tinsert (f.db.aura_tracker.buff, spellID)
else
print ("spellId not found for spell:", spellName)
end
end
else
--get the spellId
local spellName = lower (text)
local spellId = AllSpellsMap [spellName]
if (not spellId) then
print ("spellIs for spell ", spellName, "not found")
local spellID = get_spellID_from_string (text)
if (not spellID) then
print ("spellIs for spell ", text, "not found")
return
end
tinsert (f.db.aura_tracker.buff, spellId)
tinsert (f.db.aura_tracker.buff, spellID)
end
buffs_added:Refresh()
@@ -777,26 +882,23 @@ function DF:CreateAuraConfigPanel (parent, name, db, change_callback, options, t
if (text:find (";")) then
for _, spellName in ipairs ({strsplit (";", text)}) do
spellName = self:trim (spellName)
spellName = lower (spellName)
if (string.len (spellName) > 0) then
local spellId = AllSpellsMap [spellName]
if (spellId) then
tinsert (f.db.aura_tracker.debuff, spellId)
else
print ("spellId not found for spell:", spellName)
end
local spellID = get_spellID_from_string (spellName)
if (spellID) then
tinsert (f.db.aura_tracker.debuff, spellID)
else
print ("spellId not found for spell:", spellName)
end
end
else
--get the spellId
local spellName = lower (text)
local spellId = AllSpellsMap [spellName]
if (not spellId) then
print ("spellIs for spell ", spellName, "not found")
local spellID = get_spellID_from_string (text)
if (not spellID) then
print ("spellIs for spell ", text, "not found")
return
end
tinsert (f.db.aura_tracker.debuff, spellId)
tinsert (f.db.aura_tracker.debuff, spellID)
end
debuffs_added:Refresh()
+14 -2
View File
@@ -1,5 +1,5 @@
local dversion = 105
local dversion = 107
local major, minor = "DetailsFramework-1.0", dversion
local DF, oldminor = LibStub:NewLibrary (major, minor)
@@ -2411,7 +2411,19 @@ function DF:Dispatch (func, ...)
end
--/run local a, b =32,3; local f=function(c,d) return c+d, 2, 3;end; print (xpcall(f,geterrorhandler(),a,b))
function DF_CALC_PERFORMANCE()
local F = CreateFrame ("frame")
local T = GetTime()
local J = false
F:SetScript ("OnUpdate", function (self, deltaTime)
if (not J) then
J = true
return
end
print ("Elapsed Time:", deltaTime)
F:SetScript ("OnUpdate", nil)
end)
end
--doo elsee
--was doing double loops due to not enought height
+9 -8
View File
@@ -4820,10 +4820,11 @@ DF.IconRowFunctions = {
local cooldownFrame = CreateFrame ("cooldown", "$parentIconCooldown" .. self.NextIcon, newIconFrame, "CooldownFrameTemplate")
cooldownFrame:SetAllPoints()
cooldownFrame:EnableMouse (false)
cooldownFrame:SetFrameLevel (newIconFrame:GetFrameLevel()+1)
newIconFrame.Text = cooldownFrame:CreateFontString (nil, "overlay", "GameFontNormal")
newIconFrame.Text:SetPoint ("center")
newIconFrame.Text:Hide()
newIconFrame.CountdownText = cooldownFrame:CreateFontString (nil, "overlay", "GameFontNormal")
newIconFrame.CountdownText:SetPoint ("center")
newIconFrame.CountdownText:Hide()
newIconFrame.Desc = newIconFrame:CreateFontString (nil, "overlay", "GameFontNormal")
newIconFrame.Desc:SetPoint ("bottom", newIconFrame, "top", 0, 2)
@@ -4858,7 +4859,7 @@ DF.IconRowFunctions = {
end
DF:SetFontColor (iconFrame.Text, self.options.text_color)
DF:SetFontColor (iconFrame.CountdownText, self.options.text_color)
self.NextIcon = self.NextIcon + 1
return iconFrame
@@ -4889,14 +4890,14 @@ DF.IconRowFunctions = {
CooldownFrame_Set (iconFrame.Cooldown, startTime, duration, true, true)
if (self.options.show_text) then
iconFrame.Text:Show()
iconFrame.Text:SetText (floor (startTime + duration - GetTime()))
iconFrame.CountdownText:Show()
iconFrame.CountdownText:SetText (floor (startTime + duration - GetTime()))
else
iconFrame.Text:Hide()
iconFrame.CountdownText:Hide()
end
else
iconFrame.Text:Hide()
iconFrame.CountdownText:Hide()
end
if (descText and self.options.desc_text) then
+2
View File
@@ -604,6 +604,7 @@ DF.CrowdControlSpells = {
[710] = "WARLOCK", --Banish
[118] = "MAGE", --Polymorph
[61305] = "MAGE", --Polymorph (black cat)
[82691] = "MAGE", --Ring of Frost (debuff spellid)
[122] = "MAGE", --Frost Nova
[157997] = "MAGE", --Ice Nova
@@ -623,6 +624,7 @@ DF.CrowdControlSpells = {
[408] = "ROGUE", --Kidney Shot
[6770] = "ROGUE", --Sap
[1776] = "ROGUE", --Gouge
[199804] = "ROGUE", --Between the Eyes
[853] = "PALADIN", --Hammer of Justice
[20066] = "PALADIN", --Repentance (talent)
+2 -1
View File
@@ -3,7 +3,7 @@
_ = nil
_detalhes = LibStub("AceAddon-3.0"):NewAddon("_detalhes", "AceTimer-3.0", "AceComm-3.0", "AceSerializer-3.0", "NickTag-1.0")
_detalhes.build_counter = 6449
_detalhes.build_counter = 6458
_detalhes.userversion = "v8.0.1." .. _detalhes.build_counter
_detalhes.realversion = 134 --core version
_detalhes.APIVersion = _detalhes.realversion --core version
@@ -511,6 +511,7 @@ do
SharedMedia:Register ("statusbar", "Skyline", [[Interface\AddOns\Details\images\bar_skyline]])
SharedMedia:Register ("statusbar", "WorldState Score", [[Interface\WorldStateFrame\WORLDSTATEFINALSCORE-HIGHLIGHT]])
SharedMedia:Register ("statusbar", "DGround", [[Interface\AddOns\Details\images\bar_background]])
SharedMedia:Register ("statusbar", "Details Flat", [[Interface\AddOns\Details\images\bar_background]])
--window bg and bar border
SharedMedia:Register ("background", "Details Ground", [[Interface\AddOns\Details\images\background]])
+10 -5
View File
@@ -4010,7 +4010,6 @@ function atributo_damage:MontaInfoDamageDone()
info:SetTopRightTexts()
end
--> add pets
local ActorPets = self.pets
--local class_color = RAID_CLASS_COLORS [self.classe] and RAID_CLASS_COLORS [self.classe].colorStr
@@ -5014,9 +5013,10 @@ end
function atributo_damage:r_connect_shadow (actor, no_refresh, combat_object)
--check if there's a custom combat, if not just use the overall container
local host_combat = combat_object or _detalhes.tabela_overall
--> criar uma shadow desse ator se ainda no tiver uma
--check if the host combat object has a shadow actor for this actor, if not, just create one new
local overall_dano = host_combat [1]
local shadow = overall_dano._ActorTable [overall_dano._NameIndexTable [actor.nome]]
@@ -5036,7 +5036,7 @@ end
shadow.end_time = time()
end
--> restaura a meta e indexes ao ator
--check if need to restore meta tables and indexes for this actor
if (not no_refresh) then
_detalhes.refresh:r_atributo_damage (actor, shadow)
end
@@ -5049,7 +5049,12 @@ end
local tempo = end_time - actor.start_time
shadow.start_time = shadow.start_time - tempo
--> pets (add unique pet names)
for _, petName in _ipairs (actor.pets) do
DetailsFramework.table.addunique (shadow.pets, petName)
end
--> total de dano (captura de dados)
shadow.total = shadow.total + actor.total
shadow.totalabsorbed = shadow.totalabsorbed + actor.totalabsorbed
@@ -5114,7 +5119,7 @@ end
end
end
end
--> copia o container de friendly fire (captura de dados)
for target_name, ff_table in _pairs (actor.friendlyfire) do
--> cria ou pega a shadow
+5
View File
@@ -1422,6 +1422,11 @@ end
_detalhes.refresh:r_atributo_energy (actor, shadow)
end
--> pets (add unique pet names)
for _, petName in _ipairs (actor.pets) do
DetailsFramework.table.addunique (shadow.pets, petName)
end
--> total das energias (captura de dados)
shadow.total = shadow.total + actor.total
shadow.received = shadow.received + actor.received
+5
View File
@@ -2473,6 +2473,11 @@ end
local tempo = end_time - actor.start_time
shadow.start_time = shadow.start_time - tempo
--> pets (add unique pet names)
for _, petName in _ipairs (actor.pets) do
DetailsFramework.table.addunique (shadow.pets, petName)
end
--> total de cura (captura de dados)
shadow.total = shadow.total + actor.total
--> total de overheal (captura de dados)
+5
View File
@@ -2473,6 +2473,11 @@ function atributo_misc:r_connect_shadow (actor, no_refresh, combat_object)
if (not no_refresh) then
_detalhes.refresh:r_atributo_misc (actor, shadow)
end
--> pets (add unique pet names)
for _, petName in _ipairs (actor.pets) do
DetailsFramework.table.addunique (shadow.pets, petName)
end
if (actor.spell_cast) then
if (not shadow.spell_cast) then
+7 -8
View File
@@ -18,6 +18,8 @@
local _ipairs = ipairs --lua local
local _pairs = pairs --lua local
local AddUnique = DetailsFramework.table.addunique --framework
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--> constants
@@ -485,7 +487,6 @@
if (container_pets [serial]) then --> um pet reconhecido
--[[statistics]]-- _detalhes.statistics.container_pet_calls = _detalhes.statistics.container_pet_calls + 1
local nome_dele, dono_nome, dono_serial, dono_flag = _detalhes.tabela_pets:PegaDono (serial, nome, flag)
if (nome_dele and dono_nome) then
nome = nome_dele
@@ -541,7 +542,7 @@
read_actor_flag (novo_objeto, dono_do_pet, serial, flag, nome, "damage")
if (dono_do_pet) then
dono_do_pet.pets [#dono_do_pet.pets+1] = nome
AddUnique (dono_do_pet.pets, nome)
end
if (self.shadow) then
@@ -575,7 +576,7 @@
read_actor_flag (novo_objeto, dono_do_pet, serial, flag, nome, "heal")
if (dono_do_pet) then
dono_do_pet.pets [#dono_do_pet.pets+1] = nome
AddUnique (dono_do_pet.pets, nome)
end
if (self.shadow) then
@@ -602,7 +603,7 @@
read_actor_flag (novo_objeto, dono_do_pet, serial, flag, nome, "energy")
if (dono_do_pet) then
dono_do_pet.pets [#dono_do_pet.pets+1] = nome
AddUnique (dono_do_pet.pets, nome)
end
if (novo_objeto.classe == "UNGROUPPLAYER") then --> is a player
@@ -620,11 +621,9 @@
local shouldScanOnce = get_actor_class (novo_objeto, nome, flag, serial)
read_actor_flag (novo_objeto, dono_do_pet, serial, flag, nome, "misc")
--local teste_classe =
if (dono_do_pet) then
dono_do_pet.pets [#dono_do_pet.pets+1] = nome
AddUnique (dono_do_pet.pets, nome)
end
if (novo_objeto.classe == "UNGROUPPLAYER") then --> is a player
+21 -3
View File
@@ -43,7 +43,19 @@ function container_pets:PegaDono (pet_serial, pet_nome, pet_flags)
--> buscar pelo pet no container de pets
local busca = self.pets [pet_serial]
if (busca) then
return pet_nome .." <"..busca[1]..">", busca[1], busca[2], busca[3] --> [1] dono nome [2] dono serial [3] dono flag
--in merging operations, make sure to not add the owner name a second time in the name
--check if the pet name already has the owner name in, if not, add it
if (not pet_nome:find ("<")) then
--get the owner name
local ownerName = busca[1]
--add the owner name to the pet name
pet_nome = pet_nome .. " <".. ownerName ..">"
end
return pet_nome, busca[1], busca[2], busca[3] --> [1] dono nome [2] dono serial [3] dono flag
end
--> buscar pelo pet na raide
@@ -93,7 +105,12 @@ function container_pets:PegaDono (pet_serial, pet_nome, pet_flags)
if (dono_nome) then
self.pets [pet_serial] = {dono_nome, dono_serial, dono_flags, _detalhes._tempo, true} --> adicionada a flag emulada
return pet_nome .." <"..dono_nome..">", dono_nome, dono_serial, dono_flags
if (not pet_nome:find ("<")) then
pet_nome = pet_nome .. " <".. dono_nome ..">"
end
return pet_nome, dono_nome, dono_serial, dono_flags
else
if (pet_flags and _bit_band (pet_flags, OBJECT_TYPE_PET) ~= 0) then --> um pet
@@ -225,8 +242,9 @@ end
function _detalhes:LimparPets()
--> elimina pets antigos
local _new_PetTable = {}
--> minimum of 90 minutes to clean a pet from the pet table data
for PetSerial, PetTable in _pairs (_detalhes.tabela_pets.pets) do
if ( (PetTable[4] + _detalhes.intervalo_coleta > _detalhes._tempo + 1) or (PetTable[5] and PetTable[4] + 43200 > _detalhes._tempo) ) then
if ( (PetTable[4] + 5400 > _detalhes._tempo + 1) or (PetTable[5] and PetTable[4] + 43200 > _detalhes._tempo) ) then
_new_PetTable [PetSerial] = PetTable
end
end
+32 -7
View File
@@ -78,6 +78,8 @@
local energy_cache = setmetatable ({}, _detalhes.weaktable)
--> misc
local misc_cache = setmetatable ({}, _detalhes.weaktable)
local misc_cache_pets = setmetatable ({}, _detalhes.weaktable)
local misc_cache_petsOwners = setmetatable ({}, _detalhes.weaktable)
--> party & raid members
local raid_members_cache = setmetatable ({}, _detalhes.weaktable)
--> tanks
@@ -424,7 +426,7 @@
local este_jogador, meu_dono = damage_cache [who_serial] or damage_cache_pets [who_serial] or damage_cache [who_name], damage_cache_petsOwners [who_serial]
if (not este_jogador) then --> pode ser um desconhecido ou um pet
este_jogador, meu_dono, who_name = _current_damage_container:PegarCombatente (who_serial, who_name, who_flags, true)
if (meu_dono) then --> um pet
@@ -462,7 +464,6 @@
local jogador_alvo, alvo_dono = damage_cache [alvo_serial] or damage_cache_pets [alvo_serial] or damage_cache [alvo_name], damage_cache_petsOwners [alvo_serial]
if (not jogador_alvo) then
jogador_alvo, alvo_dono, alvo_name = _current_damage_container:PegarCombatente (alvo_serial, alvo_name, alvo_flags, true)
if (alvo_dono) then
@@ -2843,11 +2844,28 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
--> get actors
--> main actor
local este_jogador = misc_cache [who_name]
local este_jogador, meu_dono = misc_cache [who_serial] or misc_cache_pets [who_serial] or misc_cache [who_name], misc_cache_petsOwners [who_serial]
--local este_jogador = misc_cache [who_name]
if (not este_jogador) then
este_jogador, meu_dono, who_name = _current_misc_container:PegarCombatente (who_serial, who_name, who_flags, true)
if (not meu_dono) then --> se no for um pet, adicionar no cache
misc_cache [who_name] = este_jogador
if (meu_dono) then --> é um pet
if (who_serial ~= "") then
misc_cache_pets [who_serial] = este_jogador
misc_cache_petsOwners [who_serial] = meu_dono
end
--conferir se o dono já esta no cache
if (not misc_cache [meu_dono.serial] and meu_dono.serial ~= "") then
misc_cache [meu_dono.serial] = meu_dono
end
else
if (who_flags) then
misc_cache [who_name] = este_jogador
end
end
end
@@ -4569,7 +4587,6 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
amount = amount + 1
end
print ("parser misc_cache", amount)
print ("group damage", #_detalhes.cache_damage_group)
print ("group damage", #_detalhes.cache_healing_group)
end
@@ -4589,6 +4606,9 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
_table_wipe (healing_cache)
_table_wipe (energy_cache)
_table_wipe (misc_cache)
_table_wipe (misc_cache_pets)
_table_wipe (misc_cache_petsOwners)
_table_wipe (ignore_death)
damage_cache = setmetatable ({}, _detalhes.weaktable)
@@ -4600,7 +4620,8 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
energy_cache = setmetatable ({}, _detalhes.weaktable)
misc_cache = setmetatable ({}, _detalhes.weaktable)
misc_cache_pets = setmetatable ({}, _detalhes.weaktable)
misc_cache_petsOwners = setmetatable ({}, _detalhes.weaktable)
end
function parser:RevomeActorFromCache (actor_serial, actor_name)
@@ -4611,6 +4632,8 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
healing_cache [actor_name] = nil
energy_cache [actor_name] = nil
misc_cache [actor_name] = nil
misc_cache_pets [actor_name] = nil
misc_cache_petsOwners [actor_name] = nil
end
if (actor_serial) then
damage_cache [actor_serial] = nil
@@ -4619,6 +4642,8 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
healing_cache [actor_serial] = nil
energy_cache [actor_serial] = nil
misc_cache [actor_serial] = nil
misc_cache_pets [actor_serial] = nil
misc_cache_petsOwners [actor_serial] = nil
end
end
+23 -1
View File
@@ -4335,7 +4335,29 @@ function _detalhes.OpenDetailsDeathRecap (segment, RecapID)
--segment to use
local death = _detalhes.tabela_vigente.last_events_tables
--see if this segment has a death for the player
local foundPlayer = false
for index = #death, 1, -1 do
if (death [index] [3] == _detalhes.playername) then
foundPlayer = true
break
end
end
--in case a combat has been created after the player death, the death won't be at the current segment
if (not foundPlayer) then
local segmentHistory = _detalhes:GetCombatSegments()
for i = 1, 2 do
local segment = segmentHistory [1]
if (segment and segment ~= _detalhes.tabela_vigente) then
if (_detalhes.tabela_vigente.start_time - 3 < segment.end_time) then
death = segment.last_events_tables
end
end
end
end
--segments
if (_detalhes.death_recap.show_segments) then
local last_index = 0
+24 -1
View File
@@ -211,6 +211,28 @@ function SlashCmdList.DETAILS (msg, editbox)
print ("|cFF00FF00No error occured!|r")
end
elseif (msg == "tr") then
local f = CreateFrame ("frame", nil, UIParent)
f:SetSize (300, 300)
f:SetPoint ("center")
-- /run TTT:SetTexture ("Interface\\1024.tga")
local texture = f:CreateTexture ("TTT", "background")
texture:SetAllPoints()
texture:SetTexture ("Interface\\1023.tga")
local A = DetailsFramework:CreateAnimationHub (texture)
local b = DetailsFramework:CreateAnimation (A, "ROTATION", 1, 40, 360)
b:SetTarget (texture)
A:Play()
C_Timer.NewTicker (1, function()
texture:SetTexCoord (math.random(), math.random(), math.random(), math.random(), math.random(), math.random(), math.random(), math.random())
end)
elseif (msg == "realmsync") then
_detalhes.realm_sync = not _detalhes.realm_sync
@@ -1374,7 +1396,8 @@ Damage Update Status: @INSTANCEDAMAGESTATUS
startDate = lastSegment:GetDate()
end
_detalhes:Msg ("done merging " .. segmentsAdded .. " segments.")
newCombat.is_trash = false
_detalhes:Msg ("done merging, segments: " .. segmentsAdded .. ", total time: " .. DetailsFramework:IntegerToTimer (totalTime))
--[[ --mythic+ debug
--> tag the segment as mythic overall segment