do function Details:InstallHellfireCitadelEncounter() --load encounter journal if (not EJ_GetEncounterInfoByIndex (1, 669)) then EJ_SelectInstance (669) end EJ_SelectInstance (669) local InstanceName = EJ_GetInstanceInfo (669) local boss_1_name = EJ_GetEncounterInfoByIndex (1, 669) local boss_2_name = EJ_GetEncounterInfoByIndex (2, 669) local boss_3_name = EJ_GetEncounterInfoByIndex (3, 669) local boss_4_name = EJ_GetEncounterInfoByIndex (4, 669) local boss_5_name = EJ_GetEncounterInfoByIndex (5, 669) local boss_6_name = EJ_GetEncounterInfoByIndex (6, 669) local boss_7_name = EJ_GetEncounterInfoByIndex (7, 669) local boss_8_name = EJ_GetEncounterInfoByIndex (8, 669) local boss_9_name = EJ_GetEncounterInfoByIndex (9, 669) local boss_10_name = EJ_GetEncounterInfoByIndex (10, 669) local boss_11_name = EJ_GetEncounterInfoByIndex (11, 669) local boss_12_name = EJ_GetEncounterInfoByIndex (12, 669) local boss_13_name = EJ_GetEncounterInfoByIndex (13, 669) _detalhes:InstallEncounter ({ id = 1448, --map id ej_id = 669, --encounter journal id name = InstanceName, icons = [[Interface\AddOns\Details_RaidInfo-HellfireCitadel\boss_faces]], icon = [[Interface\AddOns\Details_RaidInfo-HellfireCitadel\icon256x128]], is_raid = true, backgroundFile = {file = [[Interface\Glues\LOADINGSCREENS\LoadScreen_HellfireRaid]], coords = {0, 1, 296/1024, 880/1024}}, backgroundEJ = [[Interface\EncounterJournal\UI-EJ-LOREBG-HellfireRaid]], -- boss_names = { boss_1_name, --"Hellfire Assault" boss_2_name, --"Iron Reaver" boss_3_name, --"Kormrok" boss_4_name, --"Hellfire High Council" boss_5_name, --"Kilrogg Deadeye" boss_6_name, --"Gorefiend" boss_7_name, --"Shadow-Lord Iskar" boss_8_name, --"Socrethar the Eternal" boss_9_name, --"Fel Lord Zakuun" boss_10_name, --"Xhul'horac" boss_11_name, --"Tyrant Velhari" boss_12_name, --"Mannoroth" boss_13_name, --"Archimonde" }, encounter_ids = { --encounter journal encounter id 1426,1425,1392,1432,1396,1372,1433,1427,1391,1447,1394,1395,1438, [1426] = 1, [1425] = 2, [1392] = 3, [1432] = 4, [1396] = 5, [1372] = 6, [1433] = 7, [1427] = 8, [1391] = 9, [1447] = 10, [1394] = 11, [1395] = 12, [1438] = 13, }, encounter_ids2 = { --combatlog encounter id [1778] = 1, --"Hellfire Assault" [1785] = 2, --"Iron Reaver" [1787] = 3, --"Kormrok" [1798] = 4, --"Hellfire High Council" [1786] = 5, --"Kilrogg Deadeye" [1783] = 6, --"Gorefiend" [1788] = 7, --"Shadow-Lord Iskar" [1794] = 8, --"Socrethar the Eternal" [1777] = 9, --"Fel Lord Zakuun" [1800] = 10, --"Xhul'horac" [1784] = 11, --"Tyrant Velhari" [1795] = 12, --"Mannoroth" [1799] = 13, --"Archimonde" }, boss_ids = { --npc ids }, encounters = { [1] = { boss = boss_1_name, --"Hellfire Assault" portrait = [[Interface\ENCOUNTERJOURNAL\ui-ej-boss-hellfireassault]], }, [2] = { boss = boss_2_name, --"Iron Reaver", portrait = [[Interface\ENCOUNTERJOURNAL\ui-ej-boss-felreaver]], }, [3] = { boss = boss_3_name, --"Kormrok", portrait = [[Interface\ENCOUNTERJOURNAL\ui-ej-boss-kormok]], }, [4] = { boss = boss_4_name, --"Hellfire High Council", portrait = [[Interface\ENCOUNTERJOURNAL\ui-ej-boss-gurtoggbloodboil]], }, [5] = { boss = boss_5_name, --"Kilrogg Deadeye", portrait = [[Interface\ENCOUNTERJOURNAL\ui-ej-boss-kilroggdeadeye]], }, [6] = { boss = boss_6_name, --"Gorefiend", portrait = [[Interface\ENCOUNTERJOURNAL\ui-ej-boss-gorefiend]], }, [7] = { boss = boss_7_name, --"Shadow-Lord Iskar", portrait = [[Interface\ENCOUNTERJOURNAL\ui-ej-boss-shadowlordiskar]], }, [8] = { boss = boss_8_name, --"Socrethar the Eternal", portrait = [[Interface\ENCOUNTERJOURNAL\ui-ej-boss-soulboundconstruct]], }, [9] = { boss = boss_9_name, --"Fel Lord Zakuun", portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-FelLordZakuun]], }, [10] = { boss = boss_10_name, --"Xhul'horac", portrait = [[Interface\ENCOUNTERJOURNAL\ui-ej-boss-xhulhorac]], }, [11] = { boss = boss_11_name, --"Tyrant Velhari", portrait = [[Interface\ENCOUNTERJOURNAL\ui-ej-boss-tyrantvelhari]], }, [12] = { boss = boss_12_name, --"Mannoroth", portrait = [[Interface\ENCOUNTERJOURNAL\ui-ej-boss-mannorothwod]], }, [13] = { boss = boss_13_name, --"Archimonde", portrait = [[Interface\ENCOUNTERJOURNAL\ui-ej-boss-archimondewod]], }, }, }) Details.InstallHellfireCitadelEncounter = nil end Details:ScheduleTimer ("InstallHellfireCitadelEncounter", 2) end --> replacement for healing function: local Details = Details local _bit_band = bit.band local OBJECT_TYPE_PETS = 0x00003000 local REACTION_FRIENDLY = 0x00000010 local OBJECT_TYPE_ENEMY = 0x00000040 local UnitDebuff = UnitDebuff local ptime = time local Aura_of_Contempt = GetSpellInfo (179987) if (not Aura_of_Contempt) then return Detais:Msg ("Fail to get Aura of Contempt spellname from spell 179987.") end local function parser_heal (_, token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype, amount, overhealing, absorbed, critical, multistrike, is_shield) ----------------------------------------------------------------------------------------------- --> early checks and fixes --> only capture heal if is in combat if (not Details.in_combat) then return end --> check invalid serial against pets if (who_serial == "") then if (who_flags and _bit_band (who_flags, OBJECT_TYPE_PETS) ~= 0) then --> é um pet return end end --> no name, use spellname if (not who_name) then who_name = "[*] "..spellname end --> no target, just ignore if (not alvo_name) then return end --> spirit link toten if (spellid == 98021) then return Details.parser:SLT_healing (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, spellid, spellname, spelltype, amount, overhealing, absorbed, critical, multistrike, is_shield) end local cura_efetiva local aura_of_contempt_overheal overhealing = overhealing or 0 amount = amount or 0 absorbed = absorbed or 0 if (is_shield) then cura_efetiva = amount else if (UnitDebuff (alvo_name, Aura_of_Contempt)) then cura_efetiva = amount aura_of_contempt_overheal = absorbed cura_efetiva = cura_efetiva - overhealing overhealing = overhealing + absorbed else cura_efetiva = absorbed cura_efetiva = cura_efetiva + amount - overhealing end end Details.tabela_vigente[2].need_refresh = true ------------------------------------------------------------------------------------------------ --> get actors local este_jogador, meu_dono, who_name = Details.tabela_vigente[2]:PegarCombatente (who_serial, who_name, who_flags, true) local jogador_alvo, alvo_dono, alvo_name = Details.tabela_vigente[2]:PegarCombatente (alvo_serial, alvo_name, alvo_flags, true) este_jogador.last_event = ptime() ------------------------------------------------------------------------------------------------ --> an enemy healing enemy or an player actor healing a enemy if (_bit_band (alvo_flags, REACTION_FRIENDLY) == 0 and not _detalhes.is_in_arena) then if (not este_jogador.heal_enemy [spellid]) then este_jogador.heal_enemy [spellid] = cura_efetiva else este_jogador.heal_enemy [spellid] = este_jogador.heal_enemy [spellid] + cura_efetiva end este_jogador.heal_enemy_amt = este_jogador.heal_enemy_amt + cura_efetiva return end ------------------------------------------------------------------------------------------------ --> group checks if (este_jogador.grupo) then Details.tabela_vigente.totals_grupo [2] = Details.tabela_vigente.totals_grupo [2] + cura_efetiva end if (jogador_alvo.grupo) then local t = Details.tabela_vigente.player_last_events [alvo_name] if (not t) then t = Details.tabela_vigente:CreateLastEventsTable (alvo_name) end local i = t.n local this_event = t [i] this_event [1] = false --> true if this is a damage || false for healing this_event [2] = spellid --> spellid || false if this is a battle ress line this_event [3] = amount --> amount of damage or healing this_event [4] = time --> parser time this_event [5] = UnitHealth (alvo_name) --> current unit heal this_event [6] = who_name --> source name this_event [7] = is_shield this_event [8] = absorbed i = i + 1 if (i == Details.deadlog_events+1) then t.n = 1 else t.n = i end end ------------------------------------------------------------------------------------------------ --> timer if (not este_jogador.iniciar_hps) then este_jogador:Iniciar (true) --inicia o hps do jogador if (meu_dono and not meu_dono.iniciar_hps) then meu_dono:Iniciar (true) if (meu_dono.end_time) then meu_dono.end_time = nil else meu_dono.start_time = ptime() end end if (este_jogador.end_time) then --> o combate terminou, reabrir o tempo este_jogador.end_time = nil else este_jogador.start_time = ptime() end end ------------------------------------------------------------------------------------------------ --> add amount --> actor target if (cura_efetiva > 0) then --> combat total Details.tabela_vigente.totals [2] = Details.tabela_vigente.totals [2] + cura_efetiva --> actor healing amount este_jogador.total = este_jogador.total + cura_efetiva este_jogador.total_without_pet = este_jogador.total_without_pet + cura_efetiva if (aura_of_contempt_overheal) then este_jogador.aura_of_contempt_overheal = (este_jogador.aura_of_contempt_overheal or 0) + aura_of_contempt_overheal end --> healing taken jogador_alvo.healing_taken = jogador_alvo.healing_taken + cura_efetiva --> adiciona o dano tomado if (not jogador_alvo.healing_from [who_name]) then --> adiciona a pool de dano tomado de quem jogador_alvo.healing_from [who_name] = true end if (is_shield) then este_jogador.totalabsorb = este_jogador.totalabsorb + cura_efetiva este_jogador.targets_absorbs [alvo_name] = (este_jogador.targets_absorbs [alvo_name] or 0) + cura_efetiva end --> pet if (meu_dono) then meu_dono.total = meu_dono.total + cura_efetiva --> heal do pet meu_dono.targets [alvo_name] = (meu_dono.targets [alvo_name] or 0) + amount end --> target amount este_jogador.targets [alvo_name] = (este_jogador.targets [alvo_name] or 0) + amount end if (meu_dono) then meu_dono.last_event = ptime() end if (overhealing > 0) then este_jogador.totalover = este_jogador.totalover + overhealing este_jogador.targets_overheal [alvo_name] = (este_jogador.targets_overheal [alvo_name] or 0) + overhealing if (meu_dono) then meu_dono.totalover = meu_dono.totalover + overhealing end end --> actor spells table local spell = este_jogador.spells._ActorTable [spellid] if (not spell) then spell = este_jogador.spells:PegaHabilidade (spellid, true, token) if (is_shield) then spell.is_shield = true end if (Details.tabela_vigente.is_boss and who_flags and _bit_band (who_flags, OBJECT_TYPE_ENEMY) ~= 0) then _detalhes.spell_school_cache [spellname] = spelltype or school end end if (is_shield) then --return spell:Add (alvo_serial, alvo_name, alvo_flags, cura_efetiva, who_name, 0, nil, overhealing, true) return _detalhes.habilidade_cura.Add (spell, alvo_serial, alvo_name, alvo_flags, cura_efetiva, who_name, 0, nil, overhealing, true, multistrike) else --return spell:Add (alvo_serial, alvo_name, alvo_flags, cura_efetiva, who_name, absorbed, critical, overhealing) return _detalhes.habilidade_cura.Add (spell, alvo_serial, alvo_name, alvo_flags, cura_efetiva, who_name, absorbed, critical, overhealing, nil, multistrike) end end local listener = CreateFrame ("frame") listener:RegisterEvent ("ENCOUNTER_START") listener:RegisterEvent ("ENCOUNTER_END") listener:SetScript ("OnEvent", function (self, event, ...) local encounterID, encounterName, difficultyID, raidSize, endStatus = select (1, ...) -- if (encounterID == 1721) then --kargath for testing if (encounterID == 1784) then--"Tyrant Velhari" if (event == "ENCOUNTER_START") then --> replacing the healing done func --Details.parser:SetParserFunction ("heal", parser_heal) else --> restoring the func --Details.parser:SetParserFunction ("heal", nil) end end end)