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/Groups/Group.cpp | |
| 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/Groups/Group.cpp')
| -rw-r--r-- | src/server/game/Groups/Group.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 99c5d610e64..ccfd4845dc3 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -34,6 +34,7 @@ #include "Util.h" #include "LFGMgr.h" #include "UpdateFieldFlags.h" +#include "SpellAuras.h" Roll::Roll(ObjectGuid _guid, LootItem const& li) : itemGUID(_guid), itemid(li.itemid), itemRandomPropId(li.randomPropertyId), itemRandomSuffix(li.randomSuffix), itemCount(li.count), @@ -484,6 +485,22 @@ bool Group::RemoveMember(ObjectGuid guid, const RemoveMethod& method /*= GROUP_R sScriptMgr->OnGroupRemoveMember(this, guid, method, kicker, reason); + Player* player = ObjectAccessor::FindConnectedPlayer(guid); + if (player) + { + for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next()) + { + if (Player* groupMember = itr->GetSource()) + { + if (groupMember->GetGUID() == guid) + continue; + + groupMember->RemoveAllGroupBuffsFromCaster(guid); + player->RemoveAllGroupBuffsFromCaster(groupMember->GetGUID()); + } + } + } + // LFG group vote kick handled in scripts if (isLFGGroup() && method == GROUP_REMOVEMETHOD_KICK) return !m_memberSlots.empty(); @@ -491,7 +508,6 @@ bool Group::RemoveMember(ObjectGuid guid, const RemoveMethod& method /*= GROUP_R // remove member and change leader (if need) only if strong more 2 members _before_ member remove (BG/BF allow 1 member group) if (GetMembersCount() > ((isBGGroup() || isLFGGroup() || isBFGroup()) ? 1u : 2u)) { - Player* player = ObjectAccessor::FindConnectedPlayer(guid); if (player) { // Battleground group handling |
