aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Spell.cpp3
-rw-r--r--src/game/Unit.cpp2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 5c1b2fc3687..54e796a8231 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -797,6 +797,9 @@ void Spell::prepareDataForTriggerSystem(AuraEffect * triggeredByAura)
if (m_spellInfo->SpellFamilyName == SPELLFAMILY_HUNTER && (m_spellInfo->SpellFamilyFlags[1] & 0x00002000 || m_spellInfo->SpellFamilyFlags[0] & 0x1C))
{
m_procAttacker |= PROC_FLAG_ON_TRAP_ACTIVATION;
+ // Trigger only from spells originally casted by hunter(trap activation) to prevent multiple trigger from trap triggered spells
+ if (m_originalCasterGUID != m_caster->GetGUID() && m_originalCasterGUID)
+ return;
}
/*
Effects which are result of aura proc from triggered spell cannot proc
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 0460413371f..a42a9de65de 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -4229,7 +4229,7 @@ void Unit::RemoveAura(AuraMap::iterator &i, AuraRemoveMode mode)
{
bool canBreak = false;
// Get mask of all aurastates from remaining auras
- for(AuraStateAurasMap::iterator itr = m_auraStateAuras.lower_bound(auraState); itr != m_auraStateAuras.upper_bound(auraState) || !(auraStateFound && canBreak);)
+ for(AuraStateAurasMap::iterator itr = m_auraStateAuras.lower_bound(auraState); itr != m_auraStateAuras.upper_bound(auraState) && !(auraStateFound && canBreak);)
{
if (itr->second == Aur)
{