diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Spell.cpp | 3 | ||||
-rw-r--r-- | src/game/Unit.cpp | 2 |
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) { |