diff options
-rw-r--r-- | src/game/Player.h | 1 | ||||
-rw-r--r-- | src/game/Spell.cpp | 3 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 21 |
3 files changed, 9 insertions, 16 deletions
diff --git a/src/game/Player.h b/src/game/Player.h index 7cedab880f2..9ba6c94ae24 100644 --- a/src/game/Player.h +++ b/src/game/Player.h @@ -2378,6 +2378,7 @@ template <class T> T Player::ApplySpellMod(uint32 spellId, SpellModOp op, T &bas if (mod->charges > 0 ) { + if( !(spellInfo->SpellFamilyName == 8 && spellInfo->SpellFamilyFlags & 0x200000000LL) ) --mod->charges; if (mod->charges == 0) { diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index dd63041e63c..dbd0a74dc76 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -656,6 +656,9 @@ void Spell::prepareDataForTriggerSystem() case SPELLFAMILY_PALADIN: // For Holy Shock triggers need do it if (m_spellInfo->SpellFamilyFlags & 0x0001000000200000LL) m_canTrigger = true; break; + case SPELLFAMILY_ROGUE: // mutilate mainhand + offhand + if (m_spellInfo->SpellFamilyFlags & 0x600000000LL) m_canTrigger = true; + break; } } // Do not trigger from item cast spell diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index c974d835618..750130984eb 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -4160,26 +4160,15 @@ void Spell::SpellDamageWeaponDmg(uint32 i) // Mutilate (for each hand) else if(m_spellInfo->SpellFamilyFlags & 0x600000000LL) { - bool found = false; - // fast check - if(unitTarget->HasAuraState(AURA_STATE_DEADLY_POISON)) - found = true; - // full aura scan - else + Unit::AuraMap const& auras = unitTarget->GetAuras(); + for(Unit::AuraMap::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr) { - Unit::AuraMap const& auras = unitTarget->GetAuras(); - for(Unit::AuraMap::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr) + if(itr->second->GetSpellProto()->Dispel == DISPEL_POISON) { - if(itr->second->GetSpellProto()->Dispel == DISPEL_POISON) - { - found = true; - break; - } + totalDamagePercentMod *= 1.5f; // 150% if poisoned + break; } } - - if(found) - totalDamagePercentMod *= 1.5f; // 150% if poisoned } break; } |