Jump to content

[8990][Bug] Vampiric touch deals insane damage on dispell


Guest Ceris

Recommended Posts

Mangos Version: 8990

SD2 Version: dont know exactly, .server info states for mangos revision 8900+

Database Name and Version : UDB 385

ACID: 3.0.1

link: http://thottbot.com/s34914 and ranks

How it SHOULD work: When vampiric touch is dispelled, it should deal 1.6 times damage of whole duration of dot

How it DOES work: When vampiric touch is dispelled, it deals insane damage (from 13k to 25k)

This bug is caused by revision [8975] Spell 34914 and ranks will deals damage at dispel.

After discussion on our server, we maybe found cause of this bug. Maybe it is caused because spell damage bonus is applied twice: First time by function SpellDamageBonus and second time by function CastCustomSpell

Link to comment
Share on other sites

Confirmed, I just would like to add, that calculating spell power bonus in code like:

bp0 = 8 * caster->SpellDamageBonus(this, spellEntry, bp0, DOT, 1);

and multiplying it eight times means in fact that dispel gains 320% (8* 40% per tick) spell power bonus which in combination with double-calculation through SpellDamageBonus() (64085 seems to gain some bonus too and even if not, all modifiers are therefore double-applied) results into crazy amounts of damage :o.

Link to comment
Share on other sites

Vampiric touch seems to have the same problem Conflagrate has.

I fixed this problem with this in Unit::SpellDamageBonus in the custom damage switch:

       case SPELLFAMILY_PRIEST:
       {
           if (spellProto->Id == 64085)
               return pdamage;

           break;
       }

I think it's too hacky for git, but seems to work as a tempfix.

Link to comment
Share on other sites

But still...isn't it too much for a direct damage spell to gain 320% spell power bonus - compared to Unstable Affliction dispel which gains 180%?

Why don't we just delete

bp0 = 8 * caster->SpellDamageBonus(this, spellEntry, bp0, DOT, 1);

, do the multiplying here

int32 bp0 = [b]8 *[/b] dot->GetModifier()->m_amount;

and then add proper spell power benefit for spell "64085" to spell_bonus_data table, like it is with Unstable Affliction?

Seems logical to me...

Link to comment
Share on other sites

multiplier correct, read release notes for 3.2.x ...

full damage / 5 tick * 8 = expected damage _if_ no any spell bonuses.

Single problme possible just absent sql record in spell_bonus table witjh 0% coef for any spell damage bonus for dispel damage spell

If someone from _check_ and suggest related patch (in under review section) i will review.

Link to comment
Share on other sites

multiplier correct, read release notes for 3.2.x ...

full damage / 5 tick * 8 = expected damage _if_ no any spell bonuses.

Single problme possible just absent sql record in spell_bonus table witjh 0% coef for any spell damage bonus for dispel damage spell

If someone from _check_ and suggest related patch (in under review section) i will review.

http://github.com/gc/mangos/commit/648edfd80984d57b72406b4d36d110c1170498b0

Something we use for a while now. The best solution I was able to find. Just fill the bonus data of triggered spell to negative value. Problem with spells like VT dispel is that they still gain double bonus from % modifiers etc, and on priest it is very apparent, since it is about 40% + extra.

Link to comment
Share on other sites

multiplier correct, read release notes for 3.2.x ...

full damage / 5 tick * 8 = expected damage _if_ no any spell bonuses.

Single problme possible just absent sql record in spell_bonus table witjh 0% coef for any spell damage bonus for dispel damage spell

If someone from _check_ and suggest related patch (in under review section) i will review.

Yes, I know the multiplier is correct, the thing I was getting at is that it is not correct to multiply the damage with applied spell power bonus (through function SpellDamageBonus), meaning that you actually add spell power bonus of a single tick eight times...I think that the base damage is 8 * tick (at rank 5 it is 850/5 = 170, 170 * 8 = 1360 - which fits to the tooltip...) but the coefficient of spell "64085" should be independent shouldn't it?

Than it would solve problems with double applying also, because we would apply it only at spell "64085" casting, through a coeff in the spell_bonus_data table...

Link to comment
Share on other sites

the problem is that SpellDamageBonus applied all spell mods twice (in this case and conflagrate too)

Double apply spell power bonus eliminated in [9015] for both.

Ofc, for dispel case still possible applied not spell power source bonuses, but i not sure for this part.

"conflagrate" code has been just bug: spell not have applied bonuses to damage and anyway additional bonus is percent from original.

Link to comment
Share on other sites

immolate change in 9015 is wrong, now it takes 0 spell bonus, somewhat spellbonus needs to be added w/o other spellmods (things like berserk in wsg makes you oneshot ppl), so i got this:

                        // Calculate tick damage
                       SpellEntry const* spell = aura->GetSpellProto();
                       int32 sp = m_caster->SpellBaseDamageBonus(SPELL_SCHOOL_MASK_FIRE) +
                                  m_caster->SpellBaseDamageBonusForVictim(SPELL_SCHOOL_MASK_FIRE, unitTarget);
                       SpellBonusEntry const* bonus = sSpellMgr.GetSpellBonusData(spell->Id);
                       float coeff = bonus ? bonus->dot_damage : 0;
                       coeff *= m_caster->CalculateLevelPenalty(spell);
                       float damagetick = aura->GetModifier()->m_amount + sp * coeff;
                       // Add talents/glyphs for Immolate
                       if (spell->SpellFamilyFlags & UI64LIT(0x00000004))
                       {
                           float mult = 1.3;                   // assume Improved Immolate rank 3 (required talent)
                           if (m_caster->HasAura(18120))       // Aftermath rank 2
                               mult += 0.06;
                           else if (m_caster->HasAura(18119))  // Aftermath rank 1
                               mult += 0.03;
                           if (m_caster->HasAura(56228))       // Glyph of Immolate
                               mult += 0.1;
                           damagetick *= mult;
                       }
                       damage += int32(damagetick * 4);

maybe add only spellmods with SPELLFAMILY_WARLOCK but don't know how to do that.

Link to comment
Share on other sites

its not, conflagrate is hell bugged (on my server 8970 rev theres no high end gear available, only EoH/couple low lvl/heroc instances and professions) a lock with frostsavage set is hitting 17k :) in pvp the same 17k locks in ulduar gear on retail are hitting :) and in pve not pvp something is seriously wrong with conflagrate

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use