You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
3.1 KiB
128 lines
3.1 KiB
|
|
local Details = _G.Details
|
|
local _
|
|
local addonName, Details222 = ...
|
|
local classDamageSpellTable = Details.habilidade_dano
|
|
|
|
function Details222.DamageSpells.CreateSpellTable(spellId, cleuToken)
|
|
return classDamageSpellTable:NovaTabela(spellId, nil, cleuToken)
|
|
end
|
|
|
|
--cleu token is used to check if the spell is a dot
|
|
function Details.CreateSpellTable(spellId, cleuToken)
|
|
return classDamageSpellTable:NovaTabela(spellId, nil, cleuToken)
|
|
end
|
|
|
|
---create a spelltable to store the damage of a spell
|
|
---@param self any
|
|
---@param spellId number
|
|
---@param link nil
|
|
---@param token string
|
|
---@return spelltable
|
|
function classDamageSpellTable:NovaTabela(spellId, link, token)
|
|
---@type spelltable
|
|
local spellTable = {
|
|
total = 0, --total damage
|
|
counter = 0, --counter
|
|
id = spellId, --spellid
|
|
successful_casted = 0, --successful casted times (only for enemies)
|
|
|
|
--min damage made by normal hits
|
|
n_min = 0,
|
|
--max damage made by normal hits
|
|
n_max = 0,
|
|
--amount normal hits
|
|
n_amt = 0,
|
|
--total damage of normal hits
|
|
n_total = 0,
|
|
|
|
--critical hits
|
|
c_min = 0,
|
|
c_max = 0,
|
|
c_amt = 0,
|
|
c_total = 0,
|
|
|
|
--glacing hits
|
|
g_amt = 0,
|
|
g_dmg = 0,
|
|
|
|
--resisted
|
|
r_amt = 0,
|
|
r_dmg = 0,
|
|
|
|
--blocked
|
|
b_amt = 0,
|
|
b_dmg = 0,
|
|
|
|
--obsorved
|
|
a_amt = 0,
|
|
a_dmg = 0,
|
|
|
|
targets = {},
|
|
extra = {}
|
|
}
|
|
|
|
if (token == "SPELL_PERIODIC_DAMAGE") then
|
|
Details:SetAsDotSpell(spellId)
|
|
end
|
|
|
|
return spellTable
|
|
end
|
|
|
|
function classDamageSpellTable:AddMiss(serial, targetName, targetFlags, sourceName, missType)
|
|
self.counter = self.counter + 1
|
|
self[missType] = (self[missType] or 0) + 1
|
|
self.targets[targetName] = self.targets[targetName] or 0
|
|
end
|
|
|
|
function classDamageSpellTable:Add(targetSerial, targetName, targetFlags, amount, sourceName, resisted, blocked, absorbed, critical, glacing, token, bIsOffhand, bIsReflected)
|
|
self.total = self.total + amount
|
|
|
|
--when reflected add the spellId into the extra table to show which spells has reflected
|
|
if (bIsReflected) then
|
|
self.extra[bIsReflected] = (self.extra[bIsReflected] or 0) + amount
|
|
end
|
|
|
|
self.targets[targetName] = (self.targets[targetName] or 0) + amount
|
|
self.counter = self.counter + 1
|
|
|
|
if (resisted and resisted > 0) then
|
|
self.r_dmg = self.r_dmg + amount
|
|
self.r_amt = self.r_amt + 1
|
|
end
|
|
|
|
if (blocked and blocked > 0) then
|
|
self.b_dmg = self.b_dmg + amount
|
|
self.b_amt = self.b_amt + 1
|
|
end
|
|
|
|
if (absorbed and absorbed > 0) then
|
|
self.a_dmg = self.a_dmg + amount
|
|
self.a_amt = self.a_amt + 1
|
|
end
|
|
|
|
if (glacing) then
|
|
self.g_dmg = self.g_dmg + amount
|
|
self.g_amt = self.g_amt + 1
|
|
|
|
elseif (critical) then
|
|
self.c_total = self.c_total + amount
|
|
self.c_amt = self.c_amt + 1
|
|
if (amount > self.c_max) then
|
|
self.c_max = amount
|
|
end
|
|
if (self.c_min > amount or self.c_min == 0) then
|
|
self.c_min = amount
|
|
end
|
|
|
|
else
|
|
self.n_total = self.n_total + amount
|
|
self.n_amt = self.n_amt + 1
|
|
if (amount > self.n_max) then
|
|
self.n_max = amount
|
|
end
|
|
if (self.n_min > amount or self.n_min == 0) then
|
|
self.n_min = amount
|
|
end
|
|
end
|
|
end
|
|
|