aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/CharacterHandler.cpp
diff options
context:
space:
mode:
authorGildor <gildor55@gmail.com>2023-03-11 19:17:00 +0100
committerShauren <shauren.trinity@gmail.com>2023-08-23 18:51:38 +0200
commitf108a50abf82abd0973878ef88fdab47a408238c (patch)
tree1a6ca9d30788bda94ea10d95b11994a7b1e38f4d /src/server/game/Handlers/CharacterHandler.cpp
parent7b48268e2cfc7fddeba8fe55721aaab4234cc152 (diff)
Core/Players: Remove player from group on faction change if two side interaction group is not allowed. (#28835)
(cherry picked from commit 3dda65c53aaaf0a29eca180d8de2d825923364cc)
Diffstat (limited to 'src/server/game/Handlers/CharacterHandler.cpp')
-rw-r--r--src/server/game/Handlers/CharacterHandler.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp
index e7f44b18640..f4723aadb07 100644
--- a/src/server/game/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Handlers/CharacterHandler.cpp
@@ -38,6 +38,7 @@
#include "GameTime.h"
#include "GitRevision.h"
#include "Group.h"
+#include "GroupMgr.h"
#include "Guild.h"
#include "GuildMgr.h"
#include "Item.h"
@@ -2120,6 +2121,7 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(std::shared_ptr<WorldPa
Field* fields = result->Fetch();
uint16 atLoginFlags = fields[0].GetUInt16();
std::string knownTitlesStr = fields[1].GetString();
+ uint32 groupId = !fields[2].IsNull() ? fields[2].GetUInt32() : 0;
uint16 usedLoginFlag = (factionChangeInfo->FactionChange ? AT_LOGIN_CHANGE_FACTION : AT_LOGIN_CHANGE_RACE);
if (!(atLoginFlags & usedLoginFlag))
@@ -2348,6 +2350,12 @@ void WorldSession::HandleCharRaceOrFactionChangeCallback(std::shared_ptr<WorldPa
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