Track spell reflect damage
Add damage that was reflected to the entity that has done the reflected (mostly prot warris). Previously the damage was added to the caster of the spell.
This commit is contained in:
Regular → Executable
+39
@@ -105,6 +105,8 @@
|
||||
local ignore_actors = {}
|
||||
--> spell containers for special cases
|
||||
local monk_guard_talent = {} --guard talent for bm monks
|
||||
--> holds transitory information about reflected spells
|
||||
local reflected = {}
|
||||
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
--> constants
|
||||
@@ -455,6 +457,24 @@
|
||||
--if (ignore_actors [alvo_serial]) then
|
||||
-- return
|
||||
--end
|
||||
|
||||
--> this cast may have been spell reflected
|
||||
if (who_serial == alvo_serial) then
|
||||
local idx = who_serial
|
||||
if (reflected[idx] and reflected[idx].serial) then
|
||||
--> the 'SPELL_MISSED' with type 'REFLECT' appeared first -> log the reflection
|
||||
who_serial = reflected[idx].serial
|
||||
who_name = reflected[idx].name
|
||||
who_flags = reflected[idx].who_flags
|
||||
reflected[idx] = nil
|
||||
return parser:spell_dmg (token, time, who_serial, who_name, who_flags, alvo_serial, alvo_name, alvo_flags, alvo_flags2, spellid, spellname, spelltype, amount, -1, nil, nil, nil, nil, false, false, false, false)
|
||||
else
|
||||
--> otherwise log the amount for the 'SPELL_MISSED' event
|
||||
reflected[idx] = {
|
||||
amount = amount
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
--rules of specific encounters
|
||||
|
||||
@@ -1406,6 +1426,24 @@
|
||||
|
||||
end
|
||||
|
||||
--> It is non deterministic whether the 'SPELL_DAMAGE' or the 'SPELL_MISSED' log appears first. We handle both cases.
|
||||
elseif (missType == "REFLECT") then
|
||||
if (reflected[who_serial] and reflected[who_serial].amount > 0) then
|
||||
--> 'SPELL_DAMAGE' was logged first -> log the reflect here
|
||||
--> We cannot rely on amountMissed which is empty in the reflection case
|
||||
local amount = reflected[who_serial].amount
|
||||
reflected[who_serial] = nil
|
||||
return parser:spell_dmg (token, time, alvo_serial, alvo_name, alvo_flags, who_serial, who_name, who_flags, nil, spellid, spellname, spelltype, amount, -1, nil, nil, nil, nil, false, false, false, false)
|
||||
else
|
||||
--> otherwise write out information used in the 'SPELL_DAMAGE' event
|
||||
reflected[who_serial] = {
|
||||
serial = alvo_serial,
|
||||
name = alvo_name,
|
||||
who_flags = alvo_flags,
|
||||
amount = 0
|
||||
}
|
||||
end
|
||||
|
||||
else
|
||||
--colocando aqui apenas pois ele confere o override dentro do damage
|
||||
if (is_using_spellId_override) then
|
||||
@@ -5137,6 +5175,7 @@ local SPELL_POWER_PAIN = SPELL_POWER_PAIN or (PowerEnum and PowerEnum.Pain) or 1
|
||||
_table_wipe (misc_cache_petsOwners)
|
||||
|
||||
_table_wipe (ignore_death)
|
||||
_table_wipe (reflected)
|
||||
|
||||
damage_cache = setmetatable ({}, _detalhes.weaktable)
|
||||
damage_cache_pets = setmetatable ({}, _detalhes.weaktable)
|
||||
|
||||
Reference in New Issue
Block a user