diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index ee849a9f1..59c431657 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -9107,8 +9107,8 @@ uint32 Unit::SpellDamageBonusDone(Unit *pVictim, SpellEntry const *spellProto, u } case SPELLFAMILY_DEATHKNIGHT: { - // Icy Touch, Howling Blast and Frost Strike - if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000600000002)) + // Icy Touch and Howling Blast + if (spellProto->SpellFamilyFlags & UI64LIT(0x0000000200000002)) { // search disease bool found = false; @@ -10179,6 +10179,36 @@ uint32 Unit::MeleeDamageBonusDone(Unit *pVictim, uint32 pdamage,WeaponAttackType } } + // Frost Strike + if (spellProto && spellProto->SpellFamilyName == SPELLFAMILY_DEATHKNIGHT && spellProto->SpellFamilyFlags & UI64LIT(0x0000000400000000)) + { + // search disease + bool found = false; + Unit::AuraMap const& auras = pVictim->GetAuras(); + for(Unit::AuraMap::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr) + { + if(itr->second->GetSpellProto()->Dispel == DISPEL_DISEASE) + { + found = true; + break; + } + } + + if(found) + { + // search for Glacier Rot dummy aura + Unit::AuraList const& dummyAuras = GetAurasByType(SPELL_AURA_DUMMY); + for(Unit::AuraList::const_iterator i = dummyAuras.begin(); i != dummyAuras.end(); ++i) + { + if ((*i)->GetSpellProto()->EffectMiscValue[(*i)->GetEffIndex()] == 7244) + { + DonePercent *= ((*i)->GetModifier()->m_amount+100.0f) / 100.0f; + break; + } + } + } + } + // final calculation // ================= diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 0e084b71a..8461a411f 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "9833" + #define REVISION_NR "9834" #endif // __REVISION_NR_H__