Forgeborne Reveries (Necrolord Cheat Death) issue and possible solution
m4tjz opened this issue ยท 0 comments
DETAILS! VERSION: R8782
GAME VERSION: 9.1.0
The Issue
Forgeborne Reveries (327676) causes issues with the Death Recap as Details checks for necro_cheat_deaths table on the parser.lua file. The problem starts after the first death as that there is no SPELL_AURA_REMOVED event fired when the aura is lost. This prevents future Death Recap from being filled as every event is filtered out because the necro_cheat_deaths is not cleared for that GUID.
Another issue is that the Death Recap is, mostly, 10 seconds behind because of how this cheat death works. As the UNIT_DIED event is fired after it expires.
1st Death: Everything is shown 10 seconds behind and a lot of info is lost.
2nd Death: No damage events as they were filtered out because the GUID is still set on necro_cheat_deaths.
The Solution
Treat it similar to Spirit of Redemption (27827). Pass a fake UNIT_DIED event to the parser and prevent the true death from being counted. Also never flag the necro_cheat_deaths table for that GUID.
For example, changing parser.lua starting from line 2303 from:
elseif (spellid == SPELLID_NECROMANCER_CHEAT_DEATH) then
necro_cheat_deaths[who_serial] = true
end
to:
elseif (spellid == SPELLID_NECROMANCER_CHEAT_DEATH) then
--> add necro cheat-death as a cooldown for it to appear on the recap
parser:add_defensive_cooldown (token, time, who_serial, who_name, who_flags, who_serial, who_name, who_flags, nil, spellid, spellname)
--> fake death event similar to how it's done for spirit of redemption
parser:dead ("UNIT_DIED", time, nil, nil, nil, who_serial, who_name, who_flags)
ignore_death [who_name] = true
return
--> there is no SPELL_AURA_REMOVED event for this aura, it will prevent any more recaps if set to true
--necro_cheat_deaths[who_serial] = true
end
How it looks with this changes: all the info is preserved and also adds the cheat death at the end to signal that the player was still alive for sometime afterwards.
My proposal also leaves necro_cheat_deaths table laying around on parser.lua and needs to be cleaned out from the code as it's only used for the recap anyways. (unless I missed anything)
Another Solution
Simply unchecking necro_cheat_deaths when any player dies, but this will leave the 10 second behind issue on the Death Recap.