diff --git a/src/game/Group.cpp b/src/game/Group.cpp index 4090d91..3fc43fb 100644 --- a/src/game/Group.cpp +++ b/src/game/Group.cpp @@ -290,6 +290,16 @@ bool Group::AddMember(const uint64 &guid, const char* name) player->SendRaidDifficulty(true); } } + // Group Interfactions interactions (test) + if(sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GROUP)) + { + Group *group = player->GetGroup(); + if(Player *leader = sObjectMgr.GetPlayer(group->GetLeaderGUID())) + { + player->setFactionForRace(leader->getRace()); + sLog.outDebug( "WORLD: Group Interfaction Interactions - Faction changed (AddMember)" ); + } + } } player->SetGroupUpdateFlag(GROUP_UPDATE_FULL); UpdatePlayerOutOfRange(player); @@ -336,6 +346,12 @@ uint32 Group::RemoveMember(const uint64 &guid, const uint8 &method) player->GetSession()->SendPacket(&data); } + // Restore original faction if needed + if(sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GROUP)) + { + player->setFactionForRace(player->getRace()); + sLog.outDebug( "WORLD: Group Interfaction Interactions - Restore original faction (RemoveMember)" ); + } _homebindIfInstance(player); } @@ -391,6 +407,12 @@ void Group::Disband(bool hideDestroy) player->SetOriginalGroup(NULL); else player->SetGroup(NULL); + // Restore original faction if needed + if(sWorld.getConfig(CONFIG_BOOL_ALLOW_TWO_SIDE_INTERACTION_GROUP)) + { + player->setFactionForRace(player->getRace()); + sLog.outDebug( "WORLD: Group Interfaction Interactions - Restore original faction (Disband)" ); + } } // quest related GO state dependent from raid membership