aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorraczman <none@none>2009-03-21 14:34:03 +0100
committerraczman <none@none>2009-03-21 14:34:03 +0100
commitc6860a28f6593698eedaaa2f98b39f1efd6bd74a (patch)
tree2988d686330bfb9078ea007f2e969e396994a8a3
parentf5116e0e7864d593930d1404d5b4d9316553ee42 (diff)
Mutilate fix - by _krz.
--HG-- branch : trunk
-rw-r--r--src/game/Player.h1
-rw-r--r--src/game/Spell.cpp3
-rw-r--r--src/game/SpellEffects.cpp21
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;
}