Core/Spells: Fixed Rapid Fire being interrupted by Auto Shot
This commit is contained in:
@@ -3307,8 +3307,10 @@ bool Unit::IsNonMeleeSpellCast(bool withDelayed, bool skipChanneled /*= false*/,
|
|||||||
if (!skipChanneled && m_currentSpells[CURRENT_CHANNELED_SPELL] &&
|
if (!skipChanneled && m_currentSpells[CURRENT_CHANNELED_SPELL] &&
|
||||||
(m_currentSpells[CURRENT_CHANNELED_SPELL]->getState() != SPELL_STATE_FINISHED))
|
(m_currentSpells[CURRENT_CHANNELED_SPELL]->getState() != SPELL_STATE_FINISHED))
|
||||||
{
|
{
|
||||||
if ((!isAutoshoot || !m_currentSpells[CURRENT_CHANNELED_SPELL]->m_spellInfo->HasAttribute(SPELL_ATTR2_DO_NOT_RESET_COMBAT_TIMERS)) &&
|
SpellInfo const* channeledSpellInfo = m_currentSpells[CURRENT_CHANNELED_SPELL]->m_spellInfo;
|
||||||
(!skipChanneledAllowingActions || !m_currentSpells[CURRENT_CHANNELED_SPELL]->m_spellInfo->HasAttribute(SPELL_ATTR5_ALLOW_ACTIONS_DURING_CHANNEL)))
|
|
||||||
|
if ((!isAutoshoot || !channeledSpellInfo->HasAttribute(SPELL_ATTR2_DO_NOT_RESET_COMBAT_TIMERS) || channeledSpellInfo->HasChannelInterruptFlag(SpellAuraInterruptFlags::Action | SpellAuraInterruptFlags::ActionDelayed)) &&
|
||||||
|
(!skipChanneledAllowingActions || !channeledSpellInfo->HasAttribute(SPELL_ATTR5_ALLOW_ACTIONS_DURING_CHANNEL)))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// autorepeat spells may be finished or delayed, but they are still considered cast
|
// autorepeat spells may be finished or delayed, but they are still considered cast
|
||||||
@@ -4389,7 +4391,7 @@ void Unit::RemoveAurasWithInterruptFlags(InterruptFlags flag, SpellInfo const* s
|
|||||||
&& spell->GetSpellInfo()->HasChannelInterruptFlag(flag)
|
&& spell->GetSpellInfo()->HasChannelInterruptFlag(flag)
|
||||||
&& (!source || spell->GetSpellInfo()->Id != source->Id)
|
&& (!source || spell->GetSpellInfo()->Id != source->Id)
|
||||||
&& !IsInterruptFlagIgnoredForSpell(flag, this, spell->GetSpellInfo(), true, source))
|
&& !IsInterruptFlagIgnoredForSpell(flag, this, spell->GetSpellInfo(), true, source))
|
||||||
InterruptNonMeleeSpells(false);
|
InterruptSpell(CURRENT_CHANNELED_SPELL, false, false);
|
||||||
|
|
||||||
UpdateInterruptMask();
|
UpdateInterruptMask();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user