aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/SpellAuras.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 6d3b9bb5424..ea3746e8b46 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -744,7 +744,25 @@ void AreaAuraEffect::Update(uint32 diff)
for(std::list<Unit *>::iterator tIter = targets.begin(); tIter != targets.end(); tIter++)
{
- if((*tIter)->HasAuraEffect(GetId(), GetEffIndex(), caster->GetGUID()))
+ bool skip=false;
+ for(Unit::AuraMap::iterator iter = (*tIter)->GetAuras().begin(); iter != (*tIter)->GetAuras().end();++iter)
+ {
+ bool samecaster = iter->second->GetCasterGUID() == GetCasterGUID();
+ if (samecaster && iter->first == GetId())
+ {
+ if (AuraEffect * aurEff = iter->second->GetPartAura(m_effIndex))
+ {
+ skip=true;
+ }
+ break;
+ }
+ if (spellmgr.IsNoStackSpellDueToSpell(GetId(), iter->first,samecaster))
+ {
+ skip=true;
+ break;
+ }
+ }
+ if(skip)
continue;
if(SpellEntry const *actualSpellInfo = spellmgr.SelectAuraRankForPlayerLevel(GetSpellProto(), (*tIter)->getLevel()))