diff --git a/API.lua b/API.lua index b2c4ad0e..cb2e3c42 100644 --- a/API.lua +++ b/API.lua @@ -376,8 +376,6 @@ spell.counter = how many hits this spell made. spell.id = spellid spell.successful_casted = how many times this spell has been casted successfully (only for enemies). -- players has its own spell cast counter inside Misc Container with the member "spell_cast". -- the reason os this is spell_cast holds all spells regardless of its attribute (can hold healing/damage/energy/misc). spell.n_min = minimal damage made on a normal hit. spell.n_max = max damage made on a normal hit. diff --git a/API.txt b/API.txt index b685f0dc..e9adb108 100644 --- a/API.txt +++ b/API.txt @@ -379,8 +379,6 @@ spell.counter = how many hits this spell made. spell.id = spellid spell.successful_casted = how many times this spell has been casted successfully (only for enemies). - - players has its own spell cast counter inside Misc Container with the member "spell_cast". - - the reason os this is spell_cast holds all spells regardless of its attribute (can hold healing/damage/energy/misc). spell.n_min = minimal damage made on a normal hit. spell.n_max = max damage made on a normal hit. diff --git a/Definitions.lua b/Definitions.lua index 68b7b3da..1e49fab8 100644 --- a/Definitions.lua +++ b/Definitions.lua @@ -305,6 +305,7 @@ ---@field UnregisterEvent fun(self: detailseventlistener, event: "DETAILS_INSTANCE_OPEN"|"DETAILS_INSTANCE_CLOSE"|"DETAILS_INSTANCE_SIZECHANGED"|"DETAILS_INSTANCE_STARTRESIZE"|"DETAILS_INSTANCE_ENDRESIZE"|"DETAILS_INSTANCE_STARTSTRETCH"|"DETAILS_INSTANCE_ENDSTRETCH"|"DETAILS_INSTANCE_CHANGESEGMENT"|"DETAILS_INSTANCE_CHANGEATTRIBUTE"|"DETAILS_INSTANCE_CHANGEMODE"|"DETAILS_INSTANCE_NEWROW"|"DETAILS_OPTIONS_MODIFIED"|"DETAILS_DATA_RESET"|"DETAILS_DATA_SEGMENTREMOVED"|"COMBAT_ENCOUNTER_START"|"COMBAT_ENCOUNTER_END"|"COMBAT_PLAYER_ENTER"|"COMBAT_PLAYER_LEAVE"|"COMBAT_PLAYER_TIMESTARTED"|"COMBAT_BOSS_WIPE"|"COMBAT_BOSS_DEFEATED"|"COMBAT_BOSS_FOUND"|"COMBAT_INVALID"|"COMBAT_PREPOTION_UPDATED"|"COMBAT_CHARTTABLES_CREATING"|"COMBAT_CHARTTABLES_CREATED"|"COMBAT_ENCOUNTER_PHASE_CHANGED"|"COMBAT_ARENA_START"|"COMBAT_ARENA_END"|"COMBAT_MYTHICDUNGEON_START"|"COMBAT_MYTHICDUNGEON_END"|"GROUP_ONENTER"|"GROUP_ONLEAVE"|"ZONE_TYPE_CHANGED"|"REALM_CHANNEL_ENTER"|"REALM_CHANNEL_LEAVE"|"COMM_EVENT_RECEIVED"|"COMM_EVENT_SENT"|"UNIT_SPEC"|"UNIT_TALENTS"|"PLAYER_TARGET"|"DETAILS_PROFILE_APPLYED") ---@class combat : table +---@field amountCasts {[string]: table} ---@field end_time number ---@field start_time number ---@field is_mythic_dungeon_trash boolean @@ -318,8 +319,11 @@ ---@field SetEndTime fun(combat: combat, time: number) ---@field CopyDeathsFrom fun(combat1: combat, combat2: combat, bMythicPlus: boolean) copy the deaths from combat2 to combat1, use true on bMythicPlus if the combat is from a mythic plus run ---@field GetContainer fun(combat: combat, containerType: number) : actorcontainer get an actor container, containerType can be 1 for damage, 2 heal, 3 energy, 4 utility ----@field GetSpellCastAmount fun(combat: combat, actorName: string, spellId: number) : number get the amount of times a spell was casted +---@field GetSpellCastAmount fun(combat: combat, actorName: string, spellName: string) : number get the amount of times a spell was casted +---@field RemoveActorFromSpellCastTable fun(combat: combat, actorName: string) +---@field GetSpellCastTable fun(combat: combat, actorName: string|nil) : table ---@field GetSpellUptime fun(combat: combat, actorName: string, spellId: number, auraType: string|nil) : number get the uptime of a buff or debuff +---@field GetActor fun(combat: combat, attribute: number, playerName: string) : actor ---@class actorcontainer : table ---@field _ActorTable table @@ -396,7 +400,6 @@ ---@field last_event unixtime ---@field total_without_pet number ---@field total number ----@field spell_cast table ---@field pets table ---@field targets targettable diff --git a/boot.lua b/boot.lua index b9288b25..002eea65 100644 --- a/boot.lua +++ b/boot.lua @@ -16,7 +16,7 @@ _detalhes.dont_open_news = true _detalhes.game_version = version _detalhes.userversion = version .. " " .. _detalhes.build_counter - _detalhes.realversion = 149 --core version, this is used to check API version for scripts and plugins (see alias below) + _detalhes.realversion = 150 --core version, this is used to check API version for scripts and plugins (see alias below) _detalhes.APIVersion = _detalhes.realversion --core version _detalhes.version = _detalhes.userversion .. " (core " .. _detalhes.realversion .. ")" --simple stirng to show to players diff --git a/classes/class_combat.lua b/classes/class_combat.lua index f1f39ef3..26bde52f 100644 --- a/classes/class_combat.lua +++ b/classes/class_combat.lua @@ -181,25 +181,33 @@ end ---return the amount of casts of a spells from an actor + ---@param self combat ---@param actorName string - ---@param spellId number + ---@param spellName string ---@return number - function combate:GetSpellCastAmount(actorName, spellId) - ---@type actorcontainer - local utilityContainer = self:GetContainer(DETAILS_ATTRIBUTE_MISC) - ---@type actor - local actorObject = utilityContainer:GetActor(actorName) - if (actorObject) then - if (actorObject.spell_cast) then - return actorObject.spell_cast[spellId] or 0 - else - return 0 - end + function combate:GetSpellCastAmount(actorName, spellName) + return self.amountCasts[actorName] and self.amountCasts[actorName][spellName] or 0 + end + + ---return the cast amount table + ---@param self combat + ---@param actorName string|nil + ---@return table + function combate:GetSpellCastTable(actorName) + if (actorName) then + return self.amountCasts[actorName] or {} else - return 0 + return self.amountCasts end end + ---delete an actor from the spell casts amount + ---@param self combat + ---@param actorName string + function combate:RemoveActorFromSpellCastTable(actorName) + self.amountCasts[actorName] = nil + end + ---return the uptime of a buff from an actor ---@param actorName string ---@param spellId number @@ -548,6 +556,8 @@ setmetatable(esta_tabela, combate) + esta_tabela.amountCasts = {} + _detalhes.combat_counter = _detalhes.combat_counter + 1 esta_tabela.combat_counter = _detalhes.combat_counter diff --git a/classes/class_custom.lua b/classes/class_custom.lua index d47f1b9f..e98fb957 100644 --- a/classes/class_custom.lua +++ b/classes/class_custom.lua @@ -1748,7 +1748,7 @@ desc = Loc ["STRING_CUSTOM_MYSPELLS_DESC"], source = false, target = false, - script_version = 9, + script_version = 10, script = [[ --get the parameters passed local combat, instance_container, instance = ... @@ -1824,7 +1824,7 @@ local spellschool, schooltext = spell.spellschool, "" if (spellschool) then - local t = _detalhes.spells_school [spellschool] + local t = Details.spells_school [spellschool] if (t and t.name) then schooltext = t.formated end @@ -1834,28 +1834,20 @@ local combat_time = instance.showing:GetCombatTime() local debuff_uptime_total, cast_string = "", "" - local misc_actor = instance.showing (4, _detalhes.playername) + local misc_actor = instance.showing (4, Details.playername) if (misc_actor) then local debuff_uptime = misc_actor.debuff_uptime_spells and misc_actor.debuff_uptime_spells._ActorTable [spell.id] and misc_actor.debuff_uptime_spells._ActorTable [spell.id].uptime if (debuff_uptime) then debuff_uptime_total = floor(debuff_uptime / instance.showing:GetCombatTime() * 100) end - local spell_cast = misc_actor.spell_cast and misc_actor.spell_cast [spell.id] + local spellName = GetSpellInfo(spell.id) + local amountOfCasts = combat:GetSpellCastAmount(Details.playername, spellName) - if (not spell_cast and misc_actor.spell_cast) then - local spellname = GetSpellInfo(spell.id) - for casted_spellid, amount in pairs(misc_actor.spell_cast) do - local casted_spellname = GetSpellInfo(casted_spellid) - if (casted_spellname == spellname) then - spell_cast = amount .. " (|cFFFFFF00?|r)" - end - end + if (amountOfCasts == 0) then + amountOfCasts = "(|cFFFFFF00?|r)" end - if (not spell_cast) then - spell_cast = "(|cFFFFFF00?|r)" - end - cast_string = cast_string .. spell_cast + cast_string = cast_string .. amountOfCasts end --Cooltip code diff --git a/classes/class_damage.lua b/classes/class_damage.lua index 6f0585a8..54d3cf95 100644 --- a/classes/class_damage.lua +++ b/classes/class_damage.lua @@ -5272,33 +5272,17 @@ function atributo_damage:MontaDetalhesDamageDone (spellId, spellLine, instance) local misc_actor = info.instancia.showing (4, self:name()) if (misc_actor) then - local uptime_spellid = spellTable.id - --if (uptime_spellid == 233490) then - -- uptime_spellid = 233496 - -- uptime_spellid = 233490 - --end - local debuff_uptime = misc_actor.debuff_uptime_spells and misc_actor.debuff_uptime_spells._ActorTable [uptime_spellid] and misc_actor.debuff_uptime_spells._ActorTable [uptime_spellid].uptime if (debuff_uptime) then hits_string = hits_string .. " |cFFDDDD44(" .. _math_floor(debuff_uptime / info.instancia.showing:GetCombatTime() * 100) .. "% uptime)|r" end - local spell_cast = misc_actor.spell_cast and misc_actor.spell_cast [spellId] - - if (not spell_cast and misc_actor.spell_cast) then - local spellname = GetSpellInfo(spellId) - for casted_spellid, amount in pairs(misc_actor.spell_cast) do - local casted_spellname = GetSpellInfo(casted_spellid) - if (casted_spellname == spellname) then - spell_cast = amount .. " (|cFFFFFF00?|r)" - end - end + local amountOfCasts = info.instancia.showing:GetSpellCastAmount(self:Name(), spellName) + if (amountOfCasts == 0) then + amountOfCasts = "(|cFFFFFF00?|r)" end - if (not spell_cast) then - spell_cast = "(|cFFFFFF00?|r)" - end - cast_string = cast_string .. spell_cast + cast_string = cast_string .. amountOfCasts end if (spellTable.e_total) then diff --git a/classes/class_heal.lua b/classes/class_heal.lua index ca7e0199..d151459f 100644 --- a/classes/class_heal.lua +++ b/classes/class_heal.lua @@ -2403,7 +2403,7 @@ function atributo_heal:MontaDetalhesHealingDone (spellid, barra) end --icone direito superior - local _, _, icone = _GetSpellInfo(spellid) + local spellName, _, icone = _GetSpellInfo(spellid) info.spell_icone:SetTexture(icone) local total = self.total @@ -2457,21 +2457,11 @@ function atributo_heal:MontaDetalhesHealingDone (spellid, barra) hits_string = hits_string .. " |cFFDDDD44(" .. _math_floor(buff_uptime / info.instancia.showing:GetCombatTime() * 100) .. "% uptime)|r" end - local spell_cast = misc_actor.spell_cast and misc_actor.spell_cast [spellid] - - if (not spell_cast and misc_actor.spell_cast) then - local spellname = GetSpellInfo(spellid) - for casted_spellid, amount in pairs(misc_actor.spell_cast) do - local casted_spellname = GetSpellInfo(casted_spellid) - if (casted_spellname == spellname) then - spell_cast = amount .. " (|cFFFFFF00?|r)" - end - end + local amountOfCasts = info.instancia.showing:GetSpellCastAmount(self:Name(), spellName) + if (not amountOfCasts) then + amountOfCasts = "(|cFFFFFF00?|r)" end - if (not spell_cast) then - spell_cast = "(|cFFFFFF00?|r)" - end - cast_string = cast_string .. spell_cast + cast_string = cast_string .. amountOfCasts end gump:SetaDetalheInfoTexto( index, 100, diff --git a/classes/class_utility.lua b/classes/class_utility.lua index b31662a6..19079c87 100644 --- a/classes/class_utility.lua +++ b/classes/class_utility.lua @@ -135,30 +135,9 @@ end ---attempt to get the amount of casts of a spell ---@param combat table the combat object ---@param actorName string name of the actor ----@param spellId number spell id -function Details:GetSpellCastAmount(combat, actorName, spellId) --[[exported]] - local actorUtilityObject = combat:GetActor(4, actorName) - if (actorUtilityObject) then - local castAmountTable = actorUtilityObject.spell_cast - if (castAmountTable) then - local castAmount = castAmountTable[spellId] - if (castAmount) then - return castAmount - - elseif (not castAmount) then - --if the amount of casts is not found, attempt to find a spell with the same name and get the amount of casts of that spell instead - local spellName = GetSpellInfo(spellId) - for thisSpellId, thisCastAmount in pairs(castAmountTable) do - local thisSpellName = GetSpellInfo(thisSpellId) - if (thisSpellName == spellName and thisCastAmount and thisCastAmount > 0) then - return thisCastAmount - end - end - end - end - end - - return 0 +---@param spellName string +function Details:GetSpellCastAmount(combat, actorName, spellName) --[[exported]] + return combat:GetSpellCastAmount(actorName, spellName) end function atributo_misc:NovaTabela(serial, nome, link) @@ -2414,16 +2393,6 @@ function atributo_misc:r_onlyrefresh_shadow (actor) _detalhes.refresh:r_atributo_misc (actor, shadow) - --spell cast - if (actor.spell_cast) then - if (not shadow.spell_cast) then - shadow.spell_cast = {} - end - for spellid, _ in pairs(actor.spell_cast) do - shadow.spell_cast [spellid] = shadow.spell_cast [spellid] or 0 - end - end - --cc done if (actor.cc_done) then refresh_alvos (shadow.cc_done_targets, actor.cc_done_targets) @@ -2551,16 +2520,6 @@ function atributo_misc:r_connect_shadow (actor, no_refresh, combat_object) DetailsFramework.table.addunique (shadow.pets, petName) end - if (actor.spell_cast) then - if (not shadow.spell_cast) then - shadow.spell_cast = {} - end - - for spellid, amount in pairs(actor.spell_cast) do - shadow.spell_cast [spellid] = (shadow.spell_cast [spellid] or 0) + amount - end - end - if (actor.cc_done) then if (not shadow.cc_done_targets) then shadow.cc_done = _detalhes:GetOrderNumber() @@ -2761,13 +2720,6 @@ function _detalhes.refresh:r_atributo_misc(thisActor, shadow) thisActor.__index = _detalhes.atributo_misc - --refresh spell cast - if (thisActor.spell_cast) then - if (shadow and not shadow.spell_cast) then - shadow.spell_cast = {} - end - end - --refresh cc done if (thisActor.cc_done) then if (shadow and not shadow.cc_done_targets) then @@ -2903,13 +2855,6 @@ function _detalhes.clear:c_atributo_misc (este_jogador) end atributo_misc.__add = function(tabela1, tabela2) - - if (tabela2.spell_cast) then - for spellid, amount in pairs(tabela2.spell_cast) do - tabela1.spell_cast [spellid] = (tabela1.spell_cast [spellid] or 0) + amount - end - end - if (tabela2.cc_done) then tabela1.cc_done = tabela1.cc_done + tabela2.cc_done @@ -3169,13 +3114,6 @@ local subtrair_keys = function(habilidade, habilidade_tabela1) end atributo_misc.__sub = function(tabela1, tabela2) - - if (tabela2.spell_cast) then - for spellid, amount in pairs(tabela2.spell_cast) do - tabela1.spell_cast [spellid] = (tabela1.spell_cast [spellid] or 0) - amount - end - end - if (tabela2.cc_done) then tabela1.cc_done = tabela1.cc_done - tabela2.cc_done diff --git a/core/meta.lua b/core/meta.lua index 48c4923c..510ab2c5 100644 --- a/core/meta.lua +++ b/core/meta.lua @@ -840,11 +840,12 @@ ---@type number local _tempo = _time() + ---@type number for containerId = 1, 4 do + ---@type actorcontainer local actorContainer = combatObject:GetContainer(containerId) ---@type table local actorList = actorContainer:GetActorTable() - local beforeCleanupAmountOfActors = #actorList for actorIndex = #actorList, 1, -1 do ---@type actor @@ -879,6 +880,9 @@ end if (canCollect) then + local actorName = actorObject:Name() + combatObject:RemoveActorFromSpellCastTable(actorName) + if (not actorObject.owner) then --not a pet actorObject:subtract_total(combatObject) end @@ -917,14 +921,17 @@ ---@type table local segmentsList = {} + ---@type combat + local currentCombat = Details:GetCurrentCombat() + for _, combatObject in ipairs(allSegments) do - if (combatObject ~= Details.tabela_vigente) then + if (combatObject ~= currentCombat) then segmentsList[#segmentsList+1] = combatObject end end --add the current segment at the end of the list - segmentsList[#segmentsList+1] = Details.tabela_vigente + segmentsList[#segmentsList+1] = currentCombat --collect the garbage for i, combatObject in ipairs(segmentsList) do diff --git a/core/parser.lua b/core/parser.lua index 80d5d052..acff01d6 100755 --- a/core/parser.lua +++ b/core/parser.lua @@ -44,7 +44,7 @@ --check if the cooldown is type 2 or 3 or 4 and add to the defensive_cooldowns table for spellId, spellTable in pairs(LIB_OPEN_RAID_COOLDOWNS_INFO) do if (spellTable.type == 2 or spellTable.type == 3 or spellTable.type == 4) then - defensive_cooldowns[spellId] = true + defensive_cooldowns[spellId] = spellTable end end end @@ -3652,105 +3652,102 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 end end - --search key: ~spellcast ~castspell ~cast - function parser:spellcast (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, spelltype) - - ------------------------------------------------------------------------------------------------ - --early checks and fixes - + ---search key: ~spellcast ~castspell ~cast + ---comment: this function is called when a spell is casted + ---@param token string + ---@param time number + ---@param sourceSerial string + ---@param sourceName string + ---@param sourceFlags number + ---@param targetSerial string + ---@param targetName string + ---@param targetFlags number + ---@param targetRaidFlags number + ---@param spellId number + ---@param spellName string + ---@param spellType number + function parser:spellcast(token, time, sourceSerial, sourceName, sourceFlags, targetSerial, targetName, targetFlags, targetRaidFlags, spellId, spellName, spellType) --only capture if is in combat if (not _in_combat) then return end - if (not who_name) then - who_name = "[*] " .. spellname + if (not sourceName) then + sourceName = "[*] " .. spellName end - ------------------------------------------------------------------------------------------------ - --get actors - - --main actor - - 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 (meu_dono) then --� um pet - if (who_serial ~= "") then - misc_cache_pets [who_serial] = este_jogador - misc_cache_petsOwners [who_serial] = meu_dono + local sourceActor, ownerActor = misc_cache[sourceSerial] or misc_cache_pets[sourceSerial] or misc_cache[sourceName], misc_cache_petsOwners[sourceSerial] + if (not sourceActor) then + sourceActor, ownerActor, sourceName = _current_misc_container:PegarCombatente (sourceSerial, sourceName, sourceFlags, true) + if (ownerActor) then + if (sourceSerial ~= "") then + misc_cache_pets [sourceSerial] = sourceActor + misc_cache_petsOwners [sourceSerial] = ownerActor 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 + if (not misc_cache[ownerActor.serial] and ownerActor.serial ~= "") then + misc_cache[ownerActor.serial] = ownerActor end else - if (who_flags) then - misc_cache [who_name] = este_jogador + if (sourceFlags) then + misc_cache[sourceName] = sourceActor end end end ------------------------------------------------------------------------------------------------ --build containers on the fly - local spell_cast = este_jogador.spell_cast - if (not spell_cast) then - este_jogador.spell_cast = {[spellid] = 1} - else - spell_cast [spellid] = (spell_cast [spellid] or 0) + 1 + --amount of casts by actors ~casts + local castsByPlayer = _current_combat.amountCasts[sourceName] + if (not castsByPlayer) then + castsByPlayer = {} + _current_combat.amountCasts[sourceName] = castsByPlayer end + local amountOfCasts = _current_combat.amountCasts[sourceName][spellName] or 0 + amountOfCasts = amountOfCasts + 1 + _current_combat.amountCasts[sourceName][spellName] = amountOfCasts ------------------------------------------------------------------------------------------------ - --record cooldowns cast which can't track with buff applyed. - - --foi um jogador que castou - if (raid_members_cache [who_serial]) then - --check if is a cooldown :D - if (defensive_cooldowns [spellid]) then - --usou cooldown - if (not alvo_name) then - if (DetailsFramework.CooldownsDeffense [spellid]) then - alvo_name = who_name - - elseif (DetailsFramework.CooldownsRaid [spellid]) then - alvo_name = Loc ["STRING_RAID_WIDE"] - + --record cooldowns cast which can't track with buff applyed + --a player is the caster + if (raid_members_cache[sourceSerial]) then + --check if is a cooldown + local cooldownInfo = defensive_cooldowns[spellId] + if (cooldownInfo) then + if (not targetName) then + if (cooldownInfo.type == 2 or cooldownInfo.type == 3) then + targetName = sourceName + elseif (cooldownInfo.type == 4) then + targetName = Loc ["STRING_RAID_WIDE"] else - alvo_name = "--x--x--" + targetName = "--x--x--" end end - return parser:add_defensive_cooldown (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname) + return parser:add_defensive_cooldown(token, time, sourceSerial, sourceName, sourceFlags, targetSerial, targetName, targetFlags, targetRaidFlags, spellId, spellName) end - else --enemy successful casts (not interrupted) - if (bitBand(who_flags, 0x00000040) ~= 0 and who_name) then --byte 2 = 4 (enemy) + if (bitBand(sourceFlags, 0x00000040) ~= 0 and sourceName) then --byte 2 = 4 (enemy) --damager - local este_jogador = damage_cache [who_serial] + local este_jogador = damage_cache [sourceSerial] if (not este_jogador) then - este_jogador = _current_damage_container:PegarCombatente (who_serial, who_name, who_flags, true) + este_jogador = _current_damage_container:PegarCombatente (sourceSerial, sourceName, sourceFlags, true) end if (este_jogador) then --actor spells table - local spell = este_jogador.spells._ActorTable [spellid] --line where the actor was nil + local spell = este_jogador.spells._ActorTable [spellId] --line where the actor was nil if (not spell) then - spell = este_jogador.spells:PegaHabilidade (spellid, true, token) + spell = este_jogador.spells:PegaHabilidade (spellId, true, token) end spell.successful_casted = spell.successful_casted + 1 end --add the spellId in the enemy_cast_cache table to store the time the enemy successfully cast a spell --check if the spell is in the table - local enemyName = who_name + local enemyName = sourceName if (not enemy_cast_cache[time]) then - enemy_cast_cache[time] = {enemyName, spellid, 1} + enemy_cast_cache[time] = {enemyName, spellId, 1} else enemy_cast_cache[time][3] = enemy_cast_cache[time][3] + 1 end diff --git a/frames/window_playerbreakdown_compare.lua b/frames/window_playerbreakdown_compare.lua index fc1d2668..613ecfea 100644 --- a/frames/window_playerbreakdown_compare.lua +++ b/frames/window_playerbreakdown_compare.lua @@ -960,6 +960,8 @@ local on_enter = function(self) frame3.tooltip:SetPoint("bottomleft", bar3[2], "topleft", -18, 5) local spellid = bar1[3][4] + + --these are player names local player1 = frame1.player local player2 = frame2.player local player3 = frame3.player @@ -968,9 +970,12 @@ local on_enter = function(self) local average = bar1[3][2] local critical = bar1[3][3] - local player1_misc = info.instancia.showing (4, player1) - local player2_misc = info.instancia.showing (4, player2) - local player3_misc = info.instancia.showing (4, player3) + ---@type combat + local combatObject = info.instancia.showing + + local player1_misc = combatObject(4, player1) + local player2_misc = combatObject(4, player2) + local player3_misc = combatObject(4, player3) local player1_uptime local player1_casts @@ -1000,7 +1005,6 @@ local on_enter = function(self) frame1.tooltip.crit_label2:SetText(COMPARE_FIRSTPLAYER_PERCENT) if (player1_misc) then - --uptime local spell = player1_misc.debuff_uptime_spells and player1_misc.debuff_uptime_spells._ActorTable and player1_misc.debuff_uptime_spells._ActorTable [spellid] if (spell) then @@ -1018,38 +1022,20 @@ local on_enter = function(self) end --total casts - local amt_casts = player1_misc.spell_cast and player1_misc.spell_cast [spellid] - if (amt_casts) then - frame1.tooltip.casts_label3:SetText(amt_casts) + local amountOfCasts = combatObject:GetSpellCastAmount(player1, GetSpellInfo(spellid)) + if (amountOfCasts) then + frame1.tooltip.casts_label3:SetText(amountOfCasts) frame1.tooltip.casts_label2:SetText(COMPARE_FIRSTPLAYER_PERCENT) Details.gump:SetFontColor(frame1.tooltip.casts_label3, "white") - player1_casts = amt_casts + player1_casts = amountOfCasts else - local spellname = GetSpellInfo(spellid) - local extra_search_found - for casted_spellid, amount in pairs(player1_misc.spell_cast or {}) do - local casted_spellname = GetSpellInfo(casted_spellid) - if (casted_spellname == spellname) then - frame1.tooltip.casts_label3:SetText(amount) - frame1.tooltip.casts_label2:SetText(COMPARE_FIRSTPLAYER_PERCENT) + frame1.tooltip.casts_label3:SetText("?") + frame1.tooltip.casts_label2:SetText("?") - Details.gump:SetFontColor(frame1.tooltip.casts_label3, "white") - - player1_casts = amount - extra_search_found = true - break - end - end - - if (not extra_search_found) then - frame1.tooltip.casts_label3:SetText("?") - frame1.tooltip.casts_label2:SetText("?") - - Details.gump:SetFontColor(frame1.tooltip.casts_label3, "silver") - Details.gump:SetFontColor(frame1.tooltip.casts_label2, "silver") - end + Details.gump:SetFontColor(frame1.tooltip.casts_label3, "silver") + Details.gump:SetFontColor(frame1.tooltip.casts_label2, "silver") end else frame1.tooltip.uptime_label3:SetText(COMPARE_UNKNOWNDATA) @@ -1190,19 +1176,9 @@ local on_enter = function(self) end --total casts - local amt_casts = player2_misc.spell_cast and player2_misc.spell_cast [spellid] - if (not amt_casts) then - local spellname = GetSpellInfo(spellid) - for casted_spellid, amount in pairs(player2_misc.spell_cast or {}) do - local casted_spellname = GetSpellInfo(casted_spellid) - if (casted_spellname == spellname) then - amt_casts = amount - break - end - end - end - if (amt_casts) then + local amt_casts = combatObject:GetSpellCastAmount(player2_misc:Name(), GetSpellInfo(spellid)) + if (amt_casts) then if (not player1_casts) then frame2.tooltip.casts_label3:SetText(amt_casts) frame2.tooltip.casts_label2:SetText(COMPARE_UNKNOWNDATA) @@ -1356,17 +1332,7 @@ local on_enter = function(self) end --total casts - local amt_casts = player3_misc.spell_cast and player3_misc.spell_cast [spellid] - if (not amt_casts) then - local spellname = GetSpellInfo(spellid) - for casted_spellid, amount in pairs(player3_misc.spell_cast or {}) do - local casted_spellname = GetSpellInfo(casted_spellid) - if (casted_spellname == spellname) then - amt_casts = amount - break - end - end - end + local amt_casts = combatObject:GetSpellCastAmount(player3_misc:Name(), GetSpellInfo(spellid)) if (amt_casts) then diff --git a/frames/window_playerbreakdown_spells.lua b/frames/window_playerbreakdown_spells.lua index 65f88b96..bed64e01 100644 --- a/frames/window_playerbreakdown_spells.lua +++ b/frames/window_playerbreakdown_spells.lua @@ -14,8 +14,6 @@ local GameTooltip = GameTooltip local IsShiftKeyDown = IsShiftKeyDown local DF = DetailsFramework - - ---@type breakdownspelltab local spellsTab = {} @@ -1397,9 +1395,9 @@ end ---@param bkSpellData spelltableadv ---@param bkSpellStableIndex number ---@param totalValue number ----@param maxValue number +---@param topValue number ---@param bIsMainLine boolean if true this is the line which has all the values of the spell merged -local updateSpellBar = function(spellBar, index, actorName, combatObject, scrollFrame, headerTable, bkSpellData, bkSpellStableIndex, totalValue, maxValue, bIsMainLine) +local updateSpellBar = function(spellBar, index, actorName, combatObject, scrollFrame, headerTable, bkSpellData, bkSpellStableIndex, totalValue, topValue, bIsMainLine) --scrollFrame is defined as a table which is false, scrollFrame is a frame local textIndex = 1 @@ -1433,8 +1431,11 @@ local updateSpellBar = function(spellBar, index, actorName, combatObject, scroll ---@cast spellTable spelltable spellBar.spellTable = spellTable + ---@type string, number, string + local spellName, _, spellIcon = Details.GetSpellInfo(spellId) + ---@type number - local amtCasts = combatObject:GetSpellCastAmount(actorName, spellId) + local amtCasts = combatObject:GetSpellCastAmount(actorName, spellName) spellBar.amountCasts = amtCasts ---@type number @@ -1443,9 +1444,6 @@ local updateSpellBar = function(spellBar, index, actorName, combatObject, scroll ---@type number local combatTime = combatObject:GetCombatTime() - ---@type string, number, string - local spellName, _, spellIcon = Details.GetSpellInfo(spellId) - if (petName ~= "") then spellName = spellName .. " (" .. petName .. ")" end @@ -1456,8 +1454,8 @@ local updateSpellBar = function(spellBar, index, actorName, combatObject, scroll spellBar.statusBar.backgroundTexture:SetAlpha(Details.breakdown_spell_tab.spellbar_background_alpha) --statusbar size by percent - if (maxValue > 0) then - spellBar.statusBar:SetValue(bkSpellData.statusBarValue / maxValue * 100) + if (topValue > 0) then + spellBar.statusBar:SetValue(bkSpellData.statusBarValue / topValue * 100) else spellBar.statusBar:SetValue(0) end @@ -1673,7 +1671,7 @@ local refreshFunc = function(scrollFrame, scrollData, offset, totalLines) --~ref end end - --then it adds the lines for each spell merged, but it cannot use the bkSpellData, it needs the spellTable + --then it adds the lines for each spell merged, but it cannot use the bkSpellData, it needs the spellTable, it's kinda using bkSpellData, need to debug if (bkSpellData.bIsExpanded and spellTablesAmount > 1) then ---@type number spellTableIndex is the same counter as bkSpellStableIndex for spellTableIndex = 1, spellTablesAmount do @@ -1686,6 +1684,9 @@ local refreshFunc = function(scrollFrame, scrollData, offset, totalLines) --~ref ---@type string local nameToUse = petName ~= "" and petName or actorName local bIsMainLine = false + + + updateSpellBar(spellBar, index, nameToUse, combatObject, scrollFrame, headerTable, bkSpellData, spellTableIndex, totalValue, maxValue, bIsMainLine) mainSpellBar.ExpandedChildren[#mainSpellBar.ExpandedChildren + 1] = spellBar end @@ -1891,137 +1892,6 @@ local onEnterSpellTarget = function(targetFrame) cooltip:SetOwner(targetFrame) cooltip:Show() - - if true then return end - - do - if (spellId and type(spellId) == "number") then - ---@type actor - local actorObject = lineBar.other_actor or breakdownWindow.jogador - local spellTable = actorObject.spells and actorObject.spells:GetSpell(spellId) - - if (spellTable) then - local spellsSortedResult = {} - local targetContainer - local total = 0 - - if (spellTable.isReflection) then - targetContainer = spellTable.extra - else - local attribute, subAttribute = breakdownWindow.instancia:GetDisplay() - if (attribute == 1 or attribute == 3) then - targetContainer = spellTable.targets - else - if (subAttribute == 3) then --overheal - targetContainer = spellTable.targets_overheal - - elseif (subAttribute == 6) then --absorbs - targetContainer = spellTable.targets_absorbs - - else - targetContainer = spellTable.targets - end - end - end - - --add and sort - for targetName, amount in pairs(targetContainer) do - if (amount > 0) then - spellsSortedResult[#spellsSortedResult+1] = {targetName, amount} - total = total + amount - end - end - table.sort(spellsSortedResult, Details.Sort2) - - local spellName, _, spellIcon = _GetSpellInfo(spellId) - - GameTooltip:SetOwner(targetFrame, "ANCHOR_TOPRIGHT") - GameTooltip:AddLine(lineBar.index .. ". " .. spellName) - GameTooltip:AddLine(Loc ["STRING_TARGETS"] .. ":") - GameTooltip:AddLine(" ") - - --get time type - local timeElapsed - if (Details.time_type == 1 or not actorObject.grupo) then - timeElapsed = actorObject:Tempo() - elseif (Details.time_type == 2) then - timeElapsed = breakdownWindow.instancia.showing:GetCombatTime() - end - - local abbreviationFunction = Details.ToKFunctions[Details.ps_abbreviation] - - if (spellTable.isReflection) then - Details:FormatCooltipForSpells() - GameCooltip:SetOwner(targetFrame, "bottomright", "top", 4, -2) - - Details:AddTooltipSpellHeaderText("Spells Reflected", {1, 0.9, 0.0, 1}, 1, select(3, _GetSpellInfo(spellTable.id)), 0.1, 0.9, 0.1, 0.9) --localize-me - Details:AddTooltipHeaderStatusbar(1, 1, 1, 0.4) - - GameCooltip:AddIcon(select(3, _GetSpellInfo(spellTable.id)), 1, 1, 16, 16, .1, .9, .1, .9) - Details:AddTooltipHeaderStatusbar(1, 1, 1, 0.5) - - local topAmount = spellsSortedResult[1] and spellsSortedResult[1][2] - - for index, targetTable in ipairs(spellsSortedResult) do - local targetName = targetTable[1] - local amount = targetTable[2] - - GameCooltip:AddLine(spellName, abbreviationFunction(_, amount) .. " (" .. math.floor(amount / topAmount * 100) .. "%)") - GameCooltip:AddIcon(spellIcon, 1, 1, 16, 16, .1, .9, .1, .9) - Details:AddTooltipBackgroundStatusbar(false, amount / topAmount * 100) - end - - GameCooltip:Show() - - targetFrame.texture:SetAlpha(1) - targetFrame:SetAlpha(1) - lineBar:GetScript("OnEnter")(lineBar) - return - else - for index, targetTable in ipairs(spellsSortedResult) do - local targetName = targetTable[1] - local amount = targetTable[2] - - local class = Details:GetClass(targetName) - if (class and Details.class_coords[class]) then - local cords = Details.class_coords[class] - if (breakdownWindow.target_persecond) then - GameTooltip:AddDoubleLine(index .. ". |TInterface\\AddOns\\Details\\images\\classes_small_alpha:14:14:0:0:128:128:"..cords[1]*128 ..":"..cords[2]*128 ..":"..cords[3]*128 ..":"..cords[4]*128 .."|t " .. targetName, Details:comma_value(math.floor(amount / timeElapsed)), 1, 1, 1, 1, 1, 1) - else - GameTooltip:AddDoubleLine(index .. ". |TInterface\\AddOns\\Details\\images\\classes_small_alpha:14:14:0:0:128:128:"..cords[1]*128 ..":"..cords[2]*128 ..":"..cords[3]*128 ..":"..cords[4]*128 .."|t " .. targetName, abbreviationFunction(_, amount), 1, 1, 1, 1, 1, 1) - end - else - if (breakdownWindow.target_persecond) then - GameTooltip:AddDoubleLine(index .. ". " .. targetName, Details:comma_value(math.floor(amount / timeElapsed)), 1, 1, 1, 1, 1, 1) - else - GameTooltip:AddDoubleLine(index .. ". " .. targetName, abbreviationFunction(_, amount), 1, 1, 1, 1, 1, 1) - end - end - end - end - - GameTooltip:Show() - else - GameTooltip:SetOwner(targetFrame, "ANCHOR_TOPRIGHT") - GameTooltip:AddLine(lineBar.index .. ". " .. lineBar.spellId) - GameTooltip:AddLine(breakdownWindow.target_text) - GameTooltip:AddLine(Loc ["STRING_NO_TARGET"], 1, 1, 1) - GameTooltip:AddLine(Loc ["STRING_MORE_INFO"], 1, 1, 1) - GameTooltip:Show() - end - else - GameTooltip:SetOwner(targetFrame, "ANCHOR_TOPRIGHT") - GameTooltip:AddLine(lineBar.index .. ". " .. lineBar.spellId) - GameTooltip:AddLine(breakdownWindow.target_text) - GameTooltip:AddLine(Loc ["STRING_NO_TARGET"], 1, 1, 1) - GameTooltip:AddLine(Loc ["STRING_MORE_INFO"], 1, 1, 1) - GameTooltip:Show() - end - - targetFrame.texture:SetAlpha(.7) - targetFrame:SetAlpha(1) - lineBar:GetScript("OnEnter")(lineBar) - end end local onLeaveSpellTarget = function(self) diff --git a/functions/api2.lua b/functions/api2.lua index a3ead385..69814c85 100644 --- a/functions/api2.lua +++ b/functions/api2.lua @@ -12,7 +12,7 @@ local addonName, Details222 = ... --local helpers local getCombatObject = function(segmentNumber) local combatObject - + --select which segment to use, use low level variables for performance if (segmentNumber == -1) then combatObject = _detalhes.tabela_overall @@ -21,7 +21,7 @@ local getCombatObject = function(segmentNumber) else combatObject = _detalhes.tabela_historico.tabelas [segmentNumber] end - + return combatObject end @@ -46,17 +46,17 @@ end --return the spell object and the spellId local getSpellObject = function(playerObject, spellId, isLiteral) local parameterType = type(spellId) - + if (parameterType == "number" and isLiteral) then --is the id of a spell and literal, directly get the spell object return playerObject.spells._ActorTable [spellId], spellId - + else local passedSpellName if (parameterType == "string") then --passed a spell name, make the spell be in lower case passedSpellName = spellId:lower() - + elseif (parameterType == "number") then --passed a number but with literal off, transform the spellId into a spell name local spellName = GetSpellInfo(spellid) @@ -64,7 +64,7 @@ local getSpellObject = function(playerObject, spellId, isLiteral) passedSpellName = spellName:lower() end end - + if (passedSpellName) then for thisSpellId, spellObject in pairs(playerObject.spells._ActorTable) do local spellName = Details.GetSpellInfo(thisSpellId) @@ -120,17 +120,17 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.SegmentInfo (segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + local segmentInfo = { - + } - + if (not combatObject) then return segmentInfo end - - - + + + return segmentInfo end @@ -161,11 +161,11 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.SegmentElapsedTime (segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + return combatObject:GetCombatTime() end @@ -216,34 +216,34 @@ function Details.SegmentDamagingUnits (includePlayerUnits, includeEnemyUnits, in if (type(includePlayerUnits) ~= "boolean") then includePlayerUnits = true end - + local combatObject = getCombatObject (segment) - + local units = {} local nextIndex = 1 - + if (not combatObject) then return units end - + local damageContainer = combatObject:GetContainer (DETAILS_ATTRIBUTE_DAMAGE) for i = 1, #damageContainer._ActorTable do local playerObject = damageContainer._ActorTable [i] - + if (includePlayerUnits and playerObject.grupo) then units [nextIndex] = playerObject:GetName() nextIndex = nextIndex + 1 - + elseif (includeEnemyUnits and playerObject:IsEnemy()) then units [nextIndex] = playerObject:GetName() nextIndex = nextIndex + 1 - + elseif (includeFriendlyPetUnits and playerObject:IsPetOrGuardian()) then units [nextIndex] = playerObject:GetName() nextIndex = nextIndex + 1 end end - + return units end @@ -295,34 +295,34 @@ function Details.SegmentHealingUnits (includePlayerUnits, includeEnemyUnits, inc if (type(includePlayerUnits) ~= "boolean") then includePlayerUnits = true end - + local combatObject = getCombatObject (segment) - + local units = {} local nextIndex = 1 - + if (not combatObject) then return units end - + local damageContainer = combatObject:GetContainer (DETAILS_ATTRIBUTE_HEAL) for i = 1, #damageContainer._ActorTable do local playerObject = damageContainer._ActorTable [i] - + if (includePlayerUnits and playerObject.grupo) then units [nextIndex] = playerObject:GetName() nextIndex = nextIndex + 1 - + elseif (includeEnemyUnits and playerObject:IsEnemy()) then units [nextIndex] = playerObject:GetName() nextIndex = nextIndex + 1 - + elseif (includeFriendlyPetUnits and playerObject:IsPetOrGuardian()) then units [nextIndex] = playerObject:GetName() nextIndex = nextIndex + 1 end end - + return units end @@ -354,11 +354,11 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.SegmentTotalDamage (segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + return floor(combatObject.totals_grupo [1]) end @@ -391,11 +391,11 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.SegmentTotalHealing (segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + return floor(combatObject.totals_grupo [2]) end @@ -427,20 +427,20 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.SegmentPhases (segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + local phases = {} - + if (not combatObject) then return phases - end - + end + local phaseData = combatObject.PhaseData - + for phaseChangeId, phaseTable in ipairs(phaseData) do local phaseNumber = phaseTable [1] DetailsFramework.table.addunique (phases, phaseNumber) end - + return phases end @@ -481,7 +481,7 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitInfo (unitId, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + local unitInfo = { class = "UNKNOW", --old typo in details spec = 0, @@ -494,18 +494,18 @@ function Details.UnitInfo (unitId, segment) isArenaEnemy = false, arenaTeam = false, } - + if (not combatObject) then return unitInfo end - + local unitName = getUnitName (unitId) - + local playerObject = getActorObjectFromCombat (combatObject, 1, unitName) if (not playerObject) then return unitInfo end - + local specCache = Details.cached_specs local unitSerial = UnitGUID(unitId) local _, class = UnitClass(unitId) @@ -566,7 +566,7 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitTexture (unitId, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + local textureInfo = { classTexture = [[Interface\LFGFRAME\LFGROLE_BW]], classLeft = 0.25, @@ -579,32 +579,32 @@ function Details.UnitTexture (unitId, segment) specTop = 0, specBottom = 1, } - + if (not combatObject) then return textureInfo end - + local unitName = getUnitName (unitId) - + local playerObject = getActorObjectFromCombat (combatObject, 1, unitName) if (not playerObject) then return textureInfo end - + local texture, left, right, top, bottom = playerObject:GetClassIcon() textureInfo.classTexture = texture textureInfo.classLeft = left textureInfo.classRight = right textureInfo.classTop = top textureInfo.classBottom = bottom - + local texture, left, right, top, bottom = Details:GetSpecIcon (playerObject.spec) textureInfo.specTexture = texture textureInfo.specLeft = left textureInfo.specRight = right textureInfo.specTop = top textureInfo.specBottom = bottom - + return textureInfo end @@ -644,18 +644,18 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitDamage (unitId, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) - + local playerObject = getActorObjectFromCombat (combatObject, 1, unitName) if (not playerObject) then return 0 end - + return floor(playerObject.total or 0) end @@ -699,22 +699,22 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitDamageByPhase (unitId, phaseNumber, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + if (not phaseNumber) then return 0 end - + local unitName = getUnitName (unitId) - + local damagePhaseData = combatObject.PhaseData.damage [phaseNumber] if (not damagePhaseData) then return 0 end - + local phaseDamage = damagePhaseData [unitName] or 0 return floor(phaseDamage) end @@ -752,13 +752,13 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitDamageInfo (unitId, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) - + local damageInfo = { total = 0, totalWithoutPet = 0, @@ -767,19 +767,19 @@ function Details.UnitDamageInfo (unitId, segment) friendlyFire = 0, activityTime = 0, } - + local playerObject = getActorObjectFromCombat (combatObject, 1, unitName) if (not playerObject) then return damageInfo end - + damageInfo.total = floor(playerObject.total) damageInfo.totalWithoutPet = floor(playerObject.total_without_pet) damageInfo.damageAbsorbed = floor(playerObject.totalabsorbed) damageInfo.damageTaken = floor(playerObject.damage_taken) damageInfo.friendlyFire = playerObject.friendlyfire_total damageInfo.activityTime = playerObject:Tempo() - + return damageInfo end @@ -838,14 +838,14 @@ function Details.UnitDamageBySpell (unitId, spellId, isLiteral, segment) if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local playerObject = getActorObjectFromCombat (combatObject, 1, unitName) if (not playerObject) then return 0 end - + local spellObject, spellId = getSpellObject (playerObject, spellId, isLiteral) if (spellObject) then @@ -903,15 +903,15 @@ function Details.UnitDamageSpellInfo (unitId, spellId, isLiteral, segment) isLiteral = true end segment = segment or 0 - + local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) - + local spellInfo = { total = 0, spellId = 0, @@ -927,35 +927,20 @@ function Details.UnitDamageSpellInfo (unitId, spellId, isLiteral, segment) criticalHits = 0, criticalDamage = 0, } - - local playerObject = getActorObjectFromCombat (combatObject, 1, unitName) + + local playerObject = getActorObjectFromCombat(combatObject, 1, unitName) if (not playerObject) then return spellInfo end - - local spellObject, spellId = getSpellObject (playerObject, spellId, isLiteral) + + local spellObject, spellId = getSpellObject(playerObject, spellId, isLiteral) if (not spellObject) then return spellInfo end - local miscPlayerObject = getActorObjectFromCombat (combatObject, 4, unitName) - if (miscPlayerObject) then - local spellName = GetSpellInfo(spellId) - local castedAmount = miscPlayerObject.spell_cast and miscPlayerObject.spell_cast [spellId] - - if (castedAmount) then - spellInfo.casted = castedAmount - else - for castedSpellId, castedAmount in pairs(miscPlayerObject.spell_cast) do - local castedSpellName = GetSpellInfo(castedSpellId) - if (castedSpellName == spellName) then - spellInfo.casted = castedAmount - break - end - end - end - end - + local spellName = GetSpellInfo(spellId) + spellInfo.casted = combatObject:GetSpellCastAmount(unitName, spellName) + if (spellObject) then spellInfo.total = spellObject.total spellInfo.count = spellObject.counter @@ -970,7 +955,7 @@ function Details.UnitDamageSpellInfo (unitId, spellId, isLiteral, segment) spellInfo.criticalHits = spellObject.c_amt spellInfo.criticalDamage = spellObject.c_total end - + return spellInfo end @@ -1027,19 +1012,19 @@ function Details.UnitDamageSpellOnUnit (unitId, spellId, targetUnitId, isLiteral isLiteral = true end segment = segment or 0 - + local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local playerObject = getActorObjectFromCombat (combatObject, 1, unitName) if (not playerObject) then return 0 end - + local spellObject, spellId = getSpellObject (playerObject, spellId, isLiteral) if (spellObject) then local targetName = getUnitName (targetUnitId) @@ -1086,14 +1071,14 @@ function Details.UnitDamageTaken (unitId, segment) if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local playerObject = getActorObjectFromCombat (combatObject, 1, unitName) if (not playerObject) then return 0 end - + return floor(playerObject.damage_taken) end @@ -1136,18 +1121,18 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitDamageOnUnit (unitId, targetUnitId, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) - + local playerObject = getActorObjectFromCombat (combatObject, 1, unitName) if (not playerObject) then return 0 end - + local targetName = getUnitName (targetUnitId) return playerObject.targets [targetName] or 0 end @@ -1193,16 +1178,16 @@ function Details.UnitDamageTakenFromSpell (unitId, spellId, isLiteral, segment) if (type(isLiteral) ~= "boolean") then isLiteral = true end - + local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local damageContainer = combatObject:GetContainer (DETAILS_ATTRIBUTE_DAMAGE) - + local totalDamageTaken = 0 if (isLiteral and type(spellId) == "number") then for i = 1, #damageContainer._ActorTable do @@ -1265,20 +1250,20 @@ function Details.UnitDamagingSpells (unitId, segment) if (not combatObject) then return {} end - + local unitName = getUnitName (unitId) local playerObject = getActorObjectFromCombat (combatObject, 1, unitName) if (not playerObject) then return {} end - + local unitSpells = playerObject.spells._ActorTable local resultTable = {} for spellId, spellObject in pairs(unitSpells) do resultTable [#resultTable + 1] = spellId end - + return resultTable end @@ -1315,23 +1300,23 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitDamagingTargets (unitId, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local offensiveTargetNames = {} - + local playerObject = getActorObjectFromCombat (combatObject, 1, unitName) if (not playerObject) then return offensiveTargetNames end - + for targetName, _ in pairs(playerObject.targets) do offensiveTargetNames [#offensiveTargetNames + 1] = targetName end - + return offensiveTargetNames end @@ -1369,23 +1354,23 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitDamagingPets (unitId, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local petNames = {} - + local playerObject = getActorObjectFromCombat (combatObject, 1, unitName) if (not playerObject) then return petNames end - + for i = 1, #playerObject.pets do petNames [#petNames + 1] = playerObject.pets [i] end - + return petNames end @@ -1427,18 +1412,18 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitHealing (unitId, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) - + local playerObject = getActorObjectFromCombat (combatObject, 2, unitName) if (not playerObject) then return 0 end - + return floor(playerObject.total or 0) end @@ -1476,13 +1461,13 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitHealingInfo (unitId, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) - + local healingInfo = { total = 0, totalWithoutPet = 0, @@ -1494,12 +1479,12 @@ function Details.UnitHealingInfo (unitId, segment) healingTaken = 0, activityTime = 0, } - + local playerObject = getActorObjectFromCombat (combatObject, 2, unitName) if (not playerObject) then return healingInfo end - + healingInfo.total = floor(playerObject.total) healingInfo.totalWithoutPet = floor(playerObject.total_without_pet) healingInfo.totalOverhealWithoutPet = floor(playerObject.totalover_without_pet) @@ -1567,16 +1552,16 @@ function Details.UnitHealingBySpell (unitId, spellId, isLiteral, segment) if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local playerObject = getActorObjectFromCombat (combatObject, 2, unitName) if (not playerObject) then return 0 end - + local spellObject, spellId = getSpellObject (playerObject, spellId, isLiteral) - + if (spellObject) then return spellObject.total else @@ -1634,13 +1619,13 @@ function Details.UnitHealingSpellInfo (unitId, spellId, isLiteral, segment) isLiteral = true end segment = segment or 0 - + local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local spellInfo = { @@ -1658,35 +1643,20 @@ function Details.UnitHealingSpellInfo (unitId, spellId, isLiteral, segment) criticalHits = 0, criticalHealing = 0, } - + local playerObject = getActorObjectFromCombat (combatObject, 2, unitName) if (not playerObject) then return spellInfo end - + local spellObject, spellId = getSpellObject (playerObject, spellId, isLiteral) if (not spellObject) then return spellInfo end - local miscPlayerObject = getActorObjectFromCombat (combatObject, 4, unitName) - if (miscPlayerObject) then - local spellName = GetSpellInfo(spellId) - local castedAmount = miscPlayerObject.spell_cast and miscPlayerObject.spell_cast [spellId] - - if (castedAmount) then - spellInfo.casted = castedAmount - else - for castedSpellId, castedAmount in pairs(miscPlayerObject.spell_cast) do - local castedSpellName = GetSpellInfo(castedSpellId) - if (castedSpellName == spellName) then - spellInfo.casted = castedAmount - break - end - end - end - end - + local spellName = GetSpellInfo(spellId) + spellInfo.casted = combatObject:GetSpellCastAmount(unitName, spellName) + if (spellObject) then spellInfo.total = spellObject.total spellInfo.count = spellObject.counter @@ -1701,7 +1671,7 @@ function Details.UnitHealingSpellInfo (unitId, spellId, isLiteral, segment) spellInfo.criticalHits = spellObject.c_amt spellInfo.criticalHealing = spellObject.c_total end - + return spellInfo end @@ -1759,19 +1729,19 @@ function Details.UnitHealingSpellOnUnit (unitId, spellId, targetUnitId, isLitera isLiteral = true end segment = segment or 0 - + local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local playerObject = getActorObjectFromCombat (combatObject, 2, unitName) if (not playerObject) then return 0 end - + local spellObject, spellId = getSpellObject (playerObject, spellId, isLiteral) if (spellObject) then local targetName = getUnitName (targetUnitId) @@ -1820,14 +1790,14 @@ function Details.UnitHealingTaken (unitId, segment) if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local playerObject = getActorObjectFromCombat (combatObject, 2, unitName) if (not playerObject) then return 0 end - + return floor(playerObject.healing_taken) end @@ -1872,18 +1842,18 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitHealingOnUnit (unitId, targetUnitId, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) - + local playerObject = getActorObjectFromCombat (combatObject, 2, unitName) if (not playerObject) then return 0 end - + local targetName = getUnitName (targetUnitId) return playerObject.targets [targetName] or 0 end @@ -1932,16 +1902,16 @@ function Details.UnitHealingTakenFromSpell (unitId, spellId, isLiteral, segment) if (type(isLiteral) ~= "boolean") then isLiteral = true end - + local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local healingContainer = combatObject:GetContainer (DETAILS_ATTRIBUTE_HEAL) - + local totalHealingTaken = 0 if (isLiteral and type(spellId) == "number") then for i = 1, #healingContainer._ActorTable do @@ -2005,20 +1975,20 @@ function Details.UnitHealingSpells (unitId, segment) if (not combatObject) then return {} end - + local unitName = getUnitName (unitId) local playerObject = getActorObjectFromCombat (combatObject, 2, unitName) if (not playerObject) then return {} end - + local unitSpells = playerObject.spells._ActorTable local resultTable = {} for spellId, spellObject in pairs(unitSpells) do resultTable [#resultTable + 1] = spellId end - + return resultTable end @@ -2056,23 +2026,23 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitHealingTargets (unitId, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local healingTargetNames = {} - + local playerObject = getActorObjectFromCombat (combatObject, 2, unitName) if (not playerObject) then return healingTargetNames end - + for targetName, _ in pairs(playerObject.targets) do healingTargetNames [#healingTargetNames + 1] = targetName end - + return healingTargetNames end @@ -2111,24 +2081,24 @@ tinsert(Details.API_Description.namespaces[1].api, { function Details.UnitHealingPets (unitId, segment) segment = segment or 0 local combatObject = getCombatObject (segment) - + if (not combatObject) then return 0 end - + local unitName = getUnitName (unitId) local petNames = {} - + local playerObject = getActorObjectFromCombat (combatObject, 2, unitName) if (not playerObject) then return petNames end - + for i = 1, #playerObject.pets do petNames [#petNames + 1] = playerObject.pets [i] end - + return petNames end ---stop auto complete: doo ende endp elsez +--stop auto complete: doo ende endp elsez diff --git a/functions/playerclass.lua b/functions/playerclass.lua index efb11ddc..eed84194 100644 --- a/functions/playerclass.lua +++ b/functions/playerclass.lua @@ -283,56 +283,60 @@ do end function _detalhes:ReGuessSpec (t) - local Actor, container = t[1], t[2] + local actorObject, container = t[1], t[2] local SpecSpellList = _detalhes.SpecSpellList + ---@type combat + local combatObject = Details:GetCurrentCombat() + --get from the spell cast list - if (_detalhes.tabela_vigente) then - local misc_actor = _detalhes.tabela_vigente(4, Actor.nome) - if (misc_actor and misc_actor.spell_cast) then - for spellid, _ in pairs(misc_actor.spell_cast) do - local spec = SpecSpellList [spellid] - if (spec) then - _detalhes.cached_specs [Actor.serial] = spec + if (combatObject) then + local spellCastTable = combatObject:GetSpellCastTable(actorObject.nome) - Actor:SetSpecId(spec) - Actor.classe = _detalhes.SpecIDToClass [spec] or Actor.classe - Actor.guessing_spec = nil + for spellName in pairs(spellCastTable) do + local _, _, _, _, _, _, spellid = GetSpellInfo(spellName) + local spec = SpecSpellList[spellid] + if (spec) then + _detalhes.cached_specs[actorObject.serial] = spec - Details:SendEvent("UNIT_SPEC", nil, Actor:GetUnitId(), spec, Actor.serial) + actorObject:SetSpecId(spec) + actorObject.classe = _detalhes.SpecIDToClass[spec] or actorObject.classe + actorObject.guessing_spec = nil - if (container) then - container.need_refresh = true - end + Details:SendEvent("UNIT_SPEC", nil, actorObject:GetUnitId(), spec, actorObject.serial) - if (Actor.minha_barra and type(Actor.minha_barra) == "table") then - Actor.minha_barra.minha_tabela = nil - _detalhes:ScheduleWindowUpdate (2, true) - end - - return spec + if (container) then + container.need_refresh = true end + + if (actorObject.minha_barra and type(actorObject.minha_barra) == "table") then + actorObject.minha_barra.minha_tabela = nil + _detalhes:ScheduleWindowUpdate (2, true) + end + + return spec end end + else - if (Actor.spells) then - for spellid, _ in pairs(Actor.spells._ActorTable) do + if (actorObject.spells) then + for spellid, _ in pairs(actorObject.spells._ActorTable) do local spec = SpecSpellList [spellid] if (spec) then - if (spec ~= Actor.spec) then - _detalhes.cached_specs [Actor.serial] = spec + if (spec ~= actorObject.spec) then + _detalhes.cached_specs [actorObject.serial] = spec - Actor:SetSpecId(spec) - Actor.classe = _detalhes.SpecIDToClass [spec] or Actor.classe + actorObject:SetSpecId(spec) + actorObject.classe = _detalhes.SpecIDToClass [spec] or actorObject.classe - Details:SendEvent("UNIT_SPEC", nil, Actor:GetUnitId(), spec, Actor.serial) + Details:SendEvent("UNIT_SPEC", nil, actorObject:GetUnitId(), spec, actorObject.serial) if (container) then container.need_refresh = true end - if (Actor.minha_barra and type(Actor.minha_barra) == "table") then - Actor.minha_barra.minha_tabela = nil + if (actorObject.minha_barra and type(actorObject.minha_barra) == "table") then + actorObject.minha_barra.minha_tabela = nil _detalhes:ScheduleWindowUpdate (2, true) end @@ -343,9 +347,9 @@ do end end - if (Actor.classe == "HUNTER") then + if (actorObject.classe == "HUNTER") then local container_misc = _detalhes.tabela_vigente[4] - local index = container_misc._NameIndexTable [Actor.nome] + local index = container_misc._NameIndexTable [actorObject.nome] if (index) then local misc_actor = container_misc._ActorTable [index] local buffs = misc_actor.buff_uptime_spells and misc_actor.buff_uptime_spells._ActorTable @@ -353,20 +357,20 @@ do for spellid, spell in pairs(buffs) do local spec = SpecSpellList [spellid] if (spec) then - if (spec ~= Actor.spec) then - _detalhes.cached_specs [Actor.serial] = spec + if (spec ~= actorObject.spec) then + _detalhes.cached_specs [actorObject.serial] = spec - Actor:SetSpecId(spec) - Actor.classe = _detalhes.SpecIDToClass [spec] or Actor.classe + actorObject:SetSpecId(spec) + actorObject.classe = _detalhes.SpecIDToClass [spec] or actorObject.classe - Details:SendEvent("UNIT_SPEC", nil, Actor:GetUnitId(), spec, Actor.serial) + Details:SendEvent("UNIT_SPEC", nil, actorObject:GetUnitId(), spec, actorObject.serial) if (container) then container.need_refresh = true end - if (Actor.minha_barra and type(Actor.minha_barra) == "table") then - Actor.minha_barra.minha_tabela = nil + if (actorObject.minha_barra and type(actorObject.minha_barra) == "table") then + actorObject.minha_barra.minha_tabela = nil _detalhes:ScheduleWindowUpdate (2, true) end @@ -384,18 +388,13 @@ do end end - function _detalhes:GuessSpec (t) - + function _detalhes:GuessSpec(t) local Actor, container, tries = t[1], t[2], t[3] if (not Actor) then return false end local SpecSpellList = _detalhes.SpecSpellList - - --local misc_actor = info.instancia.showing (4, self:name()) - --spell_cast - --get from the spec cache local spec = _detalhes.cached_specs [Actor.serial] if (spec) then @@ -418,21 +417,46 @@ do --get from the spell cast list if (_detalhes.tabela_vigente) then - local misc_actor = _detalhes.tabela_vigente(4, Actor.nome) + local spellCastTable = _detalhes.tabela_vigente:GetSpellCastTable(Actor.nome) - if (misc_actor and misc_actor.spell_cast) then - for spellid, _ in pairs(misc_actor.spell_cast) do + for spellName, _ in pairs(spellCastTable) do + local _, _, _, _, _, _, spellid = GetSpellInfo(spellName) + local spec = SpecSpellList[spellid] + if (spec) then + _detalhes.cached_specs [Actor.serial] = spec + + Actor:SetSpecId(spec) + Actor.classe = _detalhes.SpecIDToClass [spec] or Actor.classe + + Details:SendEvent("UNIT_SPEC", nil, Actor:GetUnitId(), spec, Actor.serial) + + Actor.guessing_spec = nil + + if (container) then + container.need_refresh = true + end + + if (Actor.minha_barra and type(Actor.minha_barra) == "table") then + Actor.minha_barra.minha_tabela = nil + _detalhes:ScheduleWindowUpdate (2, true) + end + + return spec + end + end + + if (Actor.spells) then --correcao pros containers misc, precisa pegar os diferentes tipos de containers de l� + for spellid, _ in pairs(Actor.spells._ActorTable) do local spec = SpecSpellList [spellid] if (spec) then _detalhes.cached_specs [Actor.serial] = spec Actor:SetSpecId(spec) Actor.classe = _detalhes.SpecIDToClass [spec] or Actor.classe + Actor.guessing_spec = nil Details:SendEvent("UNIT_SPEC", nil, Actor:GetUnitId(), spec, Actor.serial) - Actor.guessing_spec = nil - if (container) then container.need_refresh = true end @@ -445,32 +469,6 @@ do return spec end end - else - if (Actor.spells) then --correcao pros containers misc, precisa pegar os diferentes tipos de containers de l� - for spellid, _ in pairs(Actor.spells._ActorTable) do - local spec = SpecSpellList [spellid] - if (spec) then - _detalhes.cached_specs [Actor.serial] = spec - - Actor:SetSpecId(spec) - Actor.classe = _detalhes.SpecIDToClass [spec] or Actor.classe - Actor.guessing_spec = nil - - Details:SendEvent("UNIT_SPEC", nil, Actor:GetUnitId(), spec, Actor.serial) - - if (container) then - container.need_refresh = true - end - - if (Actor.minha_barra and type(Actor.minha_barra) == "table") then - Actor.minha_barra.minha_tabela = nil - _detalhes:ScheduleWindowUpdate (2, true) - end - - return spec - end - end - end end else diff --git a/functions/spells.lua b/functions/spells.lua index 24ba2ccd..e6b52180 100644 --- a/functions/spells.lua +++ b/functions/spells.lua @@ -4113,40 +4113,44 @@ local SplitLoadFunc = function(self, deltaTime) if (actorToIndex [containerName]) then local spellList = actorToIndex [containerName]._ActorTable if (spellList) then - - local SpellPool = Details.spell_pool - local EncounterSpellPool = Details.encounter_spell_pool + local spellPool = Details.spell_pool + local encounterSpellPool = Details.encounter_spell_pool - for spellID, _ in pairs(spellList) do - if (not SpellPool [spellID]) then - SpellPool [spellID] = source + for spellId, _ in pairs(spellList) do + if (not spellPool[spellId]) then + spellPool[spellId] = source end - if (encounterID and not EncounterSpellPool [spellID]) then + if (encounterID and not encounterSpellPool[spellId]) then if (actorToIndex:IsEnemy()) then - EncounterSpellPool [spellID] = {encounterID, source} + encounterSpellPool[spellId] = {encounterID, source} end end end end end end - + + --[=[ .spell_cast is deprecated --spells the actor casted if (actorToIndex.spell_cast) then - local SpellPool = Details.spell_pool - local EncounterSpellPool = Details.encounter_spell_pool - - for spellID, _ in pairs(actorToIndex.spell_cast) do - if (not SpellPool [spellID]) then - SpellPool [spellID] = source - end - if (encounterID and not EncounterSpellPool [spellID]) then - if (actorToIndex:IsEnemy()) then - EncounterSpellPool [spellID] = {encounterID, source} - end - end + local spellPool = Details.spell_pool + local encounterSpellPool = Details.encounter_spell_pool + + for spellName, _ in pairs(actorToIndex.spell_cast) do + local _, _, _, _, _, _, spellId = GetSpellInfo(spellName) + if (spellId) then + if (not spellPool[spellId]) then + spellPool[spellId] = source + end + if (encounterID and not encounterSpellPool[spellId]) then + if (actorToIndex:IsEnemy()) then + encounterSpellPool[spellId] = {encounterID, source} + end + end + end end end + --]=] end end end diff --git a/plugins/Details_Compare2/Details_Compare2.lua b/plugins/Details_Compare2/Details_Compare2.lua index a2fb83e2..ed40dc8a 100644 --- a/plugins/Details_Compare2/Details_Compare2.lua +++ b/plugins/Details_Compare2/Details_Compare2.lua @@ -353,12 +353,11 @@ do local noData = "-" --amount of casts - local castAmount = 0 local combatObject = Details:GetCombatFromBreakdownWindow() - local playerMiscObject = combatObject:GetActor (DETAILS_ATTRIBUTE_MISC, playerName) + local castAmount = combatObject:GetSpellCastAmount(playerName, GetSpellInfo(spellId)) + local playerMiscObject = combatObject:GetActor(DETAILS_ATTRIBUTE_MISC, playerName) - if (playerMiscObject) then - castAmount = playerMiscObject.spell_cast and playerMiscObject.spell_cast [spellId] or 0 + if (castAmount > 0) then tooltip.casts_label2:SetText (fullPercent) tooltip.casts_label3:SetText (castAmount) DetailsFramework:SetFontColor (tooltip.casts_label2, "gray") @@ -470,15 +469,14 @@ do local spellId = rawSpellTable.id local noData = "-" - tooltip.player_name_label:SetText (Details:GetOnlyName (actualPlayerName)) - + tooltip.player_name_label:SetText(Details:GetOnlyName(actualPlayerName)) + --amount of casts - local castAmount = 0 - local combatObject = Details:GetCombatFromBreakdownWindow() + local combatObject = Details:GetCombatFromBreakdownWindow() local playerMiscObject = combatObject:GetActor (DETAILS_ATTRIBUTE_MISC, playerName) - - if (playerMiscObject) then - castAmount = playerMiscObject.spell_cast and playerMiscObject.spell_cast [spellId] or 0 + + local castAmount = combatObject:GetSpellCastAmount(playerName, GetSpellInfo(spellId)) + if (castAmount > 0) then tooltip.casts_label2:SetText (getPercentComparison (mainCastAmount, castAmount)) tooltip.casts_label3:SetText (castAmount) DetailsFramework:SetFontColor (tooltip.casts_label2, "white") @@ -1564,6 +1562,7 @@ do [2] = {1, 2, 3, 4, 5, 6, 7, 8}, }, tabNameToReplace = "Compare", + bIsCompareTab = true, } --replace tab [attribute] = [sub attributes] ) end diff --git a/plugins/Details_Compare2/Details_Compare2.toc b/plugins/Details_Compare2/Details_Compare2.toc index d88b1863..954c5d48 100644 --- a/plugins/Details_Compare2/Details_Compare2.toc +++ b/plugins/Details_Compare2/Details_Compare2.toc @@ -1,4 +1,4 @@ -## Interface: 100005 +## Interface: 100007 ## Title: Details!: Compare 2.0 ## Notes: Replace the Compare tab in the player breakdown window. ## RequiredDeps: Details diff --git a/plugins/Details_DataStorage/Details_DataStorage.toc b/plugins/Details_DataStorage/Details_DataStorage.toc index 4f667d0a..36fce6bc 100644 --- a/plugins/Details_DataStorage/Details_DataStorage.toc +++ b/plugins/Details_DataStorage/Details_DataStorage.toc @@ -1,4 +1,4 @@ -## Interface: 100005 +## Interface: 100007 ## Title: Details!: Storage ## Notes: Stores information for Details! Damage Meter ## DefaultState: Enabled diff --git a/plugins/Details_EncounterDetails/Details_EncounterDetails.toc b/plugins/Details_EncounterDetails/Details_EncounterDetails.toc index ab91c590..eb0b5738 100644 --- a/plugins/Details_EncounterDetails/Details_EncounterDetails.toc +++ b/plugins/Details_EncounterDetails/Details_EncounterDetails.toc @@ -1,4 +1,4 @@ -## Interface: 100005 +## Interface: 100007 ## Title: Details!: Encounter Breakdown (plugin) ## Notes: Show detailed information about a boss encounter. Also provide damage per phase, graphic charts, easy weakauras creation. ## RequiredDeps: Details diff --git a/plugins/Details_RaidCheck/Details_RaidCheck.toc b/plugins/Details_RaidCheck/Details_RaidCheck.toc index ac79f63e..9ae59349 100644 --- a/plugins/Details_RaidCheck/Details_RaidCheck.toc +++ b/plugins/Details_RaidCheck/Details_RaidCheck.toc @@ -1,4 +1,4 @@ -## Interface: 100005 +## Interface: 100007 ## Title: Details!: Raid Check (plugin) ## Notes: Show talents and item level for all members in your group, also shows food and flask state. ## RequiredDeps: Details diff --git a/plugins/Details_Streamer/Details_Streamer.toc b/plugins/Details_Streamer/Details_Streamer.toc index f3f8a3d2..a95bb178 100644 --- a/plugins/Details_Streamer/Details_Streamer.toc +++ b/plugins/Details_Streamer/Details_Streamer.toc @@ -1,4 +1,4 @@ -## Interface: 100005 +## Interface: 100007 ## Title: Details!: Streamer (plugin) ## Notes: Show which spells you are casting, viewers can see what are you doing and follow your steps. ## RequiredDeps: Details diff --git a/plugins/Details_TinyThreat/Details_TinyThreat.toc b/plugins/Details_TinyThreat/Details_TinyThreat.toc index 7d3f34bc..37ff3716 100644 --- a/plugins/Details_TinyThreat/Details_TinyThreat.toc +++ b/plugins/Details_TinyThreat/Details_TinyThreat.toc @@ -1,4 +1,4 @@ -## Interface: 100005 +## Interface: 100007 ## Title: Details!: Tiny Threat (plugin) ## Notes: Threat meter plugin, show threat for group members in the window. Select it from the Plugin menu in the Orange Cogwheel. ## RequiredDeps: Details diff --git a/plugins/Details_Vanguard/Details_Vanguard.toc b/plugins/Details_Vanguard/Details_Vanguard.toc index d9b38ba1..91a73b5f 100644 --- a/plugins/Details_Vanguard/Details_Vanguard.toc +++ b/plugins/Details_Vanguard/Details_Vanguard.toc @@ -1,4 +1,4 @@ -## Interface: 100005 +## Interface: 100007 ## Title: Details!: Vanguard (plugin) ## Notes: Show the health and debuffs for tanks in your group. ## SavedVariablesPerCharacter: _detalhes_databaseVanguard