aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game/SpellMgr.cpp24
-rw-r--r--src/game/SpellMgr.h3
-rw-r--r--src/game/Unit.cpp11
3 files changed, 24 insertions, 14 deletions
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
index 0d39c6cf336..67e6380d5ea 100644
--- a/src/game/SpellMgr.cpp
+++ b/src/game/SpellMgr.cpp
@@ -354,22 +354,19 @@ SpellSpecific GetSpellSpecific(uint32 spellId)
uint32 firstSpell = spellmgr.GetFirstSpellInChain(spellInfo->Id);
switch (firstSpell)
{
- // Strength
- case 8118:
- // Stamina
- case 8099:
- // Spirit
- case 8112:
- //Intellect
- case 8096:
- // Agility
- case 8115:
- // Armor
- case 8091:
+ case 8118: // Strength
+ case 8099: // Stamina
+ case 8112: // Spirit
+ case 8096: // Intellect
+ case 8115: // Agility
+ case 8091: // Armor
return SPELL_SCROLL;
+ case 12880: // Enrage
+ case 12292: // Death Wish
+ return SPELL_WARRIOR_ENRAGE;
}
- break;
}
+ break;
}
case SPELLFAMILY_MAGE:
{
@@ -514,6 +511,7 @@ bool IsSingleFromSpellSpecificPerTarget(uint32 spellSpec1,uint32 spellSpec2)
case SPELL_FOOD:
case SPELL_CHARM:
case SPELL_SCROLL:
+ case SPELL_WARRIOR_ENRAGE:
case SPELL_MAGE_ARCANE_BRILLANCE:
return spellSpec1==spellSpec2;
case SPELL_BATTLE_ELIXIR:
diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h
index c3174a05e7c..13973e25120 100644
--- a/src/game/SpellMgr.h
+++ b/src/game/SpellMgr.h
@@ -139,7 +139,8 @@ enum SpellSpecific
SPELL_PRESENCE = 21,
SPELL_CHARM = 22,
SPELL_SCROLL = 23,
- SPELL_MAGE_ARCANE_BRILLANCE = 24
+ SPELL_MAGE_ARCANE_BRILLANCE = 24,
+ SPELL_WARRIOR_ENRAGE = 25,
};
#define SPELL_LINKED_MAX_SPELLS 200000
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 21f34d49ac3..18fe23728ca 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -6864,6 +6864,17 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig
Item* castItem = triggeredByAura->GetParentAura()->GetCastItemGUID() && GetTypeId()==TYPEID_PLAYER
? ((Player*)this)->GetItemByGuid(triggeredByAura->GetParentAura()->GetCastItemGUID()) : NULL;
+
+ AuraMap::iterator i,next;
+ for (i = m_Auras.begin(); i != m_Auras.end(); i = next)
+ {
+ next = i;
+ ++next;
+ if (!(*i).second) continue;
+ if ( (*i).second->GetSpellProto()->Id == trigger_spell_id) continue;
+ if (spellmgr.IsNoStackSpellDueToSpell(trigger_spell_id, (*i).second->GetSpellProto()->Id, (pVictim == this)))
+ return false;
+ }
// Try handle unknown trigger spells
if (sSpellStore.LookupEntry(trigger_spell_id)==NULL)