aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Server')
-rw-r--r--src/server/game/Server/Protocol/Handlers/GroupHandler.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp b/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp
index 29178465ec3..bcefc763ae2 100644
--- a/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/GroupHandler.cpp
@@ -534,8 +534,10 @@ void WorldSession::HandleGroupChangeSubGroupOpcode(WorldPacket & recv_data)
std::string name;
uint8 groupNr;
recv_data >> name;
-
recv_data >> groupNr;
+
+ if (groupNr >= MAX_RAID_SUBGROUPS)
+ return;
/** error handling **/
uint64 senderGuid = GetPlayer()->GetGUID();
@@ -546,16 +548,18 @@ void WorldSession::HandleGroupChangeSubGroupOpcode(WorldPacket & recv_data)
return;
/********************/
- Player *movedPlayer=objmgr.GetPlayer(name.c_str());
- if (!movedPlayer)
- return;
-
- //Do not allow leader to change group of player in combat
- if (movedPlayer->isInCombat())
- return;
+ Player *movedPlayer = objmgr.GetPlayer(name.c_str());
+ if (movedPlayer)
+ {
+ //Do not allow leader to change group of player in combat
+ if (movedPlayer->isInCombat())
+ return;
- // everything's fine, do it
- group->ChangeMembersGroup(movedPlayer, groupNr);
+ // everything's fine, do it
+ group->ChangeMembersGroup(movedPlayer, groupNr);
+ }
+ else
+ group->ChangeMembersGroup(objmgr.GetPlayerGUIDByName(name.c_str()), groupNr);
}
void WorldSession::HandleGroupAssistantLeaderOpcode(WorldPacket & recv_data)