Core/Groups: Add kicker and kick reason to RemoveMember
--HG-- branch : trunk
This commit is contained in:
@@ -2593,11 +2593,11 @@ void Player::UninviteFromGroup()
|
||||
}
|
||||
}
|
||||
|
||||
void Player::RemoveFromGroup(Group* group, uint64 guid, RemoveMethod method /* = GROUP_REMOVEMETHOD_DEFAULT*/)
|
||||
void Player::RemoveFromGroup(Group* group, uint64 guid, RemoveMethod method /* = GROUP_REMOVEMETHOD_DEFAULT*/, uint64 kicker /* = 0 */, const char* reason /* = NULL */)
|
||||
{
|
||||
if (group)
|
||||
{
|
||||
if (group->RemoveMember(guid, method) <= 1)
|
||||
if (group->RemoveMember(guid, method, kicker, reason) <= 1)
|
||||
{
|
||||
// group->Disband(); already disbanded in RemoveMember
|
||||
sObjectMgr.RemoveGroup(group);
|
||||
|
||||
@@ -1710,7 +1710,7 @@ class Player : public Unit, public GridObject<Player>
|
||||
bool IsInSameGroupWith(Player const* p) const;
|
||||
bool IsInSameRaidWith(Player const* p) const { return p == this || (GetGroup() != NULL && GetGroup() == p->GetGroup()); }
|
||||
void UninviteFromGroup();
|
||||
static void RemoveFromGroup(Group* group, uint64 guid, RemoveMethod method = GROUP_REMOVEMETHOD_DEFAULT);
|
||||
static void RemoveFromGroup(Group* group, uint64 guid, RemoveMethod method = GROUP_REMOVEMETHOD_DEFAULT, uint64 kicker = 0 , const char* reason = NULL);
|
||||
void RemoveFromGroup(RemoveMethod method = GROUP_REMOVEMETHOD_DEFAULT) { RemoveFromGroup(GetGroup(),GetGUID(), method); }
|
||||
void SendUpdateToOutOfRangeGroupMembers();
|
||||
|
||||
|
||||
@@ -354,11 +354,11 @@ bool Group::AddMember(const uint64 &guid, const char* name)
|
||||
return true;
|
||||
}
|
||||
|
||||
uint32 Group::RemoveMember(const uint64 &guid, const RemoveMethod &method)
|
||||
uint32 Group::RemoveMember(const uint64 &guid, const RemoveMethod &method /* = GROUP_REMOVEMETHOD_DEFAULT */, uint64 kicker /* = 0 */, const char* reason /* = NULL */)
|
||||
{
|
||||
BroadcastGroupUpdate();
|
||||
|
||||
sScriptMgr.OnGroupRemoveMember(this, guid, method);
|
||||
sScriptMgr.OnGroupRemoveMember(this, guid, method, kicker, reason);
|
||||
|
||||
// remove member and change leader (if need) only if strong more 2 members _before_ member remove (BG allow 1 member group)
|
||||
if (GetMembersCount() > (isBGGroup() ? 1u : 2u))
|
||||
|
||||
@@ -196,7 +196,7 @@ class Group
|
||||
void RemoveAllInvites();
|
||||
bool AddLeaderInvite(Player *player);
|
||||
bool AddMember(const uint64 &guid, const char* name);
|
||||
uint32 RemoveMember(const uint64 &guid, const RemoveMethod &method = GROUP_REMOVEMETHOD_DEFAULT);
|
||||
uint32 RemoveMember(const uint64 &guid, const RemoveMethod &method = GROUP_REMOVEMETHOD_DEFAULT, uint64 kicker = 0, const char* reason = NULL);
|
||||
void ChangeLeader(const uint64 &guid);
|
||||
void SetLootMethod(LootMethod method) { m_lootMethod = method; }
|
||||
void SetLooterGuid(const uint64 &guid) { m_looterGuid = guid; }
|
||||
|
||||
@@ -1267,10 +1267,10 @@ void ScriptMgr::OnGroupInviteMember(Group* group, uint64 guid)
|
||||
FOREACH_SCRIPT(GroupScript)->OnInviteMember(group, guid);
|
||||
}
|
||||
|
||||
void ScriptMgr::OnGroupRemoveMember(Group* group, uint64 guid, RemoveMethod method)
|
||||
void ScriptMgr::OnGroupRemoveMember(Group* group, uint64 guid, RemoveMethod method, uint64 kicker, const char* reason)
|
||||
{
|
||||
ASSERT(group);
|
||||
FOREACH_SCRIPT(GroupScript)->OnRemoveMember(group, guid, method);
|
||||
FOREACH_SCRIPT(GroupScript)->OnRemoveMember(group, guid, method, kicker, reason);
|
||||
}
|
||||
|
||||
void ScriptMgr::OnGroupChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid)
|
||||
|
||||
@@ -748,7 +748,7 @@ public:
|
||||
|
||||
virtual void OnAddMember(Group* /*group*/, uint64 /*guid*/) { }
|
||||
virtual void OnInviteMember(Group* /*group*/, uint64 /*guid*/) { }
|
||||
virtual void OnRemoveMember(Group* /*group*/, uint64 /*guid*/, RemoveMethod& /*method*/) { }
|
||||
virtual void OnRemoveMember(Group* /*group*/, uint64 /*guid*/, RemoveMethod& /*method*/, uint64 /*kicker*/, const char* /*reason*/) { }
|
||||
virtual void OnChangeLeader(Group* /*group*/, uint64 /*newLeaderGuid*/, uint64 /*oldLeaderGuid*/) { }
|
||||
virtual void OnDisband(Group* /*group*/) { }
|
||||
};
|
||||
@@ -965,7 +965,7 @@ class ScriptMgr
|
||||
public: /* GroupScript */
|
||||
void OnGroupAddMember(Group* group, uint64 guid);
|
||||
void OnGroupInviteMember(Group* group, uint64 guid);
|
||||
void OnGroupRemoveMember(Group* group, uint64 guid, RemoveMethod method);
|
||||
void OnGroupRemoveMember(Group* group, uint64 guid, RemoveMethod method, uint64 kicker, const char* reason);
|
||||
void OnGroupChangeLeader(Group* group, uint64 newLeaderGuid, uint64 oldLeaderGuid);
|
||||
void OnGroupDisband(Group* group);
|
||||
|
||||
|
||||
@@ -281,7 +281,7 @@ void WorldSession::HandleGroupUninviteGuidOpcode(WorldPacket & recv_data)
|
||||
if (grp->isLFGGroup())
|
||||
sLFGMgr.InitBoot(grp, GUID_LOPART(GetPlayer()->GetGUID()), GUID_LOPART(guid), reason);
|
||||
else
|
||||
Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK);
|
||||
Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID(), reason.c_str());
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -326,7 +326,7 @@ void WorldSession::HandleGroupUninviteOpcode(WorldPacket & recv_data)
|
||||
if (grp->isLFGGroup())
|
||||
sLFGMgr.InitBoot(grp, GUID_LOPART(GetPlayer()->GetGUID()), GUID_LOPART(guid), "");
|
||||
else
|
||||
Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK);
|
||||
Player::RemoveFromGroup(grp, guid, GROUP_REMOVEMETHOD_KICK, GetPlayer()->GetGUID());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -51,10 +51,10 @@ public:
|
||||
sLFGMgr.Leave(plr);
|
||||
}
|
||||
|
||||
void OnRemoveMember(Group* group, uint64 guid, RemoveMethod& method)
|
||||
void OnRemoveMember(Group* group, uint64 guid, RemoveMethod& method, uint64 kicker, const char* reason)
|
||||
{
|
||||
uint64 gguid = group->GetGUID();
|
||||
sLog.outDebug("OnRemoveMember [" UI64FMTD "]: remove [" UI64FMTD "] Method: %d", gguid, guid, method);
|
||||
sLog.outDebug("OnRemoveMember [" UI64FMTD "]: remove [" UI64FMTD "] Method: %d Kicker: [" UI64FMTD "] Reason: %s", gguid, guid, method, kicker, (reason ? reason : ""));
|
||||
if (!gguid)
|
||||
return;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user