mirror of
https://github.com/araxiaonline/TrinityCore2.git
synced 2026-06-18 13:59:39 -04:00
*Fix the bug that totem can only apply the first aura effect.
--HG-- branch : trunk
This commit is contained in:
+2
-2
@@ -1188,8 +1188,8 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit *unit, const uint32 effectMask)
|
||||
|
||||
if (aura_effmask)
|
||||
{
|
||||
Unit * caster = m_originalCaster ? m_originalCaster : m_caster;
|
||||
Aura * Aur= new Aura(m_spellInfo, aura_effmask, &m_currentBasePoints[0], unit, caster , m_CastItem, m_caster);
|
||||
Unit * caster = m_originalCaster ? m_originalCaster : m_caster;
|
||||
Aura * Aur = new Aura(m_spellInfo, aura_effmask, m_currentBasePoints, unit, caster, m_CastItem, m_caster);
|
||||
|
||||
if (!Aur->IsAreaAura())
|
||||
{
|
||||
|
||||
+19
-19
@@ -721,28 +721,28 @@ void AreaAuraEffect::Update(uint32 diff)
|
||||
}
|
||||
}
|
||||
|
||||
for(std::list<Unit *>::iterator tIter = targets.begin(); tIter != targets.end(); tIter++)
|
||||
for(std::list<Unit*>::iterator tIter = targets.begin(); tIter != targets.end(); tIter++)
|
||||
{
|
||||
bool skip=false;
|
||||
for(Unit::AuraMap::iterator iter = (*tIter)->GetAuras().begin(); iter != (*tIter)->GetAuras().end();++iter)
|
||||
if(Aura *aur = (*tIter)->GetAura(GetId(), m_formalCasterGUID))
|
||||
{
|
||||
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(aur->HasEffect(GetEffIndex()))
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
bool skip = false;
|
||||
for(Unit::AuraMap::iterator iter = (*tIter)->GetAuras().begin(); iter != (*tIter)->GetAuras().end();++iter)
|
||||
{
|
||||
bool samecaster = iter->second->GetCasterGUID() == m_formalCasterGUID;
|
||||
if(spellmgr.IsNoStackSpellDueToSpell(GetId(), iter->first, samecaster))
|
||||
{
|
||||
skip = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(skip)
|
||||
continue;
|
||||
}
|
||||
if(skip)
|
||||
continue;
|
||||
|
||||
if(SpellEntry const *actualSpellInfo = spellmgr.SelectAuraRankForPlayerLevel(GetSpellProto(), (*tIter)->getLevel()))
|
||||
{
|
||||
|
||||
+3
-1
@@ -4306,7 +4306,7 @@ bool Unit::HasAura(Aura * aur) const
|
||||
bool Unit::HasAuraEffect(uint32 spellId, uint8 effIndex, uint64 caster) const
|
||||
{
|
||||
if (Aura * aur = GetAura(spellId, caster))
|
||||
return bool(aur->HasEffect(effIndex));
|
||||
return aur->HasEffect(effIndex);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -13615,6 +13615,8 @@ Aura * Unit::AddAuraEffect(const SpellEntry * spellInfo, uint8 effIndex, Unit* c
|
||||
// can't do that for passive auras - they stack from same caster so there is no way to get exact aura which should get effect
|
||||
//assert (!IsPassiveSpell(spellInfo));
|
||||
|
||||
sLog.outDebug("AddAuraEffect: spell id: %u, effect index: %u", spellInfo->Id, (uint32)effIndex);
|
||||
|
||||
Aura *aur = GetAura(spellInfo->Id, caster->GetGUID());
|
||||
|
||||
if (aur)
|
||||
|
||||
Reference in New Issue
Block a user