diff options
| author | Aokromes <Aokromes@users.noreply.github.com> | 2016-07-04 21:12:36 +0200 |
|---|---|---|
| committer | jackpoz <giacomopoz@gmail.com> | 2016-07-04 21:12:36 +0200 |
| commit | d34cce1edb818425935662582fd18cc79bb77b19 (patch) | |
| tree | 840d6a5a0575401da1ba3d54fde234bbc3416fdb | |
| parent | dd363662810e08de6fc3d67bd68305a17377682b (diff) | |
Code/Battleground Opening a game object(banner) under absorb effects … (#17459)
* Code/Battleground Opening a game object(banner) under absorb effects in battlegrounds should result an interupt
By zwerg, closes #6222
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 88c0bb38f17..2f6c68c8bb6 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -621,6 +621,17 @@ uint32 Unit::DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDam else victim->RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_TAKE_DAMAGE, 0); + // interrupt spells with SPELL_INTERRUPT_FLAG_ABORT_ON_DMG on absorbed damage (no dots) + if (!damage && damagetype != DOT && cleanDamage && cleanDamage->absorbed_damage) + if (victim != this && victim->GetTypeId() == TYPEID_PLAYER) + if (Spell* spell = victim->m_currentSpells[CURRENT_GENERIC_SPELL]) + if (spell->getState() == SPELL_STATE_PREPARING) + { + uint32 interruptFlags = spell->m_spellInfo->InterruptFlags; + if ((interruptFlags & SPELL_INTERRUPT_FLAG_ABORT_ON_DMG) != 0) + victim->InterruptNonMeleeSpells(false); + } + // We're going to call functions which can modify content of the list during iteration over it's elements // Let's copy the list so we can prevent iterator invalidation AuraEffectList vCopyDamageCopy(victim->GetAuraEffectsByType(SPELL_AURA_SHARE_DAMAGE_PCT)); |
