diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 261412365..ad3c956ee 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -7254,33 +7254,45 @@ uint32 Unit::MeleeDamageBonusDone(Unit *pVictim, uint32 pdamage,WeaponAttackType } } - // Frost Strike - if (spellProto && spellProto->SpellFamilyName == SPELLFAMILY_DEATHKNIGHT && spellProto->SpellFamilyFlags & UI64LIT(0x0000000400000000)) + if (spellProto) { - // search disease - bool found = false; - Unit::SpellAuraHolderMap const& auras = pVictim->GetSpellAuraHolderMap(); - for(Unit::SpellAuraHolderMap::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr) + // Frost Strike + if (spellProto->SpellFamilyName == SPELLFAMILY_DEATHKNIGHT && spellProto->SpellFamilyFlags & UI64LIT(0x0000000400000000)) { - if(itr->second->GetSpellProto()->Dispel == DISPEL_DISEASE) + // search disease + bool found = false; + Unit::SpellAuraHolderMap const& auras = pVictim->GetSpellAuraHolderMap(); + for(Unit::SpellAuraHolderMap::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr) { - 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) + if(itr->second->GetSpellProto()->Dispel == DISPEL_DISEASE) { - DonePercent *= ((*i)->GetModifier()->m_amount+100.0f) / 100.0f; + 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; + } + } + } + } + // Glyph of Steady Shot (Steady Shot check) + else if (spellProto->SpellFamilyName == SPELLFAMILY_HUNTER && spellProto->SpellFamilyFlags & UI64LIT(0x0000000100000000)) + { + // search for glyph dummy aura + if (Aura *aur = GetDummyAura(56826)) + // check for Serpent Sting + if (Aura *serpentSting = pVictim->GetAura(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_HUNTER, UI64LIT(0x0000000000004000))) + DonePercent *= (aur->GetModifier()->m_amount+100.0f) / 100.0f; } } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 2822e1b9c..c6881240a 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 "10641" + #define REVISION_NR "10642" #endif // __REVISION_NR_H__