Skada Damage Meter (Revisited)

Skada Damage Meter (Revisited)

71.5k Downloads

Demon hunter "fodder of the flame" talent support

Zivres opened this issue · 2 comments

commented

When demon hunter has the talent, one of seven demons (ids 169421;169425;168932;169426;169429;169428;169430) can be summoned during the fight. These demons are visible for demon hunter only and take heavely multiplied damage from his glave throw (glave throw spell id 346665 for tank and 337819 for dps).
This damage (either glave throw damage or all damage to these demons) should be ignored by dps meter since it is huge and does not affect real targets.

My fix (it is kinda hardcoded, so I'm creating an issue instead of pull request):
In damage.lua

	local function is_demon_hunter_fodder_of_the_flame(t)
		if t.spellid ~= 337819 and t.spellid ~= 346665 then
			return false
		end

		local dstId = select(6, strsplit("-", t.dstGUID))
		
		if dstId ~= "169421" and dstId ~= "169425" and dstId ~= "168932" and dstId ~= "169426" and dstId ~= "169429" and dstId ~= "169428" and dstId ~= "169430" then
			return false
		end
		return true
	end

and inside local function spell_damage(t) replace dmg.amount = t.amount with

	if is_demon_hunter_fodder_of_the_flame(t) then
		dmg.amount = 0
	else
		dmg.amount = t.amount
	end
commented

Hello @Zivres .. Do you have any CLEU to check what those spell do to see how to implement a fix or a workaround if this is really an issue (I cannot tell because I don't play retail except for testing the addon).

commented

Sadly, I do not know how to get CLEU and send it to you properly. If there is a better way, please tell me and I'll do it.

That is what I did:

local deleteMeFrame = CreateFrame("FRAME", "deleteMeFrame")
deleteMeFrame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
deleteMeFrame:SetScript("OnEvent",
  function(self, event, ...)
	local _, subevent, _, sourceGUID, _, _, _, destGUID, destName = CombatLogGetCurrentEventInfo()
	local dstId = select(6, strsplit("-", destGUID))
	if dstId ~= "169421" and dstId ~= "169425" and dstId ~= "168932" and dstId ~= "169426" and dstId ~= "169429" and dstId ~= "169428" and dstId ~= "169430" then
		return
	end
	print(CombatLogGetCurrentEventInfo())
  end
)

That is what I got (some passive aoe damage and glave throw - "Бросок боевого клинка" in Russian):

1690192728.125 SPELL_MISSED false Player-1615-07C85123 Зиврес 1297 0 Creature-0-3113-2444-18605-169425-00003E4B60 Гончая Скверны 2632 0 207771 Огненное клеймо 4 EVADE false
1690192728.125 SPELL_MISSED false Player-1615-07C85123 Зиврес 1297 0 Creature-0-3113-2444-18605-169425-00003E4B60 Гончая Скверны 2632 0 207760 Сожжение заживо 1 EVADE false
1690192730.924 SPELL_CAST_SUCCESS false Player-1615-07C85123 Зиврес 1297 0 Creature-0-3113-2444-18605-169425-00003E4B60 Гончая Скверны 68168 0 346665 Бросок боевого клинка 1
1690192730.924 SPELL_CAST_SUCCESS false Player-1615-07C85123 Зиврес 1297 0 Creature-0-3113-2444-18605-169425-00003E4B60 Гончая Скверны 68168 0 204157 Бросок боевого клинка 1
1690192731.134 PARTY_KILL false Player-1615-07C85123 Зиврес 1297 0 Creature-0-3113-2444-18605-169425-00003E4B60 Гончая Скверны 68120 0 -1 false
1690192731.134 SPELL_DAMAGE false Player-1615-07C85123 Зиврес 1297 0 Creature-0-3113-2444-18605-169425-00003E4B60 Гончая Скверны 68120 0 346665 Бросок боевого клинка 1 229153 86564 1 nil nil nil true false false false
1690192731.134 UNIT_DIED true  nil -2147483648 -2147483648 Creature-0-3113-2444-18605-169425-00003E4B60 Гончая Скверны 68168 0 -1 false

Looks like this is a "real" damage from the game point of view, but it is both useless and huge (glave throw damage to these demons is heavily multiplied by the talent), so it really should be ignored to not mislead player.