Skip to content

Instantly share code, notes, and snippets.

@cyberium
Created May 16, 2016 14:07
Show Gist options
  • Save cyberium/4fb09c447a2a91c4ebc57408dda4aaf9 to your computer and use it in GitHub Desktop.
Save cyberium/4fb09c447a2a91c4ebc57408dda4aaf9 to your computer and use it in GitHub Desktop.
void Unit::RemoveAurasOnCast(SpellEntry const* castedSpellEntry)
{
for (SpellAuraHolderMap::iterator iter = m_spellAuraHolders.begin(); iter != m_spellAuraHolders.end();)
{
SpellAuraHolder* holder = iter->second;
SpellEntry const* spellEntry = holder->GetSpellProto();
bool removeThisHolder = false;
if (spellEntry->AuraInterruptFlags & AURA_INTERRUPT_FLAG_UNK2)
{
if (castedSpellEntry->HasAttribute(SPELL_ATTR_EX_NOT_BREAK_STEALTH))
{
bool foundStealth = false;
for (int32 i = 0; i < MAX_EFFECT_INDEX; ++i)
{
if (Aura* aura = holder->m_auras[i])
{
if (aura->GetModifier()->m_auraname == SPELL_AURA_MOD_STEALTH)
{
foundStealth = true;
break;
}
}
}
removeThisHolder = !foundStealth;
}
else
removeThisHolder = true;
}
if (removeThisHolder)
{
RemoveSpellAuraHolder(iter->second);
iter = m_spellAuraHolders.begin();
}
else
++iter;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment