- removed warlords of draenor dungeon info plugin.
- removed hellfire citadel raid info plugin.
- remove calc leech plugin.
- added emerald nightmare raid info plugin.
- added the nighthold raid info plugin.

hotfixes:
- fix for total bar where sometimes it desappears.
- fix for overall data reseting its elapsed time making dps and hps goes to millions.
- fix for overall not reseting when entering in a new dungeon.
- fix for trash cleanup on dungeons.
- fix for item level detection on dungeons.
- fix for artifact offhand always being counter as 750 item level.
- fix for segments menu sometimes not opening at all after a dungeon boss.
- fix for segments menu not showing the boss icon above the sub panel.
- fix for the top left corner of the window be ignoring the 'hide icon' setting at a /reload.
This commit is contained in:
Tercio
2016-09-13 14:12:47 -03:00
parent 04d2206505
commit f67e310133
24 changed files with 342 additions and 1076 deletions
@@ -1,196 +0,0 @@
do
local Details = Details
if (not Details) then
print ("Calc Leech cannot be installed: Details! not found.")
return
end
local _
--> minimal details version required to run this plugin
local MINIMAL_DETAILS_VERSION_REQUIRED = 81
local CLEECH_VERSION = "v1.2"
--> create a plugin object
local calcLeech = Details:NewPluginObject ("Details_CalcLeech", DETAILSPLUGIN_ALWAYSENABLED)
--> just localizing here the plugin's main frame
local frame = calcLeech.Frame
--> set the description
calcLeech:SetPluginDescription ("Calculates the healing done by the trinket leech.")
--> get the framework object
local framework = calcLeech:GetFramework()
local CUSTOM_DISPLAY_VERSION = 3
local CUSTOM_DISPLAY_NAME = "CalcLeech"
local create_custom_object = function()
local new_object = {
name = CUSTOM_DISPLAY_NAME,
icon = [[Interface\ICONS\spell_shadow_lifedrain02]],
attribute = false,
spellid = false,
author = "Details!",
desc = "Calculates healing done from leech trinket.",
source = false,
target = false,
script_version = CUSTOM_DISPLAY_VERSION,
script = [[
--get the parameters passed
local Combat, CustomContainer, Instance = ...
--declade the values to return
local total, top, amount = 0, 0, 0
if (Combat.PlayerLeechTrinket) then
for playerName, amount in pairs (Combat.PlayerLeechTrinket) do
local healActor = Combat:GetActor (2, playerName)
if (healActor) then
CustomContainer:AddValue (healActor, amount)
end
end
end
--if not managed inside the loop, get the values of total, top and amount
total, top = CustomContainer:GetTotalAndHighestValue()
amount = CustomContainer:GetNumActors()
--return the values
return total, top, amount
]],
tooltip = [[
]],
}
calcLeech:InstallCustomObject (new_object)
end
local rosterLeechAmount = {}
local f = CreateFrame ("frame")
f:SetScript ("OnEvent", function (self, event, time, token, hidding, who_serial, who_name, who_flags, who_flags2, target_serial, target_name, target_flags, target_flags2, spellid, spellname, spelltype, amount, overhealing, absorbed, critical, multistrike, is_shield)
if (token == "SPELL_HEAL" and spellid == 143924) then --http://www.wowhead.com/spell=143924/leech
--> The next few lines of code is based on an aura for WeakAuras 2, I couldn't find who is the original author since this same code is used on many different versions of the aura.
--> If you are the original author, please contact-me on curseforge so I can add the credits here.
local healed = amount - overhealing
if (healed > 0) then
wipe (rosterLeechAmount)
local total_leech = 0
for i = 1, 40 do
local name, _, _, _, _, _, _, source, _, _, id, _, _, _, _, _, leech = UnitAura (target_name, i)
if (type (leech) == "number") then
if (name and id == 184671 and source) then
rosterLeechAmount [UnitName (source)] = leech
total_leech = total_leech + leech
end
end
end
if (total_leech > 0) then
for from, leech_amount in pairs (rosterLeechAmount) do
if (not calcLeech.combat.PlayerLeechTrinket [from]) then
calcLeech.combat.PlayerLeechTrinket [from] = 0
end
calcLeech.combat.PlayerLeechTrinket [from] = calcLeech.combat.PlayerLeechTrinket [from] + (healed * (leech_amount / total_leech))
end
end
end
-------------
--elseif (token == "SPELL_AURA_APPLIED") then
--elseif (token == "SPELL_AURA_REMOVED") then
--elseif (token == "SPELL_AURA_REFRESH") then
end
end)
--> when receiving an event from details, handle it here
local player_has_trinket = function (combat)
calcLeech.combat = combat
--> check if exists a custom display to show the trinket leech
local customObject = calcLeech:GetCustomObject (CUSTOM_DISPLAY_NAME)
if (customObject) then
if (customObject.script_version < CUSTOM_DISPLAY_VERSION) then
calcLeech:RemoveCustomObject (CUSTOM_DISPLAY_NAME)
create_custom_object()
end
else
create_custom_object()
end
calcLeech.combat.PlayerLeechTrinket = {}
f:RegisterEvent ("COMBAT_LOG_EVENT_UNFILTERED")
end
local handle_details_event = function (event, ...)
if (event == "COMBAT_PLAYER_ENTER") then
if (true) then
player_has_trinket (...)
else
local role = UnitGroupRolesAssigned ("player")
if (role == "HEALER") then
local trinket1 = GetInventoryItemLink ("player", 13)
if (trinket1 and trinket1:find ("124234")) then
player_has_trinket (...)
end
local trinket2 = GetInventoryItemLink ("player", 14)
if (trinket2 and trinket2:find ("124234")) then
player_has_trinket (...)
end
end
end
elseif (event == "COMBAT_PLAYER_LEAVE") then
--> details finished a segment
f:UnregisterEvent ("COMBAT_LOG_EVENT_UNFILTERED")
elseif (event == "PLUGIN_DISABLED") then
--> plugin has been disabled at the details options panel
elseif (event == "PLUGIN_ENABLED") then
--> plugin has been enabled at the details options panel
end
end
function calcLeech:OnEvent (_, event, ...)
if (event == "ADDON_LOADED") then
local AddonName = select (1, ...)
if (AddonName == "Details_CalcLeech") then
--> every plugin must have a OnDetailsEvent function
function calcLeech:OnDetailsEvent (event, ...)
return handle_details_event (event, ...)
end
--> Install: install -> if successful installed; saveddata -> a table saved inside details db, used to save small amount of data like configs
local install, saveddata = Details:InstallPlugin ("TOOLBAR", "Leech Trinket", "Interface\\Icons\\spell_shadow_lifedrain02", calcLeech, "DETAILS_PLUGIN_LEECH_TRINKET", MINIMAL_DETAILS_VERSION_REQUIRED, "Details! Team", CLEECH_VERSION)
if (type (install) == "table" and install.error) then
print (install.error)
end
--> registering details events we need
Details:RegisterEvent (calcLeech, "COMBAT_PLAYER_ENTER") --when details creates a new segment, not necessary the player entering in combat.
Details:RegisterEvent (calcLeech, "COMBAT_PLAYER_LEAVE") --when details finishs a segment, not necessary the player leaving the combat.
end
end
end
end
@@ -1,6 +0,0 @@
## Interface: 70000
## Title: Details Calc Leech
## Notes: Plugin for Details
## RequiredDeps: Details
Details_CalcLeech.lua
@@ -1,394 +0,0 @@
--Auchindoun
--Bloodmaul Slag Mines
--The Everbloom
--GrimrailDepot
--IronDocks
--ShadowmoonBurialGrounds
--Skyreach
--UpperBlackrockSpire
local Auchindoun = {
id = 1182, --mapid
ej_id = 547, --encounter journal id
name = "Auchindoun",
boss_names = {
"Vigilant Kaathar",
"Soulbinder Nyami",
"Azzakel",
"Teron'gor",
},
boss_ids = {
[86217] = 1, --Vigilant Kaathar
[75839] = 1, --Vigilant Kaathar
[86218] = 2, --Soulbinder Nyami
[76177] = 2, --Soulbinder Nyami
[86219] = 3, --Azzakel
[75927] = 3, --Azzakel
[86220] = 4, --Teron'gor
[77734] = 4, --Teron'gor
},
encounters = {
[1] = {
boss = "Vigilant Kaathar",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Auchindoun Defense Construct]],
},
[2] = {
boss = "Soulbinder Nyami",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Soulbinder Nyami]],
},
[3] = {
boss = "Azzakel",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Azzakel Vanguard Of The Legion]],
},
[4] = {
boss = "Teron'gor",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Terongor]],
},
},
}
_detalhes:InstallEncounter (Auchindoun)
local BloodmaulSlagMines = {
id = 1175, --mapid
ej_id = 385, --encounter journal id
name = "Bloodmaul Slag Mines",
boss_names = {
"Slave Watcher Crushto",
"Forgemaster Gog'duh",
"Roltall",
"Gug'rokk",
},
boss_ids = {
[86222] = 1, --Slave Watcher Crushto
[74787] = 1, --Slave Watcher Crushto
[74366] = 2, --Forgemaster Gog'duh
[86223] = 3, --Roltall
[75786] = 3, --Roltall
[86224] = 4, --Gug'rokk
[74790] = 4, --Gug'rokk
},
encounters = {
[1] = {
boss = "Slave Watcher Crushto",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Slave Watcher Crushto]],
},
[2] = {
boss = "Forgemaster Gog'duh",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Magmolatus]],
},
[3] = {
boss = "Roltall",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Roltall]],
},
[4] = {
boss = "Gug'rokk",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Gugrokk]],
},
},
}
_detalhes:InstallEncounter (BloodmaulSlagMines)
local TheEverbloom = {
id = 1279, --mapid
ej_id = 556, --encounter journal id
name = "The Everbloom",
boss_names = {
"Witherbark",
"Ancient Protectors",
"Xeri'tac",
"Archmage Sol",
"Yalnu",
},
boss_ids = {
[81522] = 1, --Witherbark
[86242] = 1, --Witherbark
[83894] = 2, --Ancient Protectors
[83893] = 2, --Ancient Protectors
[83892] = 2, --Ancient Protectors
[86244] = 2, --Ancient Protectors
[86247] = 3, --Xeri'tac
[86246] = 4, --Archmage Sol
[82682] = 4, --Archmage Sol
[86248] = 5, --Yalnu
[84336] = 5, --Yalnu
[83846] = 5, --Yalnu
},
encounters = {
[1] = {
boss = "Witherbark",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Witherbark]],
},
[2] = {
boss = "Ancient Protectors",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Dulhu]],
},
[3] = {
boss = "Xeri'tac",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Xeritac]],
},
[4] = {
boss = "Archmage Sol",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Archmage Sol]],
},
[5] = {
boss = "Yalnu",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Yalnu]],
},
},
}
_detalhes:InstallEncounter (TheEverbloom)
local GrimrailDepot = {
id = 1208, --mapid
ej_id = 536, --encounter journal id
name = "Grimrail Depot",
boss_names = {
"Rocketspark and Borka",
"Nitrogg Thundertower",
"Skylord Tovra",
},
boss_ids = {
[86225] = 1, --Rocketspark and Borka
[86226] = 1, --Rocketspark and Borka
[79548] = 1, --Rocketspark and Borka
[77816] = 1, --Rocketspark and Borka
[86227] = 2, --Nitrogg Thundertower
[79545] = 2, --Nitrogg Thundertower
[86228] = 3, --Skylord Tovra
[80005] = 3, --Skylord Tovra
},
encounters = {
[1] = {
boss = "Rocketspark and Borka",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Pauli Rocketspark]],
},
[2] = {
boss = "Nitrogg Thundertower",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Blackrock Assault Commander]],
},
[3] = {
boss = "Skylord Tovra",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Thunderlord General]],
},
},
}
_detalhes:InstallEncounter (GrimrailDepot)
local IronDocks = {
id = 1195, --mapid
ej_id = 558, --encounter journal id
name = "Iron Docks",
boss_names = {
"Fleshrender Nok'gar",
"Ahri'ok Dugru",
"Oshir",
"Skulloc",
},
boss_ids = {
[81297] = 1, --Dreadfang
[81305] = 1, --Fleshrender Nok'gar
[87451] = 1, --Fleshrender Nok'gar
[87452] = 2, --Ahri'ok Dugru
[86231] = 2, --Makogg Emberblade
[80808] = 2, --Neesa Nox
[86232] = 3, --Oshir
[79852] = 3, --Oshir
[86233] = 4, --Skulloc
[83612] = 4, --Skulloc
[83616] = 4, --Skulloc
},
encounters = {
[1] = {
boss = "Fleshrender Nok'gar",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Warsong Battlemaster]],
},
[2] = {
boss = "Ahri'ok Dugru",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Blood Shaman]],
},
[3] = {
boss = "Oshir",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Oshir]],
},
[4] = {
boss = "Skulloc",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Skulloc]],
},
},
}
_detalhes:InstallEncounter (IronDocks)
local ShadowmoonBurialGrounds = {
id = 1176, --mapid
ej_id = 537, --encounter journal id
name = "Shadowmoon Burial Grounds",
boss_names = {
"Sadana Bloodfury",
"Bonemaw",
"Ner'zhul",
"Nhallish",
},
boss_ids = {
[86234] = 1, --Sadana Bloodfury
[75509] = 1, --Sadana Bloodfury
[86236] = 2, --Bonemaw
[75452] = 2, --Bonemaw
[76268] = 3, --Ner'zhul
[76407] = 3, --Ner'zhul
[75829] = 4, --Nhallish
},
encounters = {
[1] = {
boss = "Sadana Bloodfury",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Sadana Bloodfury]],
},
[2] = {
boss = "Bonemaw",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Bonemaw]],
},
[3] = {
boss = "Ner'zhul",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Nerzhul]],
},
[4] = {
boss = "Nhallish",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Nhallish Feaster of Souls]],
},
},
}
_detalhes:InstallEncounter (ShadowmoonBurialGrounds)
local Skyreach = {
id = 1209, --mapid
ej_id = 476, --encounter journal id
name = "Skyreach",
boss_names = {
"Ranjit",
"Araknath",
"Rukhran",
"High Sage Viryx",
},
boss_ids = {
[86238] = 1, --Ranjit
[75964] = 1, --Ranjit
[86239] = 2, --Araknath
[76141] = 2, --Araknath
[76379] = 3, --Rukhran
[76143] = 3, --Rukhran
[86241] = 4, --High Sage Viryx
[76266] = 4, --High Sage Viryx
},
encounters = {
[1] = {
boss = "Ranjit",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Ranjit]],
},
[2] = {
boss = "Araknath",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Araknath]],
},
[3] = {
boss = "Rukhran",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Rukhran]],
},
[4] = {
boss = "High Sage Viryx",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-High Sage Viryx]],
},
},
}
_detalhes:InstallEncounter (Skyreach)
local UpperBlackrockSpire = {
id = 1358, --mapid
ej_id = 559, --encounter journal id
name = "Upper Blackrock Spire",
boss_names = {
"Orebender Gor'ashan",
"Kyrak",
"Commander Tharbek",
"Ragewing the Untamed",
"Warlord Zaela",
"The Lanticore",
},
boss_ids = {
[86249] = 1, --Orebender Gor'ashan
[76413] = 1, --Orebender Gor'ashan
[86250] = 2, --Kyrak
[76021] = 2, --Kyrak
[86251] = 3, --Commander Tharbek
[79912] = 3, --Commander Tharbek
[76585] = 4, --Ragewing the Untamed
[77120] = 5, --Warlord Zaela
[77081] = 6, --The Lanticore
},
encounters = {
[1] = {
boss = "Orebender Gor'ashan",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Orebender Gorashan]],
},
[2] = {
boss = "Kyrak",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Kyrak]],
},
[3] = {
boss = "Commander Tharbek",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Ironmarch Commander Tharbek]],
},
[4] = {
boss = "Ragewing the Untamed",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Ragewing the Untamed]],
},
[5] = {
boss = "Warlord Zaela",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Warlord Zaela]],
},
[6] = {
boss = "The Lanticore",
portrait = [[Interface\EncounterJournal\UI-EJ-BOSS-Warlord Zaela]],
},
},
}
_detalhes:InstallEncounter (UpperBlackrockSpire)
@@ -1,6 +0,0 @@
## Interface: 70000
## Title: Details: Warlords of Draenor Dungeons
## Notes: Plugin for Details
## RequiredDeps: Details
Details_DungeonInfo-Warlords.lua
@@ -1,399 +0,0 @@
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)
@@ -1,6 +0,0 @@
## Interface: 70000
## Title: Details: Hellfire Citadel
## Notes: Plugin for Details
## RequiredDeps: Details
Details_RaidInfo-HellfireCitadel.lua