diff options
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 | 
