Skada Damage Meter

382 - Tooth and Claw Healing (Absorb)

Tooth and Claw is a Guardian Druid Passive (http://www.wowhead.com/spell=135288/tooth-and-claw) that causes our maul to put a damage reduction on the target so whoever that target ends up melee will have part of the damage absorbed.

Would there be a way to integrate this into the healing meter portion of skada? I know warcraft logs is now tracking but don't know the complexity of figuring out if there is more then one Guardian druid which one's caused the absorb. As another note this absorb can also be wasted if the hit was over absorbed from having multiple TaC procs before the next melee strike lands.

User When Change
cjm721 Oct 27, 2014 at 13:51 UTC Create

You must login to post a comment. Don't have an account? Register to get one!

  • 1 comment
  • Avatar of avi90 avi90 Nov 06, 2014 at 23:04 UTC - 0 likes

    Hi, with the new combatlog event SPELL_ABSORBED (which fires at the same time as damage events with absorbs) you can track such absorbs. So I propose that you change your parsing of absorbs to something like this:

    local function SpellAbsorbed(timestamp, eventtype, srcGUID, srcName, srcFlags, dstGUID, dstName, dstFlags, ...)
    	local attackSpellID, attackSpellName, attackSpellSchool,
    		creditGUID, creditName, creditFlags, creditRaidFlags,
    		absorbSpellID, absorbSpellName, absorbSpellSchool,
    		amount
    
    	if select(11, ...) == nil then
    		-- meele hit (no attack spell info)
    		creditGUID, creditName, creditFlags, creditRaidFlags,
    			absorbSpellID, absorbSpellName, absorbSpellSchool,
    			amount = ...
    	else
    		-- spell hit
    		attackSpellID, attackSpellName, attackSpellSchool,
    			creditGUID, creditName, creditFlags, creditRaidFlags,
    			absorbSpellID, absorbSpellName, absorbSpellSchool,
    			amount = ...
    	end
    
    	if amount ~= nil and dstName and creditName then
    		heal.dstName = dstName
    		heal.dstGUID = dstGUID
    		heal.playerid = creditGUID
    		heal.playername = creditName
    		heal.spellid = absorbSpellID
    		heal.spellname = absorbSpellName
    		heal.amount = amount
    		heal.overhealing = 0
    		heal.critical = nil
    		heal.multistrike = nil
    		heal.absorbed = 0
    
    		Skada:FixPets(heal)
    		log_heal(Skada.current, heal)
    		log_heal(Skada.total, heal)
    	end
    end
    
    Skada:RegisterForCL(SpellAbsorbed, 'SPELL_ABSORBED', {})
    

    only downside: you can't track overhealing this way (I think)

  • 1 comment

Facts

Reported
Oct 27, 2014
Status
New - Issue has not had initial review yet.
Type
Enhancement - A change which is intended to better the project in some way
Priority
Medium - Normal priority.
Votes
0

Reported by

Possible assignees