diff options
| author | robinsch <robinsch@users.noreply.github.com> | 2016-08-14 17:26:03 +0200 |
|---|---|---|
| committer | jackpoz <giacomopoz@gmail.com> | 2016-08-14 17:26:03 +0200 |
| commit | dd67f4ed966875e6e68f6b0a8d56cdf190d0f352 (patch) | |
| tree | d84f52049f3942bf744782896c97b0f8cac8115e /src/server/game/Entities | |
| parent | c515cdc636beefa83bb1a022a18f34ca053dcd53 (diff) | |
Core/Spell: Remove all raid auras on party leave (#17663)
Core/Spell: Remove all raid auras on party leave
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 14 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 1 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 68625c175b6..a3e20b7c07d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -4289,6 +4289,20 @@ void Unit::RemoveAllAurasExceptType(AuraType type1, AuraType type2) } } +void Unit::RemoveAllGroupBuffsFromCaster(ObjectGuid casterGUID) +{ + for (AuraMap::iterator iter = m_ownedAuras.begin(); iter != m_ownedAuras.end();) + { + Aura* aura = iter->second; + if (aura->GetCasterGUID() == casterGUID && aura->GetSpellInfo()->IsGroupBuff()) + { + RemoveOwnedAura(iter); + continue; + } + ++iter; + } +} + void Unit::DelayOwnedAuras(uint32 spellId, ObjectGuid caster, int32 delaytime) { AuraMapBoundsNonConst range = m_ownedAuras.equal_range(spellId); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 0f48f31b9c0..4589ec9a180 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1760,6 +1760,7 @@ class TC_GAME_API Unit : public WorldObject void RemoveAllAurasRequiringDeadTarget(); void RemoveAllAurasExceptType(AuraType type); void RemoveAllAurasExceptType(AuraType type1, AuraType type2); /// @todo: once we support variadic templates use them here + void RemoveAllGroupBuffsFromCaster(ObjectGuid casterGUID); void DelayOwnedAuras(uint32 spellId, ObjectGuid caster, int32 delaytime); void _RemoveAllAuraStatMods(); |
