Evoker Empowerment

This commit is contained in:
Tercio Jose
2022-11-22 13:19:11 -03:00
parent 8f9493d25d
commit 2ca8ce36ea
5 changed files with 206 additions and 30 deletions
+2 -2
View File
@@ -6,8 +6,8 @@
local addonName, Details222 = ...
local version, build, date, tocversion = GetBuildInfo()
_detalhes.build_counter = 10280
_detalhes.alpha_build_counter = 10280 --if this is higher than the regular counter, use it instead
_detalhes.build_counter = 10282
_detalhes.alpha_build_counter = 10282 --if this is higher than the regular counter, use it instead
_detalhes.dont_open_news = true
_detalhes.game_version = version
_detalhes.userversion = version .. " " .. _detalhes.build_counter
+63 -7
View File
@@ -4952,9 +4952,8 @@ function atributo_damage:MontaDetalhesDamageDone (spellId, spellLine, instance)
cast_string = cast_string .. spell_cast
end
local averageEmpowerLevel
if (esta_magia.e_lvl) then --spell empowered
averageEmpowerLevel = format("Empower Average: %.2f", esta_magia.e_lvl / esta_magia.e_amt)
if (esta_magia.e_total) then
cast_string = Loc ["STRING_CAST"] .. ": " .. "|cFFFFFF00" .. esta_magia.e_total .. "|r"
end
gump:SetaDetalheInfoTexto( index, 100,
@@ -4963,9 +4962,7 @@ function atributo_damage:MontaDetalhesDamageDone (spellId, spellLine, instance)
schooltext, --offhand,
Loc ["STRING_AVERAGE"] .. ": " .. Details:comma_value (media),
this_dps,
Loc ["STRING_HITS"]..": " .. hits_string,
averageEmpowerLevel or "",
""
Loc ["STRING_HITS"]..": " .. hits_string
)
--NORMAL
@@ -5044,6 +5041,65 @@ function atributo_damage:MontaDetalhesDamageDone (spellId, spellLine, instance)
end
--empowered
if (esta_magia.e_total) then
local empowerLevelSum = esta_magia.e_total --total sum of empower levels
local empowerAmount = esta_magia.e_amt --amount of casts with empower
local empowerAmountPerLevel = esta_magia.e_lvl --{[1] = 4; [2] = 9; [3] = 15}
local empowerDamagePerLevel = esta_magia.e_dmg --{[1] = 54548745, [2] = 74548745}
data[#data+1] = t4
local level1AverageDamage = "0"
local level2AverageDamage = "0"
local level3AverageDamage = "0"
local level4AverageDamage = "0"
local level5AverageDamage = "0"
if (empowerDamagePerLevel[1]) then
level1AverageDamage = Details:ToK(empowerDamagePerLevel[1] / empowerAmountPerLevel[1])
end
if (empowerDamagePerLevel[2]) then
level2AverageDamage = Details:ToK(empowerDamagePerLevel[2] / empowerAmountPerLevel[2])
end
if (empowerDamagePerLevel[3]) then
level3AverageDamage = Details:ToK(empowerDamagePerLevel[3] / empowerAmountPerLevel[3])
end
if (empowerDamagePerLevel[4]) then
level4AverageDamage = Details:ToK(empowerDamagePerLevel[4] / empowerAmountPerLevel[4])
end
if (empowerDamagePerLevel[5]) then
level5AverageDamage = Details:ToK(empowerDamagePerLevel[5] / empowerAmountPerLevel[5])
end
t4[1] = 0
t4[2] = {p = 100, c = {0.282353, 0.239216, 0.545098, 0.6}}
t4[3] = "Spell Empower Average Level: " .. format("%.2f", empowerLevelSum / empowerAmount)
t4[4] = ""
t4[5] = ""
t4[6] = ""
t4[10] = ""
t4[11] = ""
if (level1AverageDamage ~= "0") then
t4[4] = "Level 1 Average: " .. level1AverageDamage .. " (" .. (empowerAmountPerLevel[1] or 0) .. ")"
end
if (level2AverageDamage ~= "0") then
t4[6] = "Level 2 Average: " .. level2AverageDamage .. " (" .. (empowerAmountPerLevel[2] or 0) .. ")"
end
if (level3AverageDamage ~= "0") then
t4[11] = "Level 3 Average: " .. level3AverageDamage .. " (" .. (empowerAmountPerLevel[3] or 0) .. ")"
end
if (level4AverageDamage ~= "0") then
t4[10] = "Level 4 Average: " .. level4AverageDamage .. " (" .. (empowerAmountPerLevel[4] or 0) .. ")"
end
if (level5AverageDamage ~= "0") then
t4[5] = "Level 5 Average: " .. level5AverageDamage .. " (" .. (empowerAmountPerLevel[5] or 0) .. ")"
end
end
--Details:BuildPlayerDetailsSpellChart()
@@ -5055,7 +5111,7 @@ function atributo_damage:MontaDetalhesDamageDone (spellId, spellLine, instance)
_table_sort(data, Details.Sort1)
for index, tabela in ipairs(data) do
gump:SetaDetalheInfoTexto(index+1, tabela[2], tabela[3], tabela[4], tabela[5], tabela[6], tabela[7], tabela[8], tabela[9])
gump:SetaDetalheInfoTexto(index+1, tabela[2], tabela[3], tabela[4], tabela[5], tabela[6], tabela[7], tabela[8], tabela[9], tabela[10], tabela[11], tabela[12])
end
for i = #data+2, 5 do
+60
View File
@@ -2375,6 +2375,66 @@ function atributo_heal:MontaDetalhesHealingDone (spellid, barra)
t3[6] = ""
t3[7] = ""
t3[8] = _detalhes:comma_value (esta_magia.anti_heal) .. " / " .. _cstr ("%.1f", porcentagem_anti_heal) .. "%"
--empowered
elseif (esta_magia.e_total) then
local empowerLevelSum = esta_magia.e_total --total sum of empower levels
local empowerAmount = esta_magia.e_amt --amount of casts with empower
local empowerAmountPerLevel = esta_magia.e_lvl --{[1] = 4; [2] = 9; [3] = 15}
local empowerDamagePerLevel = esta_magia.e_heal --{[1] = 54548745, [2] = 74548745}
data[3] = t3
local level1AverageDamage = "0"
local level2AverageDamage = "0"
local level3AverageDamage = "0"
local level4AverageDamage = "0"
local level5AverageDamage = "0"
if (empowerDamagePerLevel[1]) then
level1AverageDamage = Details:ToK(empowerDamagePerLevel[1] / empowerAmountPerLevel[1])
end
if (empowerDamagePerLevel[2]) then
level2AverageDamage = Details:ToK(empowerDamagePerLevel[2] / empowerAmountPerLevel[2])
end
if (empowerDamagePerLevel[3]) then
level3AverageDamage = Details:ToK(empowerDamagePerLevel[3] / empowerAmountPerLevel[3])
end
if (empowerDamagePerLevel[4]) then
level4AverageDamage = Details:ToK(empowerDamagePerLevel[4] / empowerAmountPerLevel[4])
end
if (empowerDamagePerLevel[5]) then
level5AverageDamage = Details:ToK(empowerDamagePerLevel[5] / empowerAmountPerLevel[5])
end
t3[1] = 0
t3[2] = {p = 100, c = {0.282353, 0.239216, 0.545098, 0.6}}
t3[3] = "Spell Empower Average Level: " .. format("%.2f", empowerLevelSum / empowerAmount)
t3[4] = ""
t3[5] = ""
t3[6] = ""
t3[10] = ""
t3[11] = ""
if (level1AverageDamage ~= "0") then
t3[4] = "Level 1 Average: " .. level1AverageDamage .. " (" .. (empowerAmountPerLevel[1] or 0) .. ")"
end
if (level2AverageDamage ~= "0") then
t3[6] = "Level 2 Average: " .. level2AverageDamage .. " (" .. (empowerAmountPerLevel[2] or 0) .. ")"
end
if (level3AverageDamage ~= "0") then
t3[11] = "Level 3 Average: " .. level3AverageDamage .. " (" .. (empowerAmountPerLevel[3] or 0) .. ")"
end
if (level4AverageDamage ~= "0") then
t3[10] = "Level 4 Average: " .. level4AverageDamage .. " (" .. (empowerAmountPerLevel[4] or 0) .. ")"
end
if (level5AverageDamage ~= "0") then
t3[5] = "Level 5 Average: " .. level5AverageDamage .. " (" .. (empowerAmountPerLevel[5] or 0) .. ")"
end
end
-- for i = #data+1, 3 do --para o overheal aparecer na ultima barra
+66 -17
View File
@@ -13,7 +13,7 @@
local UnitGUID = UnitGUID
local IsInRaid = IsInRaid
local IsInGroup = IsInGroup
local GetNumGroupMembers = GetNumGroupMembers
--local GetNumGroupMembers = GetNumGroupMembers
local CombatLogGetCurrentEventInfo = CombatLogGetCurrentEventInfo
local GetTime = GetTime
local tonumber = tonumber
@@ -157,6 +157,8 @@
[10060] = true, --power infusion
}
local empower_cache = {}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--constants
local container_misc = _detalhes.container_type.CONTAINER_MISC_CLASS
@@ -1392,6 +1394,29 @@
end
end
--empowerment data
if (empower_cache[who_serial]) then
local empowerSpellInfo = empower_cache[who_serial][spellname]
if (empowerSpellInfo) then
if (not empowerSpellInfo.counted) then
--total of empowerment
spell.e_total = (spell.e_total or 0) + empowerSpellInfo.empowerLevel --usado para calcular o average empowerment
--total amount of empowerment
spell.e_amt = (spell.e_amt or 0) + 1 --usado para calcular o average empowerment
--amount of casts on each level
spell.e_lvl = spell.e_lvl or {}
spell.e_lvl[empowerSpellInfo.empowerLevel] = (spell.e_lvl[empowerSpellInfo.empowerLevel] or 0) + 1
empowerSpellInfo.counted = true
end
--damage bracket
spell.e_dmg = spell.e_dmg or {}
spell.e_dmg[empowerSpellInfo.empowerLevel] = (spell.e_dmg[empowerSpellInfo.empowerLevel] or 0) + amount
end
end
if (trinketData[spellid] and _in_combat) then
local thisData = trinketData[spellid]
if (thisData.lastCombatId == _global_combat_counter) then
@@ -1949,6 +1974,10 @@
function parser:spell_empower(token, time, sourceGUID, sourceName, sourceFlags, targetGUID, targetName, targetFlags, targetRaidFlags, spellId, spellName, spellSchool, empowerLevel)
--empowerLevel only exists on _END and _INTERRUPT
if (token == "SPELL_EMPOWER_START" or token == "SPELL_EMPOWER_INTERRUPT") then
return
end
if (not empowerLevel) then
return
end
@@ -1973,17 +2002,14 @@
return
end
--actor spells table
local spellTable = sourceObject.spells._ActorTable[spellId]
if (not spellTable) then
spellTable = sourceObject.spells:PegaHabilidade(spellId, true, token)
spellTable.spellschool = spellSchool or 1
end
spellTable.e_lvl = (spellTable.e_lvl or 0) + empowerLevel
spellTable.e_amt = (spellTable.e_amt or 0) + 1
--print("spellTable.e_lvl", spellTable.e_lvl, "spellTable.e_amt", spellTable.e_amt, "average:", spellTable.e_lvl / spellTable.e_amt)
empower_cache[sourceGUID] = empower_cache[sourceGUID] or {}
local empowerTable = {
spellName = spellName,
empowerLevel = empowerLevel,
time = time,
counted = false,
}
empower_cache[sourceGUID][spellName] = empowerTable
end
--parser.spell_empower
--10/30 15:32:11.515 SPELL_EMPOWER_START,Player-4184-00242A35,"Isodrak-Valdrakken",0x514,0x0,Player-4184-00242A35,"Isodrak-Valdrakken",0x514,0x0,382266,"Fire Breath",0x4
@@ -2494,6 +2520,29 @@
end
end
--empowerment data
if (empower_cache[who_serial]) then
local empowerSpellInfo = empower_cache[who_serial][spellname]
if (empowerSpellInfo) then
if (not empowerSpellInfo.counted) then
--total of empowerment
spell.e_total = (spell.e_total or 0) + empowerSpellInfo.empowerLevel --usado para calcular o average empowerment
--total amount of empowerment
spell.e_amt = (spell.e_amt or 0) + 1 --usado para calcular o average empowerment
--amount of casts on each level
spell.e_lvl = spell.e_lvl or {}
spell.e_lvl[empowerSpellInfo.empowerLevel] = (spell.e_lvl[empowerSpellInfo.empowerLevel] or 0) + 1
empowerSpellInfo.counted = true
end
--healing bracket
spell.e_heal = spell.e_heal or {}
spell.e_heal[empowerSpellInfo.empowerLevel] = (spell.e_heal[empowerSpellInfo.empowerLevel] or 0) + cura_efetiva
end
end
if (is_shield) then
--return spell:Add (alvo_serial, alvo_name, alvo_flags, cura_efetiva, who_name, 0, nil, overhealing, true)
return spell_heal_func (spell, alvo_serial, alvo_name, alvo_flags, cura_efetiva, who_name, 0, nil, overhealing, true)
@@ -5274,6 +5323,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
wipe(necro_cheat_deaths) --remove on 10.0
wipe(dk_pets_cache.army)
wipe(dk_pets_cache.apoc)
wipe(empower_cache)
--remove on 10.0 spikeball from painsmith
spikeball_damage_cache = {
@@ -5462,6 +5512,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
if (not OnRegenEnabled) then
wipe(bitfield_swap_cache)
wipe(empower_cache)
_detalhes:DispatchAutoRunCode("on_leavecombat")
end
@@ -6031,11 +6082,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
xpcall(saveNicktabCache, saver_error)
end)
--10/30 15:32:11.515 SPELL_EMPOWER_START,Player-4184-00242A35,"Isodrak-Valdrakken",0x514,0x0,Player-4184-00242A35,"Isodrak-Valdrakken",0x514,0x0,382266,"Fire Breath",0x4
--10/30 15:32:12.433 SPELL_EMPOWER_END,Player-4184-00242A35,"Isodrak-Valdrakken",0x514,0x0,0000000000000000,nil,0x80000000,0x80000000,382266,"Fire Breath",0x4,1
--10/30 15:33:45.970 SPELL_EMPOWER_INTERRUPT,Player-4184-00218B4F,"Minng-Valdrakken",0x512,0x0,0000000000000000,nil,0x80000000,0x80000000,382266,"Fire Breath",0x4,1
-- ~parserstart ~startparser ~cleu
-- ~parserstart ~startparser ~cleu ~parser
function _detalhes.OnParserEvent(...)
local time, token, hidding, who_serial, who_name, who_flags, who_flags2, target_serial, target_name, target_flags, target_flags2, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12 = CombatLogGetCurrentEventInfo()
@@ -6113,6 +6160,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
wipe(misc_cache_pets)
wipe(misc_cache_petsOwners)
wipe(npcid_cache)
wipe(empower_cache)
wipe(ignore_death)
@@ -6167,6 +6215,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
wipe(tanks_members_cache)
wipe(auto_regen_cache)
wipe(bitfield_swap_cache)
wipe(empower_cache)
local roster = _detalhes.tabela_vigente.raid_roster
+15 -4
View File
@@ -628,6 +628,7 @@ function gump:CriaDetalheInfo(index)
spellInfoBlock.middleStringUp = spellInfoBlock.bg:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall")
spellInfoBlock.middleStringDown = spellInfoBlock.bg:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall")
spellInfoBlock.middleStringMiddle = spellInfoBlock.bg:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall")
spellInfoBlock.bg.overlay = spellInfoBlock.bg:CreateTexture("DetailsPlayerDetailsWindow_DetalheInfoBG_Overlay" .. index, "ARTWORK")
spellInfoBlock.bg.overlay:SetTexture("Interface\\AddOns\\Details\\images\\overlay_detalhes")
@@ -719,15 +720,17 @@ function gump:SetaDetalheInfoAltura(index, xmod, ymod)
spellInfoBlock.dano:SetPoint("TOPLEFT", background, "TOPLEFT", xOffset, yOffset + (-24))
spellInfoBlock.dano_media:SetPoint("TOPLEFT", background, "TOPLEFT", xOffset, yOffset + (-44))
spellInfoBlock.nome2:SetPoint("TOPRIGHT", background, "TOPRIGHT", -xOffset + right, yOffset + (-2))
spellInfoBlock.nome2:SetPoint("TOPRIGHT", background, "TOPRIGHT", -xOffset + right, yOffset + (-4))
spellInfoBlock.dano_porcento:SetPoint("TOPRIGHT", background, "TOPRIGHT", -xOffset + right, yOffset + (-24))
spellInfoBlock.dano_dps:SetPoint("TOPRIGHT", background, "TOPRIGHT", -xOffset + right, yOffset + (-44))
spellInfoBlock.middleStringUp:SetPoint("center", background, "center", 0, 0)
spellInfoBlock.middleStringUp:SetPoint("top", background, "top", 0, -2)
spellInfoBlock.middleStringUp:SetPoint("top", background, "top", 0, -7)
spellInfoBlock.middleStringDown:SetPoint("center", background, "center", 0, 0)
spellInfoBlock.middleStringDown:SetPoint("bottom", background, "bottom", 0, 2)
spellInfoBlock.middleStringDown:SetPoint("bottom", background, "bottom", 0, 19)
spellInfoBlock.middleStringMiddle:SetPoint("center", background, "center", 0, 6)
spellInfoBlock.bg:SetPoint("TOPLEFT", background, "TOPLEFT", 1, -1)
spellInfoBlock.bg:SetHeight(background:GetHeight() - 2)
@@ -746,7 +749,7 @@ end
--seta o contedo da barra de detalhes
------------------------------------------------------------------------------------------------------------------------------
function gump:SetaDetalheInfoTexto(index, data, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8)
function gump:SetaDetalheInfoTexto(index, data, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9)
local spellInfoBlock = _detalhes.playerDetailWindow.grupos_detalhes[index]
if (data) then
@@ -808,6 +811,12 @@ function gump:SetaDetalheInfoTexto(index, data, arg1, arg2, arg3, arg4, arg5, ar
spellInfoBlock.middleStringDown:SetText("")
end
if (arg9) then
spellInfoBlock.middleStringMiddle:SetText(arg9)
else
spellInfoBlock.middleStringMiddle:SetText("")
end
spellInfoBlock.nome:Show()
spellInfoBlock.dano:Show()
spellInfoBlock.dano_porcento:Show()
@@ -816,6 +825,8 @@ function gump:SetaDetalheInfoTexto(index, data, arg1, arg2, arg3, arg4, arg5, ar
spellInfoBlock.nome2:Show()
spellInfoBlock.middleStringUp:Show()
spellInfoBlock.middleStringDown:Show()
spellInfoBlock.middleStringDown:Show()
spellInfoBlock.middleStringMiddle:Show()
end
--cria as 5 caixas de detalhes infos que sero usados