diff options
author | Machiavelli <none@none> | 2010-12-25 20:04:12 +0100 |
---|---|---|
committer | Machiavelli <none@none> | 2010-12-25 20:04:12 +0100 |
commit | 06d014f04d05c6afd4ebf9e644c4282c24da9112 (patch) | |
tree | dc8ec69bb5cf2c5a1dcb307f4f843a0fbc1d1f47 /src | |
parent | beb713ec62ae6c23b5e81f404ed989f2935a7277 (diff) |
Core/Spells: Remove double initialization of ¨GetAuraEffectsByType(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE)¨ in Unit::MeleeDamageBonus
Patch by gianni.elio@hotmail.it
Fixes issue #5269
--HG--
branch : trunk
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 72 |
1 files changed, 35 insertions, 37 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f9e5a5ebcf1..b09664d0d02 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -11607,51 +11607,49 @@ void Unit::MeleeDamageBonus(Unit *pVictim, uint32 *pdamage, WeaponAttackType att float TakenTotalMod = 1.0f; // ..done - AuraEffectList const &mModDamagePercentDone = GetAuraEffectsByType(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE); - for (AuraEffectList::const_iterator i = mModDamagePercentDone.begin(); i != mModDamagePercentDone.end(); ++i) - if (spellProto) - { - AuraEffectList const &mModDamagePercentDone = GetAuraEffectsByType(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE); - for (AuraEffectList::const_iterator i = mModDamagePercentDone.begin(); i != mModDamagePercentDone.end(); ++i) - if ((*i)->GetMiscValue() & GetSpellSchoolMask(spellProto)) + if (spellProto) + { + AuraEffectList const &mModDamagePercentDone = GetAuraEffectsByType(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE); + for (AuraEffectList::const_iterator i = mModDamagePercentDone.begin(); i != mModDamagePercentDone.end(); ++i) + if ((*i)->GetMiscValue() & GetSpellSchoolMask(spellProto)) + { + if ((*i)->GetSpellProto()->EquippedItemClass == -1) { - if ((*i)->GetSpellProto()->EquippedItemClass == -1) - { - AddPctN(DoneTotalMod, (*i)->GetAmount()); - } - else if (!((*i)->GetSpellProto()->AttributesEx5 & SPELL_ATTR5_SPECIAL_ITEM_CLASS_CHECK)) - { - if ((*i)->GetSpellProto()->EquippedItemClass & spellProto->EquippedItemClass) - if (((*i)->GetSpellProto()->EquippedItemSubClassMask == 0) || - ((*i)->GetSpellProto()->EquippedItemSubClassMask & spellProto->EquippedItemSubClassMask)) - AddPctN(DoneTotalMod, (*i)->GetAmount()); - } - else if (ToPlayer() && ToPlayer()->HasItemFitToSpellRequirements((*i)->GetSpellProto())) - AddPctN(DoneTotalMod, (*i)->GetAmount()); + AddPctN(DoneTotalMod, (*i)->GetAmount()); } - } - else if (ToPlayer()) - { - if (!((*i)->GetSpellProto()->AttributesEx5 & SPELL_ATTR5_SPECIAL_ITEM_CLASS_CHECK)) - { - EquipmentSlots slot; - - switch (attType) + else if (!((*i)->GetSpellProto()->AttributesEx5 & SPELL_ATTR5_SPECIAL_ITEM_CLASS_CHECK)) { - case BASE_ATTACK: slot = EQUIPMENT_SLOT_MAINHAND; break; - case OFF_ATTACK: slot = EQUIPMENT_SLOT_OFFHAND; break; - case RANGED_ATTACK: slot = EQUIPMENT_SLOT_RANGED; break; - default: return; + if ((*i)->GetSpellProto()->EquippedItemClass & spellProto->EquippedItemClass) + if (((*i)->GetSpellProto()->EquippedItemSubClassMask == 0) || + ((*i)->GetSpellProto()->EquippedItemSubClassMask & spellProto->EquippedItemSubClassMask)) + AddPctN(DoneTotalMod, (*i)->GetAmount()); } - - Item * item = ToPlayer()->GetItemByPos(INVENTORY_SLOT_BAG_0, slot); - - if (item && !item->IsBroken() && item->IsFitToSpellRequirements((*i)->GetSpellProto())) + else if (ToPlayer() && ToPlayer()->HasItemFitToSpellRequirements((*i)->GetSpellProto())) AddPctN(DoneTotalMod, (*i)->GetAmount()); } - else if (ToPlayer()->HasItemFitToSpellRequirements((*i)->GetSpellProto())) + } + else if (ToPlayer()) + { + if (!((*i)->GetSpellProto()->AttributesEx5 & SPELL_ATTR5_SPECIAL_ITEM_CLASS_CHECK)) + { + EquipmentSlots slot; + + switch (attType) + { + case BASE_ATTACK: slot = EQUIPMENT_SLOT_MAINHAND; break; + case OFF_ATTACK: slot = EQUIPMENT_SLOT_OFFHAND; break; + case RANGED_ATTACK: slot = EQUIPMENT_SLOT_RANGED; break; + default: return; + } + + Item * item = ToPlayer()->GetItemByPos(INVENTORY_SLOT_BAG_0, slot); + + if (item && !item->IsBroken() && item->IsFitToSpellRequirements((*i)->GetSpellProto())) AddPctN(DoneTotalMod, (*i)->GetAmount()); } + else if (ToPlayer()->HasItemFitToSpellRequirements((*i)->GetSpellProto())) + AddPctN(DoneTotalMod, (*i)->GetAmount()); + } AuraEffectList const &mDamageDoneVersus = GetAuraEffectsByType(SPELL_AURA_MOD_DAMAGE_DONE_VERSUS); for (AuraEffectList::const_iterator i = mDamageDoneVersus.begin(); i != mDamageDoneVersus.end(); ++i) |