Details! Damage Meter

Details! Damage Meter

250M Downloads

Forgeborne Reveries (Necrolord Cheat Death) issue and possible solution

m4tjz opened this issue ยท 0 comments

commented

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.
imagen

2nd Death: No damage events as they were filtered out because the GUID is still set on necro_cheat_deaths.
imagen

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.
imagen

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.