All pastes #403429 Raw Edit

Untitled

public text v1 · immutable
·published 2007-03-20 11:14 UTC
rendered paste body
// Ok first off, Roots and Fear have a chance to break based on the damage  
// caused by each direct damage run.
// Roots can never be broken by the roots DoT either
// so first off is the function for determining the chance and aura 
// removal

void Unit::RemoveSpellbyDamageTaken(uint32 auraType, uint32 damage)
{
    if(!HasAuraType(auraType))
        return;

    float rel_dmg = (float)damage / GetMaxHealth();

    // <- damage over 75% of max health is a definite removal of aura
    if (roll_chance_f(rel_dmg / 0.75 * 100.0))  
        RemoveSpellsCausingAura(auraType);
}

// and then in the deal damage function
    
    pVictim->RemoveSpellbyDamageTaken(SPELL_AURA_MOD_FEAR, damage);
    
    if(!spellProto || spellProto->Mechanic != MECHANIC_ROOT)
        pVictim->RemoveSpellbyDamageTaken(SPELL_AURA_MOD_ROOT, damage);