diff options
| author | Gildor <gildor55@gmail.com> | 2023-03-11 19:17:00 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-03-11 19:17:00 +0100 |
| commit | 3dda65c53aaaf0a29eca180d8de2d825923364cc (patch) | |
| tree | 4dab68e12daf7f2c0d649a95dcee286f82f5ea9f /src/server/game/Handlers/CharacterHandler.cpp | |
| parent | 13fa60ab86c6338f034823fbd49a90baedd3ab58 (diff) | |
Core/Players: Remove player from group on faction change if two side interaction group is not allowed. (#28835)
Diffstat (limited to 'src/server/game/Handlers/CharacterHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/CharacterHandler.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index f6e51d9aeb7..e0f8f095ecb 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -27,6 +27,7 @@ #include "GameTime.h" #include "GitRevision.h" #include "Group.h" +#include "GroupMgr.h" #include "Guild.h" #include "GuildMgr.h" #include "InstanceSaveMgr.h" @@ -1673,6 +1674,7 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact Field* fields = result->Fetch(); uint32 atLoginFlags = fields[0].GetUInt16(); std::string knownTitlesStr = fields[1].GetString(); + uint32 groupId = !fields[2].IsNull() ? fields[2].GetUInt32() : 0; uint32 usedLoginFlag = (factionChangeInfo->FactionChange ? AT_LOGIN_CHANGE_FACTION : AT_LOGIN_CHANGE_RACE); if (!(atLoginFlags & usedLoginFlag)) @@ -1881,6 +1883,12 @@ void WorldSession::HandleCharFactionOrRaceChangeCallback(std::shared_ptr<Charact Player::LeaveAllArenaTeams(factionChangeInfo->Guid); } + if (groupId && !sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP)) + { + if (Group* group = sGroupMgr->GetGroupByDbStoreId(groupId)) + group->RemoveMember(factionChangeInfo->Guid); + } + if (!HasPermission(rbac::RBAC_PERM_TWO_SIDE_ADD_FRIEND)) { // Delete Friend List |
