- ToC Update.

- Added support for custom parser functions.
- Added support for Hellfire Citadel raid.
- Tyrant Velhari now has a custom parser function to calculate the healing done.
- Removed Blackrock Foundry raid info.
- Removed Highmaul raid info.
This commit is contained in:
Tercio
2015-06-23 14:56:17 -03:00
parent 7a3d822a8e
commit 89213e7808
32 changed files with 621 additions and 491 deletions
+1 -2
View File
@@ -6,8 +6,7 @@ move-folders:
Details/plugins/Details_TimeAttack: Details_TimeAttack
Details/plugins/Details_TinyThreat: Details_TinyThreat
Details/plugins/Details_Vanguard: Details_Vanguard
Details/plugins/Details_RaidInfo-BlackrockFoundry: Details_RaidInfo-BlackrockFoundry
Details/plugins/Details_RaidInfo-Highmaul: Details_RaidInfo-Highmaul
Details/plugins/Details_RaidInfo-HellfireCitadel: Details_RaidInfo-HellfireCitadel
Details/plugins/Details_DataStorage: Details_DataStorage
Details/plugins/Details_DungeonInfo-Warlords: Details_DungeonInfo-Warlords
Details/plugins/Details_3DModelsPaths: Details_3DModelsPaths
+18 -6
View File
@@ -35,22 +35,22 @@ return a new numeric table with sorted in decreasing order:
Raid History
=======================================
_detalhes.storage:OpenRaidStorage()
Details.storage:OpenRaidStorage()
get the table containing all stored data.
_detalhes.storage:ListDiffs()
Details.storage:ListDiffs()
return a indexed table with dificulty numbers.
_detalhes.storage:ListEncounters (diff)
Details.storage:ListEncounters (diff)
return a indexed table with all encounters stored for the dificulty.
_detalhes.storage:GetEncounterData (diff, encounterId, guildname)
Details.storage:GetEncounterData (diff, encounterId, guildname)
return a indexed table with encounter tables playd by the guild.
_detalhes.storage:GetPlayerData (diff, encounterId, playername)
Details.storage:GetPlayerData (diff, encounterId, playername)
return a indexed table with player tables for the player.
_detalhes.storage:GetBestFromPlayer (diff, encounterId, role, playername)
Details.storage:GetBestFromPlayer (diff, encounterId, role, playername)
return the best result from the player.
Structure:
@@ -71,3 +71,15 @@ DB = hash{
encounter table = hash {["time"] = time(), ["guild"] = guild name, ["date"] = formated date, ["healing"] = {[playername] = playertable}, ["elapsed"] = combat time, ["damage"] = {[playername] = playertable}}
player table = indexed {total done, item level, class index}
=======================================
Parser
=======================================
/dump Details.parser.original_functions
will tell all internal tokens used by the parser.
Details.parser:SetParserFunction (token, func)
replaces a original parser function with a customized one.
If no function passed, it uses the default function.
+26 -9
View File
@@ -150,6 +150,12 @@ no_save = boolean, if true, the values isn't set on the instance config table.
instance:ShowSideBars() // instance:HideSideBars()
Show or Hide the borders.
instance:CreatePositionTable()
Create a table with members: w, h, scale, point, x_legacy, y_legacy.
instance:RestorePositionFromPositionTable (pos_table)
Restore the window position from a saved position table.
--------------------
instance:InstanceMsg (text, icon, textcolor, iconcoords, iconcolor)
@@ -171,17 +177,17 @@ clickfunc = table {function, param1, param2, "left" or "right" button}
--------------------
_detalhes:SetTooltipBackdrop (border_texture, border_size, border_color)
Details:SetTooltipBackdrop (border_texture, border_size, border_color)
border_texture = string, border name for SharedMedia.
border_size = number, border size.
border_color = table {r, g, b, a}
_detalhes:ReportSingleLine (instance, row object)
Details:ReportSingleLine (instance, row object)
get the text on the chosen row and open report dialog for the player.
--------------------
framework = _detalhes:GetFramework()
framework = Details:GetFramework()
returns the framework object.
framework:RegisterForDetailsMove (frame, instance)
@@ -203,20 +209,31 @@ set on off bar animations on all windows, if nosave is true, it won't save this
--------------------
_detalhes:OpenForge()
Details.chat_embed:SetTabSettings (tab_name, is_enabled, is_single)
set the tab embed stuff.
Details.chat_embed:CheckChatEmbed()
refresh the embed status.
Details.chat_embed:GetTab (tabname)
returns the ChatFrame, ChatFrameTab, ChatFrameBackground, TabIndex, of the tab.
--------------------
Details:OpenForge()
Open Forge Window.
_detalhes:OpenRaidHistoryWindow()
Details:OpenRaidHistoryWindow()
Open Raid History Window.
_detalhes.switch:ShowMe (instance object)
Details.switch:ShowMe (instance object)
Open the bookmark panel on the top of the desired window.
_detalhes.switch:CloseMe()
Details.switch:CloseMe()
Closes the bookmark panel.
_detalhes:GetArenaInfo (mapid)
Details:GetArenaInfo (mapid)
returns a table containing the texture file and coords for a arena.
_detalhes:GetBattlegroundInfo (mapid)
Details:GetBattlegroundInfo (mapid)
returns a table containing the texture file and coords for a battleground.
+1 -1
View File
@@ -1,4 +1,4 @@
## Interface: 60100
## Interface: 60200
## Title: Details
## Notes: Computes detailed infos about combats.
## SavedVariables: _detalhes_global
+3 -19
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -632,7 +632,7 @@
end
function _detalhes:GetPlayersInArena()
local aliados = GetNumGroupMembers (LE_PARTY_CATEGORY_HOME)
local aliados = GetNumGroupMembers() -- LE_PARTY_CATEGORY_HOME
for i = 1, aliados-1 do
local role = UnitGroupRolesAssigned ("party" .. i)
if (role ~= "NONE") then
+38
View File
@@ -73,6 +73,26 @@ end
end
if (is_enabled) then
--> was disabled, so we need to save the current window positions.
if (not current_enabled_state) then
local window1 = _detalhes:GetInstance (1)
if (window1) then
window1:SaveMainWindowPosition()
if (window1.libwindow) then
local pos = window1:CreatePositionTable()
_detalhes.chat_tab_embed.w1_pos = pos
end
end
local window2 = _detalhes:GetInstance (2)
if (window2) then
window2:SaveMainWindowPosition()
if (window2.libwindow) then
local pos = window2:CreatePositionTable()
_detalhes.chat_tab_embed.w2_pos = pos
end
end
end
--> need to make the embed
_detalhes.chat_embed:DoEmbed()
else
@@ -224,6 +244,12 @@ end
window2.baseframe:SetPoint ("center", UIParent, "center", 200, 0)
window2.rowframe:SetPoint ("center", UIParent, "center", 200, 0)
window2:LockInstance (false)
window2:SaveMainWindowPosition()
local previous_pos = _detalhes.chat_tab_embed.w2_pos
if (previous_pos) then
window2:RestorePositionFromPositionTable (previous_pos)
end
return
end
@@ -233,6 +259,12 @@ end
window1.baseframe:SetPoint ("center", UIParent, "center")
window1.rowframe:SetPoint ("center", UIParent, "center")
window1:LockInstance (false)
window1:SaveMainWindowPosition()
local previous_pos = _detalhes.chat_tab_embed.w1_pos
if (previous_pos) then
window1:RestorePositionFromPositionTable (previous_pos)
end
if (not _detalhes.chat_tab_embed.single_window and window2) then
window2.baseframe:ClearAllPoints()
@@ -241,6 +273,12 @@ end
window2.baseframe:SetPoint ("center", UIParent, "center", 200, 0)
window2.rowframe:SetPoint ("center", UIParent, "center", 200, 0)
window2:LockInstance (false)
window2:SaveMainWindowPosition()
local previous_pos = _detalhes.chat_tab_embed.w2_pos
if (previous_pos) then
window2:RestorePositionFromPositionTable (previous_pos)
end
end
end
+85 -3
View File
@@ -308,10 +308,10 @@
amount = absorbed + (amount or 0)
end
if (este_jogador.grupo) then
if (este_jogador.grupo and not este_jogador.arena_enemy) then --> source = friendly player
_current_gtotal [1] = _current_gtotal [1]+amount
elseif (jogador_alvo.grupo) then
elseif (jogador_alvo.grupo) then --> source = arena enemy or friendly player
--> record avoidance only for tank actors
if (tanks_members_cache [alvo_serial]) then --> autoshot or melee hit
@@ -2868,10 +2868,92 @@
token_list ["UNIT_DESTROYED"] = parser.dead
end
end
parser.original_functions = {
["spell_dmg"] = parser.spell_dmg,
["swing"] = parser.swing,
["range"] = parser.range,
["rangemissed"] = parser.rangemissed,
["swingmissed"] = parser.swingmissed,
["missed"] = parser.missed,
["environment"] = parser.environment,
["heal"] = parser.heal,
["heal_absorb"] = parser.heal_absorb,
["buff"] = parser.buff,
["unbuff"] = parser.unbuff,
["buff_refresh"] = parser.buff_refresh,
["energize"] = parser.energize,
["spellcast"] = parser.spellcast,
["dispell"] = parser.dispell,
["break_cc"] = parser.break_cc,
["ress"] = parser.ress,
["interrupt"] = parser.interrupt,
["dead"] = parser.dead,
}
function parser:SetParserFunction (token, func)
if (parser.original_functions [token]) then
if (type (func) == "function") then
parser [token] = func
else
parser [token] = parser.original_functions [token]
end
parser:RefreshFunctions()
else
return _detalhes:Msg ("Invalid Token for SetParserFunction.")
end
end
local all_parser_tokens = {
["SPELL_PERIODIC_DAMAGE"] = "spell_dmg",
["SPELL_EXTRA_ATTACKS"] = "spell_dmg",
["SPELL_DAMAGE"] = "spell_dmg",
["SPELL_BUILDING_DAMAGE"] = "spell_dmg",
["SWING_DAMAGE"] = "swing",
["RANGE_DAMAGE"] = "range",
["DAMAGE_SHIELD"] = "spell_dmg",
["DAMAGE_SPLIT"] = "spell_dmg",
["RANGE_MISSED"] = "rangemissed",
["SWING_MISSED"] = "swingmissed",
["SPELL_MISSED"] = "missed",
["SPELL_PERIODIC_MISSED"] = "missed",
["SPELL_BUILDING_MISSED"] = "missed",
["DAMAGE_SHIELD_MISSED"] = "missed",
["ENVIRONMENTAL_DAMAGE"] = "environment",
["SPELL_HEAL"] = "heal",
["SPELL_PERIODIC_HEAL"] = "heal",
["SPELL_ABSORBED"] = "heal_absorb",
["SPELL_AURA_APPLIED"] = "buff",
["SPELL_AURA_REMOVED"] = "unbuff",
["SPELL_AURA_REFRESH"] = "buff_refresh",
["SPELL_ENERGIZE"] = "energize",
["SPELL_PERIODIC_ENERGIZE"] = "energize",
["SPELL_CAST_SUCCESS"] = "spellcast",
["SPELL_DISPEL"] = "dispell",
["SPELL_STOLEN"] = "dispell",
["SPELL_AURA_BROKEN"] = "break_cc",
["SPELL_AURA_BROKEN_SPELL"] = "break_cc",
["SPELL_RESURRECT"] = "ress",
["SPELL_INTERRUPT"] = "interrupt",
["UNIT_DIED"] = "dead",
["UNIT_DESTROYED"] = "dead",
}
function parser:RefreshFunctions()
for CLUE_ID, token in pairs (all_parser_tokens) do
if (token_list [CLUE_ID]) then --> not disabled
token_list [CLUE_ID] = parser [token]
end
end
end
-- PARSER
--serach key: ~parser ~event ~start ~inicio
--serach key: ~parser ~events ~start ~inicio
function _detalhes:GetZoneType()
return _detalhes.zone_type
end
+42
View File
@@ -496,6 +496,48 @@
self.baseframe:SetPoint ("CENTER", _UIParent, "CENTER", novo_x + x, novo_y + y)
self.baseframe.BoxBarrasAltura = self.baseframe:GetHeight() - end_window_spacement --> espaço para o final da janela
end
function _detalhes:CreatePositionTable()
local t = {pos_table = true}
if (self.libwindow) then
t.x = self.libwindow.x
t.y = self.libwindow.y
t.scale = self.libwindow.scale
t.point = self.libwindow.point
end
--> old way to save positions
t.x_legacy = self.posicao.normal.x
t.y_legacy = self.posicao.normal.y
--> size
t.w = self.posicao.normal.w
t.h = self.posicao.normal.h
return t
end
function _detalhes:RestorePositionFromPositionTable (t)
if (not t.pos_table) then
return
end
if (t.x) then
self.libwindow.x = t.x
self.libwindow.y = t.y
self.libwindow.scale = t.scale
self.libwindow.point = t.point
end
self.posicao.normal.x = t.x_legacy
self.posicao.normal.y = t.y_legacy
self.posicao.normal.w = t.w
self.posicao.normal.h = t.h
return self:RestoreMainWindowPosition()
end
function _detalhes:ResetaGump (instancia, tipo, segmento)
if (not instancia or _type (instancia) == "boolean") then
@@ -1,4 +1,4 @@
## Interface: 60100
## Interface: 60200
## Title: Details! 3D Model Viewer
## Notes: When the 3d models option is enabled, this tool is used to select which model will be used on the window's rows.
## DefaultState: Enabled
@@ -1,4 +1,4 @@
## Interface: 60100
## Interface: 60200
## Title: Details Storage
## Notes: Stores information for Details!
## DefaultState: Enabled
+1 -1
View File
@@ -1,4 +1,4 @@
## Interface: 60100
## Interface: 60200
## Title: Details Damage, the Game! (plugin)
## Notes: Plugin for Details
## RequiredDeps: Details
@@ -1,4 +1,4 @@
## Interface: 60100
## Interface: 60200
## Title: Details Dps Tuning (plugin)
## Notes: Plugin for Details
## RequiredDeps: Details
@@ -1,4 +1,4 @@
## Interface: 60100
## Interface: 60200
## Title: Details: Warlords of Draenor Dungeons
## Notes: Plugin for Details
## RequiredDeps: Details
@@ -1,4 +1,4 @@
## Interface: 60100
## Interface: 60200
## Title: Details Encounter (plugin)
## Notes: Plugin for Details
## RequiredDeps: Details
@@ -1,4 +1,4 @@
## Interface: 60100
## Interface: 60200
## Title: Details Raid Check (plugin)
## Notes: Show a icon on Details title bar showing flask, food, pre-pots.
## RequiredDeps: Details
@@ -1,277 +0,0 @@
local _detalhes = _G._detalhes
local blackrock_foundry = {
id = 1205, --994 = map id extracted from encounter journal
ej_id = 477, --encounter journal id
name = "Blackrock Foundry",
icons = [[Interface\AddOns\Details_RaidInfo-BlackrockFoundry\boss_faces]],
icon = [[Interface\AddOns\Details_RaidInfo-BlackrockFoundry\icon256x128]],
is_raid = true,
backgroundFile = {file = [[Interface\Glues\LOADINGSCREENS\LoadingScreen_BlackrockFoundry]], coords = {0, 1, 132/512, 439/512}},
backgroundEJ = [[Interface\EncounterJournal\UI-EJ-LOREBG-BlackrockFoundry]],
boss_names = {
--[[ 1 ]] "Gruul",
--[[ 2 ]] "Oregorger",
--[[ 3 ]] "Beastlord Darmac",
--[[ 4 ]] "Flamebender Ka'graz",
--[[ 5 ]] "Hans'gar and Franzok",
--[[ 6 ]] "Operator Thogar",
--[[ 7 ]] "The Blast Furnace",
--[[ 8 ]] "Kromog",
--[[ 9 ]] "The Iron Maidens",
--[[ 10 ]] "Blackhand",
},
encounter_ids = { --encounter journal encounter id
--> Ids by Index
1161, 1202, 1122, 1123, 1155, 1147, 1154, 1162, 1203, 959,
--> Boss Index
[1161] = 1,
[1202] = 2,
[1122] = 3,
[1123] = 4,
[1155] = 5,
[1147] = 6,
[1154] = 7,
[1162] = 8,
[1203] = 9,
[959] = 10,
},
encounter_ids2 = {
--combatlog encounter id
[1691] = 1, --Gruul
[1696] = 2, --Oregorger
[1694] = 3, --Beastlord Darmac
[1689] = 4, --Flamebender Ka'graz
[1693] = 5, --Hans'gar & Franzok
[1692] = 6, --Operator Thogar
[1690] = 7, --The Blast Furnace
[1713] = 8, --Kromog, Legend of the Mountain
[1695] = 9, --The Iron Maidens
[1704] = 10, --Blackhand
},
boss_ids = {
--npc ids
[76877] = 1, --Gruul
[77182] = 2, --Oregorger
[76865] = 3, --Beastlord Darmac
[76814] = 4, --Flamebender Ka'graz
[76974] = 5, --Franzok
[76973] = 5, --Hans'gar
[76906] = 6, --Operator Thogar
[76806] = 7, --Heart of the Mountain
[77692] = 8, --Kromog, Legend of the Mountain
[77557] = 9, -- Admiral Gar'an
[77231] = 9, --Enforcer Sorka
[77477] = 9, --Marak the Blooded
[77325] = 10, --Blackhand
},
encounters = {
[1] = {
boss = "Gruul",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Gruul]],
--> spell list
continuo = {
155080,
155301,
155530,
162322,
165983,
173190,
173192,
},
},
[2] = {
boss = "Oregorger",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Oregorger]],
--> spell list
continuo = {
155897,
155900,
156203,
156297,
156324,
156374,
156388,
156879,
165983,
173471,
},
},
[3] = {
boss = "Beastlord Darmac",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Beastlord Darmac]],
--> spell list
continuo = {
154956,
154960,
154981,
154989,
155030,
155061,
155198,
155222,
155247,
155499,
155531,
155611,
155657,
155718,
156823,
156824,
162275,
162283,
},
},
[4] = {
boss = "Flamebender Ka'graz",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Flamebender Kagraz]],
--> spell list
continuo = {
154938,
155049,
155074,
155314,
155318,
155484,
155511,
156018,
156040,
156713,
163284,
163633,
163822,
},
},
[5] = {
boss = "Hans'gar and Franzok",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Franzok]],
--> spell list
continuo = {
153470,
155818,
156938,
157853,
158140,
161570,
},
},
[6] = {
boss = "Operator Thogar",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Operator Thogar]],
--> spell list
continuo = {
163754,
156554,
155921,
158084,
163752,
155701,
160050,
156270,
156655,
},
},
[7] = {
boss = "The Blast Furnace",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-The Blast Furnace]],
--> spell list
continuo = {
155187,
155201,
155209,
155223,
155242,
155743,
156932,
156937,
158246,
159408,
},
},
[8] = {
boss = "Kromog",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Kromog]],
--> spell list
continuo = {
156704,
156844,
157055,
157059,
157247,
157659,
161893,
161923,
162349,
162392,
},
},
[9] = {
boss = "The Iron Maidens",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Iron Maidens]],
--> spell list
continuo = {
155841,
156637,
156669,
157884,
158078,
158080,
158683,
159335,
160436,
160733,
},
},
[10] = {
boss = "Blackhand",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Warlord Blackhand]],
--> spell list
continuo = {
155992,
156044,
156107,
156401,
156479,
156497,
156731,
156743,
},
},
},
}
_detalhes:InstallEncounter (blackrock_foundry)
@@ -1,6 +0,0 @@
## Interface: 60100
## Title: Details: Blackrock Foundry
## Notes: Plugin for Details
## RequiredDeps: Details
Details_RaidInfo-BlackrockFoundry.lua
@@ -0,0 +1,390 @@
do
--load encounter journal
if (not EJ_GetEncounterInfoByIndex (1, 669)) then
EJ_SelectInstance (669)
end
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]],
},
},
})
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)
@@ -0,0 +1,6 @@
## Interface: 60200
## Title: Details: Hellfire Citadel
## Notes: Plugin for Details
## RequiredDeps: Details
Details_RaidInfo-HellfireCitadel.lua
@@ -1,149 +0,0 @@
local _detalhes = _G._detalhes
local trash_mobs_ids = {
}
local highmaul = {
id = 1228, --994 = map id extracted from encounter journal
ej_id = 477, --encounter journal id
name = "Highmaul",
icons = [[Interface\AddOns\Details_RaidInfo-Highmaul\boss_faces]],
icon = [[Interface\AddOns\Details_RaidInfo-Highmaul\icon256x128]],
is_raid = true,
backgroundFile = {file = [[Interface\Glues\LOADINGSCREENS\LoadingScreen_HighMaulRaid]], coords = {0, 1, 265/1024, 875/1024}},
backgroundEJ = [[Interface\EncounterJournal\UI-EJ-LOREBG-Highmaul]],
boss_names = {
--[[ 1 ]] "Kargath Bladefist",
--[[ 2 ]] "The Butcher",
--[[ 3 ]] "Tectus",
--[[ 4 ]] "Brackenspore",
--[[ 5 ]] "Twin Ogron",
--[[ 6 ]] "Ko'ragh",
--[[ 7 ]] "Imperator Mar'gok",
},
encounter_ids = { --encounter journal encounter id
--> Ids by Index
1128, 971, 1195, 1196, 1148, 1153, 1197,
--> Boss Index
[1128] = 1,
[971] = 2,
[1195] = 3,
[1196] = 4,
[1148] = 5,
[1153] = 6,
[1197] = 7,
},
encounter_ids2 = {
--combatlog encounter id
[1721] = 1, --kargath
[1706] = 2, --the butcher
[1722] = 3, --tectus
[1720] = 4, --brakenspore
[1719] = 5, --twin ogron
[1723] = 6, --Koragh
[1705] = 7, --Margok
},
boss_ids = {
--npc ids
[78714] = 1, --Kargath
[77404] = 2, --The Butcher
[78948] = 3, --Tectus
[78491] = 4, --Brakenspore
[78238] = 5, --Pol
[78237] = 5, --Phemos
[79015] = 6, --Koragh
[77428] = 7, --Margok
},
encounters = {
[1] = {
boss = "Kargath Bladefist",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Kargath Bladefist]],
--> spell list
continuo = {},
},
[2] = {
boss = "The Butcher",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-The Butcher]],
--> spell list
continuo = {},
},
[3] = {
boss = "Tectus",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Tectus The Living Mountain]],
--> spell list
continuo = {},
funcType = 0x2,
func = function (combat)
local removed = false
local list = combat:GetActorList (DETAILS_ATTRIBUTE_DAMAGE)
for i = #list, 1, -1 do
local id = _detalhes:GetNpcIdFromGuid (list[i].serial)
if (trash_mobs_ids [id]) then
tremove (list, i)
combat.totals [DETAILS_ATTRIBUTE_DAMAGE] = combat.totals [DETAILS_ATTRIBUTE_DAMAGE] - list[i].total
removed = true
end
end
if (removed) then
combat[DETAILS_ATTRIBUTE_DAMAGE]:Remap()
end
end,
},
[4] = {
boss = "Brackenspore",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Brackenspore]],
--> spell list
continuo = {},
},
[5] = {
boss = "Twin Ogron",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Twin Ogron]],
--> spell list
continuo = {},
},
[6] = {
boss = "Ko'ragh",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Fel Breaker]],
--> spell list
continuo = {},
},
[7] = {
boss = "Imperator Mar'gok",
portrait = [[Interface\ENCOUNTERJOURNAL\UI-EJ-BOSS-Imperator Margok]],
--> spell list
continuo = {},
},
},
}
_detalhes:InstallEncounter (highmaul)
@@ -1,6 +0,0 @@
## Interface: 60100
## Title: Details: Highmaul
## Notes: Plugin for Details
## RequiredDeps: Details
Details_RaidInfo-Highmaul.lua
Binary file not shown.
Binary file not shown.
@@ -1,4 +1,4 @@
## Interface: 60100
## Interface: 60200
## Title: Details TimeAttack (plugin)
## Notes: Plugin for Details
## SavedVariablesPerCharacter: _detalhes_databaseTimeAttack
@@ -1,4 +1,4 @@
## Interface: 60100
## Interface: 60200
## Title: Details Tiny Threat (plugin)
## Notes: Plugin for Details
## RequiredDeps: Details
@@ -91,10 +91,8 @@ local function CreatePluginFrames (data)
VanguardFrame:RegisterEvent ("PLAYER_TARGET_CHANGED")
Vanguard:ResetBars()
--Vanguard:ResetDebuffs() -- ??
Vanguard:IdentifyTanks()
Vanguard.CurrentInstance = Vanguard:GetInstance (Vanguard.instance_id)
Vanguard.CurrentCombat = _detalhes:GetCombat ("current")
VanguardFrame:SetFrameStrata (Vanguard.CurrentInstance.baseframe:GetFrameStrata())
@@ -1,4 +1,4 @@
## Interface: 60100
## Interface: 60200
## Title: Details Vanguard (plugin)
## Notes: Plugin for Details
## SavedVariablesPerCharacter: _detalhes_databaseVanguard