aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMachiavelli <none@none>2010-12-25 20:04:12 +0100
committerMachiavelli <none@none>2010-12-25 20:04:12 +0100
commit06d014f04d05c6afd4ebf9e644c4282c24da9112 (patch)
treedc8ec69bb5cf2c5a1dcb307f4f843a0fbc1d1f47
parentbeb713ec62ae6c23b5e81f404ed989f2935a7277 (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
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp72
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)