From 08bc98c2b31adf6ae4855d22e136f2abc0bf8754 Mon Sep 17 00:00:00 2001 From: Tercio Date: Tue, 21 Aug 2018 18:14:42 -0300 Subject: [PATCH] - Parser cleanup. --- boot.lua | 2 +- classes/classe_damage.lua | 4 +- core/parser.lua | 294 +++++++------------------------------- 3 files changed, 50 insertions(+), 250 deletions(-) diff --git a/boot.lua b/boot.lua index 565f30c3..9b94793e 100644 --- a/boot.lua +++ b/boot.lua @@ -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 = 6231 + _detalhes.build_counter = 6239 _detalhes.userversion = "v8.0.1." .. _detalhes.build_counter _detalhes.realversion = 134 --core version _detalhes.version = _detalhes.userversion .. " (core " .. _detalhes.realversion .. ")" diff --git a/classes/classe_damage.lua b/classes/classe_damage.lua index 2b840172..b12c77cd 100644 --- a/classes/classe_damage.lua +++ b/classes/classe_damage.lua @@ -2894,8 +2894,6 @@ function atributo_damage:ToolTip_DamageDone (instancia, numero, barra, keydown) meu_tempo = instancia.showing:GetCombatTime() end - --print ("time:", meu_tempo) - --add actor spells for _spellid, _skill in _pairs (ActorSkillsContainer) do ActorSkillsSortTable [#ActorSkillsSortTable+1] = {_spellid, _skill.total, _skill.total/meu_tempo} @@ -3116,7 +3114,7 @@ function atributo_damage:ToolTip_DamageDone (instancia, numero, barra, keydown) --_detalhes:AddTooltipSpellHeaderText ("Phases", headerColor, 1, [[Interface\Garrison\MobileAppIcons]], 2*130/1024, 3*130/1024, 5*130/1024, 6*130/1024) --_detalhes:AddTooltipSpellHeaderText ("Phases", headerColor, 1, [[Interface\Garrison\orderhall-missions-mechanic10]], 0, 1, 0, 1) - _detalhes:AddTooltipSpellHeaderText ("Phases", headerColor, 1, [[Interface\Garrison\orderhall-missions-mechanic8]], 11/64, 53/64, 11/64, 53/64) + _detalhes:AddTooltipSpellHeaderText ("Phases", headerColor, 1, [[Interface\Garrison\orderhall-missions-mechanic8]], 11/64, 53/64, 11/64, 53/64) --localize-me --GameCooltip:AddIcon ([[Interface\AddOns\Details\images\key_shift]], 1, 2, _detalhes.tooltip_key_size_width, _detalhes.tooltip_key_size_height, 0, 1, 0, 0.640625, _detalhes.tooltip_key_overlay1) _detalhes:AddTooltipHeaderStatusbar (r, g, b, barAlha) diff --git a/core/parser.lua b/core/parser.lua index 3a98fd7d..35f38883 100644 --- a/core/parser.lua +++ b/core/parser.lua @@ -39,7 +39,6 @@ local parser = _detalhes.parser --details local local absorb_spell_list = _detalhes.AbsorbSpells --details local - --local cc_spell_list = _detalhes.CrowdControlSpells --details local local cc_spell_list = DetailsFramework.CrowdControlSpells local container_combatentes = _detalhes.container_combatentes --details local @@ -84,20 +83,14 @@ --> tanks local tanks_members_cache = setmetatable ({}, _detalhes.weaktable) --> damage and heal last events - local last_events_cache = {} --> placeholder + local last_events_cache = {} --> initialize table (placeholder) --> pets - local container_pets = {} --> place holder + local container_pets = {} --> initialize table (placeholder) --> ignore deaths local ignore_death = {} - --> special items - - local paladin_gbom = {} --greater blessing of might - local shaman_slash = {} --storm slash - local shaman_slash_timers = {} --storm slash + --> spell containers for special cases local monk_guard_talent = {} --guard talent for bm monks - local source_cache = {} --store the source's guid, name and flag - ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> constants @@ -105,19 +98,19 @@ local container_misc = _detalhes.container_type.CONTAINER_MISC_CLASS local duel_candidates = _detalhes.duel_candidates - local OBJECT_TYPE_ENEMY = 0x00000040 - local OBJECT_TYPE_PLAYER = 0x00000400 - local OBJECT_TYPE_PETS = 0x00003000 - local AFFILIATION_GROUP = 0x00000007 - local REACTION_FRIENDLY = 0x00000010 - local REACTION_MINE = 0x00000001 + local OBJECT_TYPE_ENEMY = 0x00000040 + local OBJECT_TYPE_PLAYER = 0x00000400 + local OBJECT_TYPE_PETS = 0x00003000 + local AFFILIATION_GROUP = 0x00000007 + local REACTION_FRIENDLY = 0x00000010 + local REACTION_MINE = 0x00000001 - local ENVIRONMENTAL_FALLING_NAME = Loc ["STRING_ENVIRONMENTAL_FALLING"] - local ENVIRONMENTAL_DROWNING_NAME = Loc ["STRING_ENVIRONMENTAL_DROWNING"] - local ENVIRONMENTAL_FATIGUE_NAME = Loc ["STRING_ENVIRONMENTAL_FATIGUE"] - local ENVIRONMENTAL_FIRE_NAME = Loc ["STRING_ENVIRONMENTAL_FIRE"] - local ENVIRONMENTAL_LAVA_NAME = Loc ["STRING_ENVIRONMENTAL_LAVA"] - local ENVIRONMENTAL_SLIME_NAME = Loc ["STRING_ENVIRONMENTAL_SLIME"] + local ENVIRONMENTAL_FALLING_NAME = Loc ["STRING_ENVIRONMENTAL_FALLING"] + local ENVIRONMENTAL_DROWNING_NAME = Loc ["STRING_ENVIRONMENTAL_DROWNING"] + local ENVIRONMENTAL_FATIGUE_NAME = Loc ["STRING_ENVIRONMENTAL_FATIGUE"] + local ENVIRONMENTAL_FIRE_NAME = Loc ["STRING_ENVIRONMENTAL_FIRE"] + local ENVIRONMENTAL_LAVA_NAME = Loc ["STRING_ENVIRONMENTAL_LAVA"] + local ENVIRONMENTAL_SLIME_NAME = Loc ["STRING_ENVIRONMENTAL_SLIME"] local RAID_TARGET_FLAGS = { [128] = true, --0x80 skull @@ -166,42 +159,42 @@ _detalhes.OverridedSpellIds = override_spellId - --> stormlash and greater blessing of the might - local SPELLID_SHAMAN_SLASH_AURA = 195222 - local SPELLID_SHAMAN_SLASH_DAMAGE = 195256 - local SPELLID_PALADIN_GBOM_AURA = 203528 - local SPELLID_PALADIN_GBOM_DAMAGE = 205729 + --> ignore soul link (damage from the warlock on his pet - current to demonology only) + local SPELLID_WARLOCK_SOULLINK = 108446 + --> when checking if can start a new combat, ignore the damage from warlock's burning rush + local SPELLID_WARLOCK_BURNINGRUSH = 111400 + --> brewmaster monk guard talent local SPELLID_MONK_GUARD = 115295 - - --> ignore warlock life tap, since it's bugged - local SPELLID_WARLOCK_LIFETAP = 1454 - - local SPELLNAME_SHAMAN_SLASH = GetSpellInfo (195222) - local SPELLNAME_PALADIN_GBOM = GetSpellInfo (203528) + --> brewmaster monk stagger mechanics + local SPELLID_MONK_STAGGER = 124255 + --> restoration shaman spirit link totem + local SPELLID_SHAMAN_SLT = 98021 + --> holy paladin light of the martyr + local SPELLID_PALADIN_LIGHTMARTYR = 196917 --> spells with special treatment local special_damage_spells = { - [98021] = true, --> Spirit Link Toten - [96917] = true, --> Light of the Martyr - [SPELLID_PALADIN_GBOM_DAMAGE] = true, - [SPELLID_SHAMAN_SLASH_DAMAGE] = true, - [220893] = true, --> Akaari's Soul - [124255] = true, --> Stagger + [SPELLID_SHAMAN_SLT] = true, --> Spirit Link Toten + [SPELLID_PALADIN_LIGHTMARTYR] = true, --> Light of the Martyr + [SPELLID_MONK_STAGGER] = true, --> Stagger } --> is parser allowed to replace spellIDs? - local is_using_spellId_override = false + local is_using_spellId_override = false --> recording data options flags local _recording_self_buffs = false local _recording_ability_with_buffs = false local _recording_healing = false local _recording_buffs_and_debuffs = false + --> in combat flag local _in_combat = false local _current_encounter_id + --> deathlog local _death_event_amt = 16 + --> hooks local _hook_cooldowns = false local _hook_deaths = false @@ -212,11 +205,6 @@ local _hook_deaths_container = _detalhes.hooks ["HOOK_DEATH"] local _hook_battleress_container = _detalhes.hooks ["HOOK_BATTLERESS"] local _hook_interrupt_container = _detalhes.hooks ["HOOK_INTERRUPT"] - - --> kil jaeden encounter: - --> REMOVE THIS ON 7.3 RELEASE - local _encounter_kiljaeden_eruptingreflection_loc = "Erupting Reflection" - local _encounter_kiljaeden_wailingreflection_loc = "Wailing Reflection" ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> internal functions @@ -248,8 +236,7 @@ return end _detalhes.LastPullMsg = time() - - --local hitLine = self.HitBy or "|cFFFFFF00First Hit|r: *?* from *?* " + local hitLine = self.HitBy or "|cFFFFBB00First Hit|r: *?*" local targetLine = "" @@ -314,17 +301,16 @@ end end - _detalhes:Msg ("|cFFFFBB00Your Best Score|r:", _detalhes:ToK2 ((value) / combatTime) .. " [|cFFFFFF00Guild Rank: " .. rank .. "|r]") + _detalhes:Msg ("|cFFFFBB00Your Best Score|r:", _detalhes:ToK2 ((value) / combatTime) .. " [|cFFFFFF00Guild Rank: " .. rank .. "|r]") --> localize-me if ((not combatTime or combatTime == 0) and not _detalhes.SyncWarning) then - _detalhes:Msg ("|cFFFF3300you may need sync the rank within the guild, type '|cFFFFFF00/details rank|r'|r") + _detalhes:Msg ("|cFFFF3300you may need sync the rank within the guild, type '|cFFFFFF00/details rank|r'|r") --> localize-me _detalhes.SyncWarning = true end end end - function parser:spell_dmg (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, spelltype, amount, overkill, school, resisted, blocked, absorbed, critical, glacing, crushing, isoffhand) ------------------------------------------------------------------------------------------------ @@ -362,32 +348,21 @@ --> avoid doing spellID checks on each iteration if (special_damage_spells [spellid]) then --> stagger - if (spellid == 124255) then + if (spellid == SPELLID_MONK_STAGGER) then return parser:MonkStagger_damage (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype, amount, overkill, school, resisted, blocked, absorbed, critical, glacing, crushing, isoffhand) --> spirit link toten - elseif (spellid == 98021) then + elseif (spellid == SPELLID_SHAMAN_SLT) then return parser:SLT_damage (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype, amount, overkill, school, resisted, blocked, absorbed, critical, glacing, crushing, isoffhand) --> Light of the Martyr - paladin spell which causes damage to the caster it self - elseif (spellid == 196917) then -- or spellid == 183998 < healing part + elseif (spellid == SPELLID_PALADIN_LIGHTMARTYR) then -- or spellid == 183998 < healing part local healingActor = healing_cache [who_name] if (healingActor and healingActor.spells) then healingActor.total = healingActor.total - (amount or 0) end return --> ignore this event - --> paladin and shaman special conditions, change source - elseif (spellid == SPELLID_PALADIN_GBOM_DAMAGE) then - who_serial, who_name, who_flags = parser:GetRealHitSourceFromBuffOwner (paladin_gbom, who_serial, who_name, who_flags, SPELLNAME_PALADIN_GBOM) - elseif (spellid == SPELLID_SHAMAN_SLASH_DAMAGE) then - who_serial, who_name, who_flags = parser:GetRealHitSourceFromBuffOwner (shaman_slash, who_serial, who_name, who_flags, SPELLNAME_SHAMAN_SLASH) - - --> Rogue's Akaari's Soul - q - elseif (spellid == 220893) then - if (who_flags and _bit_band (who_flags, REACTION_MINE) ~= 0) then - who_serial, who_name, who_flags = UnitGUID ("player"), _detalhes.playername, 0x00000417 - end end end @@ -395,7 +370,7 @@ --> check if need start an combat if (not _in_combat) then - if ( token ~= "SPELL_PERIODIC_DAMAGE" and spellid ~= SPELLID_PALADIN_GBOM_DAMAGE and + if ( token ~= "SPELL_PERIODIC_DAMAGE" and ( (who_flags and _bit_band (who_flags, AFFILIATION_GROUP) ~= 0 and _UnitAffectingCombat (who_name) ) or @@ -424,7 +399,7 @@ --> entrar em combate se for dot e for do jogador e o ultimo combate ter sido a mais de 10 segundos atr�s if (token == "SPELL_PERIODIC_DAMAGE" and who_name == _detalhes.playername) then --> ignora burning rush se o jogador estiver fora de combate - if (spellid == 111400) then + if (spellid == SPELLID_WARLOCK_BURNINGRUSH) then return end --> faz o calculo dos 10 segundos @@ -681,9 +656,8 @@ not jogador_alvo.enemy and not este_jogador.enemy ) ) then - - --> ignore soul link (damage from the warlock on his pet) - if (spellid == 108446) then + + if (spellid == SPELLID_WARLOCK_SOULLINK) then return end @@ -1183,20 +1157,16 @@ return end + --> MOTHER encounter in Uldir is triggering the summon of the add as it was a pet from the player the crossed rooms REMOVE WHEN BFA IS DONE if (spellid == 268871 or spellid == 267833) then --print ("IGNORING summon of a Corrupted Blood Clone for player", who_name) --5/17 18:16:48.886 SPELL_SUMMON,Creature-0-4028-1861-987-136949-00007DF137,"Corrupted Blood Clone",0xa18,0x0,Creature-0-4028-1861-987-136315-00007DF140,"Remnant of Corruption",0xa28,0x0,267833,"Defense Grid",0x1 --5/17 18:16:49.601 SPELL_SUMMON,Player-970-000BDB1F,"Fhqwhgads-Anduin",0x514,0x2,Creature-0-4028-1861-987-136949-00007DF141,"Corrupted Blood Clone",0xa28,0x0,268871,"Corrupted Blood Clone",0x1 + --4/22 18:07:54.369 SPELL_SUMMON,Player-3296-009371B2,"Façade-Anasterian(US)",0x514,0x0,Creature-0-3198-1448-2131-90477-0000380DAA,"Blood Globule",0xa28,0x0,180410,"Heart Seeker",0x1 + --5/4 15:45:24.222 SPELL_SUMMON,Player-3296-009576DD,"Àlëx-Brill(EU)",0x40514,0x0,Creature-0-2083-1448-25606-90513-000047BE44,"Fel Blood Globule",0xa28,0x0,180413,"Heart Seeker",0x1 return end ---4/22 18:07:54.369 SPELL_SUMMON,Player-3296-009371B2,"Façade-Anasterian(US)",0x514,0x0,Creature-0-3198-1448-2131-90477-0000380DAA,"Blood Globule",0xa28,0x0,180410,"Heart Seeker",0x1 ---5/4 15:45:24.222 SPELL_SUMMON,Player-3296-009576DD,"Àlëx-Brill(EU)",0x40514,0x0,Creature-0-2083-1448-25606-90513-000047BE44,"Fel Blood Globule",0xa28,0x0,180413,"Heart Seeker",0x1 - - --if (spellid and (spellid == 180410 or spellid == 180413)) then -- Heart Seeker --> WOD Kilrogg encounter - -- return - --end - if (not who_name) then who_name = "[*] " .. spellName end @@ -1404,7 +1374,7 @@ end --> spirit link toten - if (spellid == 98021) then + if (spellid == SPELLID_SHAMAN_SLT) then return parser:SLT_healing (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype, amount, overhealing, absorbed, critical, is_shield) end @@ -1679,19 +1649,6 @@ ignore_death [who_name] = true return - elseif (spellid == SPELLID_SHAMAN_SLASH_AURA) then --shaman slash - --> handle the buff on parser time - if (shaman_slash_timers [who_serial] and shaman_slash_timers [who_serial] [alvo_serial]) then - _detalhes:CancelTimer (shaman_slash_timers [who_serial] [alvo_serial]) - shaman_slash_timers [who_serial] [alvo_serial] = nil - end - - parser:Handle3rdPartyBuff (shaman_slash, who_serial, alvo_serial, true, who_name, who_flags) - - elseif (spellid == SPELLID_PALADIN_GBOM_AURA) then --paladin gbom - --> handle the buff on parser time - parser:Handle3rdPartyBuff (paladin_gbom, who_serial, alvo_serial, true, who_name, who_flags) - elseif (spellid == SPELLID_MONK_GUARD) then --> BfA monk talent monk_guard_talent [who_serial] = amount @@ -2053,17 +2010,7 @@ end end - if (spellid == SPELLID_SHAMAN_SLASH_AURA) then --shaman slash - --as @Kihra from WCL mentioned, slash has a travel time, the hit may land after the buff has gone - local delay_timer = _detalhes:ScheduleTimer ("HandleSlashUnbuff", 2.5, shaman_slash, who_serial, alvo_serial) - shaman_slash_timers [who_serial] = shaman_slash_timers [who_serial] or {} - shaman_slash_timers [who_serial] [alvo_serial] = delay_timer - --parser:Handle3rdPartyBuff (shaman_slash, who_serial, alvo_serial) - - elseif (spellid == SPELLID_PALADIN_GBOM_AURA) then --paladin gbom - parser:Handle3rdPartyBuff (paladin_gbom, who_serial, alvo_serial) - - elseif (spellid == SPELLID_MONK_GUARD) then + if (spellid == SPELLID_MONK_GUARD) then --> BfA monk talent if (monk_guard_talent [who_serial]) then local damage_prevented = monk_guard_talent [who_serial] - (amount or 0) @@ -2552,11 +2499,6 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 elseif (not alvo_name) then return end - - --> ignore warlock life tap - if (spellid == SPELLID_WARLOCK_LIFETAP) then - return - end ------------------------------------------------------------------------------------------------ --> check if is energy or resource @@ -3406,146 +3348,10 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --> core - - --[[ - paladin buffs = {} - player = paladin buffs [ target GUID ] - - paladin buffs [ GUID ] = {sourceGUID, sourceGUID, sourceGUID, offset = X} - it's a table with a indexed side and a hash side - on index side, there is GUIDs of all paladins that buffed the player - on the hash side, there is a member 'offset' which points the index of the next paladin to attribute the damage to - --]] function parser:WipeSourceCache() - wipe (source_cache) - wipe (paladin_gbom) - wipe (shaman_slash) wipe (monk_guard_talent) end - - function parser:Handle3rdPartyBuffs_OnEncounterStart() - --> wipe and rebuild the list - parser:WipeSourceCache() - local get_name = _detalhes.GetCLName - - local unit_type = IsInRaid() and "raid" or "party" - - for i = 1, (_GetNumGroupMembers() + (unit_type == "party" and -1 or 0)) do - for auraIndex = 1, 40 do - --gbom - local name, texture, count, debuffType, duration, expirationTime, caster, canStealOrPurge, nameplateShowPersonal, spellId = UnitAura (unit_type .. i, auraIndex, "HELPFUL") - if (name and caster and (UnitInRaid (caster) or UnitInParty (caster))) then - if (spellId == SPELLID_SHAMAN_SLASH_AURA) then - local source_serial = UnitGUID (caster) - local target_serial = UnitGUID (unit_type .. i) - local name, flag = get_name (_, caster), 0x514 - parser:Handle3rdPartyBuff (shaman_slash, source_serial, target_serial, true, name, flag) - - elseif (spellId == SPELLID_PALADIN_GBOM_AURA) then - local source_serial = UnitGUID (caster) - local target_serial = UnitGUID (unit_type .. i) - local name, flag = get_name (_, caster), 0x514 - parser:Handle3rdPartyBuff (paladin_gbom, source_serial, target_serial, true, name, flag) - end - end - end - end - - if (unit_type == "party") then - for auraIndex = 1, 40 do - --gbom - local name, texture, count, debuffType, duration, expirationTime, caster, canStealOrPurge, nameplateShowPersonal, spellId = UnitAura ("player", auraIndex, "HELPFUL") - if (name and caster and (UnitInParty (caster))) then - if (spellId == SPELLID_SHAMAN_SLASH_AURA) then - local source_serial = UnitGUID (caster) - local target_serial = UnitGUID ("player") - local name, flag = get_name (_, caster), 0x514 - parser:Handle3rdPartyBuff (shaman_slash, source_serial, target_serial, true, name, flag) - - elseif (spellId == SPELLID_PALADIN_GBOM_AURA) then - local source_serial = UnitGUID (caster) - local target_serial = UnitGUID ("player") - local name, flag = get_name (_, caster), 0x514 - parser:Handle3rdPartyBuff (paladin_gbom, source_serial, target_serial, true, name, flag) - end - end - end - end - end - - function parser:GetRealHitSourceFromBuffOwner (container, actor_serial, actor_name, actor_flags, spellname) --actor can be anything, a player, pet, etc - local target_buffs = container [actor_serial] - if (target_buffs) then - local real_source = source_cache [target_buffs [target_buffs.offset]] - --> set the next source - target_buffs.offset = (target_buffs.offset % #target_buffs) + 1 - if (real_source) then - return unpack (real_source) - else - --query the player buffs if not found on cache - local name, texture, count, debuffType, duration, expirationTime, caster, canStealOrPurge, nameplateShowPersonal, spellId = UnitAura (actor_name, spellname) - if (name) then - local source_serial = UnitGUID (caster) - if (source_serial) then - parser:Handle3rdPartyBuff (container, source_serial, actor_serial, true, _detalhes:GetCLName (caster), 0x514) - end - end - return actor_serial, actor_name, actor_flags - end - end - return actor_serial, actor_name, actor_flags - end - - function parser:Handle3rdPartyBuff (container, source, target, is_applying, name, flags) --source/target are GUIDs/is_applying bool/name and flag are from the caster - if (is_applying) then - local target_buffs = container [target] - if (not target_buffs) then - --> create the source pool - container [target] = {source, ["offset"] = 1} - --> add the source to source cache - if (not source_cache [source]) then - source_cache [source] = {source, name, flags} - end - else - --> is already on the pool - for i = 1, #target_buffs do - if (target_buffs [i] == source) then - --target_buffs.offset = i - return - end - end - target_buffs [#target_buffs+1] = source - --target_buffs.offset = #target_buffs - end - else - local target_buffs = container [target] - if (target_buffs) then - for i = 1, #target_buffs do - if (target_buffs [i] == source) then - tremove (target_buffs, i) - if (#target_buffs == 0) then - --> drop the table - container [target] = nil - else - --> if the target was the last index, the offset is nil - if (not target_buffs [i]) then - target_buffs.offset = target_buffs.offset - 1 - end - end - return - end - end - end - end - end - - function _detalhes:HandleSlashUnbuff (shaman_slash, who_serial, alvo_serial) - --local container, who_serial, alvo_serial = unpack (data) --- print ("slash unbuff:", shaman_slash, who_serial, alvo_serial) - parser:Handle3rdPartyBuff (shaman_slash, who_serial, alvo_serial) - shaman_slash_timers [who_serial] [alvo_serial] = nil - end local token_list = { -- neutral @@ -4129,10 +3935,6 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1 _detalhes.encounter_table.index = boss_index end - if (not _detalhes.MythicPlus.Started or (_detalhes.MythicPlus.Started and not _in_combat)) then - parser:Handle3rdPartyBuffs_OnEncounterStart() - end - end function _detalhes.parser_functions:ENCOUNTER_END (...)