Пример #1
0
void Spell::DoAllEffectOnTarget()
{
    if (!m_target)
        return;

    if (!m_caster)
        return;

    if (m_healing > 0)
        m_caster->HealBySpell(m_target, m_spellInfo, m_healing);
    else if (m_damage > 0)
    {
        SpellNonMeleeDamage damageInfo(m_caster, m_target, m_spellInfo->Id);
        damageInfo.damage = m_damage;
        m_caster->DealSpellDamage(&damageInfo);
    }
}
            void HandleDummy(SpellEffIndex /* effIndex */)
            {
                if (Unit* caster = GetOriginalCaster())
                    if (Unit* target = GetHitUnit())
                    {
                        if (!target->isAlive() || !_targetCount)
                            return;

                        int32 damage = 10000 / _targetCount;

                        SpellNonMeleeDamage damageInfo(caster, target, GetSpellInfo()->Id, GetSpellInfo()->SchoolMask);
                        damageInfo.damage = damage;

                        caster->CalcAbsorbResist(target, GetSpellInfo()->GetSchoolMask(), DOT, damage, &damageInfo.absorb, &damageInfo.resist, GetSpellInfo());
                        caster->DealDamageMods(target, damageInfo.damage, &damageInfo.absorb);
                        caster->SendSpellNonMeleeDamageLog(&damageInfo);
                        caster->DealSpellDamage(&damageInfo, false);
                    }
            }