bool Group::AddMember(ObjectGuid guid, const char* name) { if (!_addMember(guid, name)) return false; SendUpdate(); if (Player* player = sObjectMgr.GetPlayer(guid)) { if (!IsLeader(player->GetObjectGuid()) && !isBGGroup()) { // reset the new member's instances, unless he is currently in one of them // including raid instances that they are not permanently bound to! player->ResetInstances(INSTANCE_RESET_GROUP_JOIN); } player->SetGroupUpdateFlag(GROUP_UPDATE_FULL); UpdatePlayerOutOfRange(player); // quest related GO state dependent from raid membership if (isRaidGroup()) player->UpdateForQuestWorldObjects(); } return true; }
bool Group::AddMember(ObjectGuid guid, const char* name) { if (!_addMember(guid, name)) return false; SendUpdate(); if (Player* player = sObjectMgr.GetPlayer(guid)) { if (!IsLeader(player->GetObjectGuid()) && !isBGGroup()) { // reset the new member's instances, unless he is currently in one of them // including raid/heroic instances that they are not permanently bound to! player->ResetInstances(INSTANCE_RESET_GROUP_JOIN); if (player->getLevel() >= LEVELREQUIREMENT_HEROIC && player->GetDifficulty() != GetDifficulty()) { player->SetDifficulty(GetDifficulty()); player->SendDungeonDifficulty(true); } } player->SetGroupUpdateFlag(GROUP_UPDATE_FULL); UpdatePlayerOutOfRange(player); // used by eluna GlobalEluna(OnAddMember(this, player->GetObjectGuid())); // quest related GO state dependent from raid membership if (isRaidGroup()) player->UpdateForQuestWorldObjects(); } return true; }
bool Group::AddMember(const uint64 &guid, const char* name) { if(!_addMember(guid, name)) return false; SendUpdate(); return true; }
bool Group::_addMember(const uint64 &guid, const char* name, bool isAssistant) { // get first not-full group uint8 groupid = 0; vector<uint8> temp(MAXRAIDSIZE/MAXGROUPSIZE); for(int i=0; i<m_members.size(); i++) { temp[m_members[i].group]++; if(temp[groupid] >= MAXGROUPSIZE) groupid++; } return _addMember(guid, name, isAssistant, groupid); }
bool Group::_addMember(ObjectGuid guid, const char* name, bool isAssistant) { // get first not-full group uint8 groupid = 0; if (m_subGroupsCounts) { bool groupFound = false; for (; groupid < MAX_RAID_SUBGROUPS; ++groupid) { if (m_subGroupsCounts[groupid] < MAX_GROUP_SIZE) { groupFound = true; break; } } // We are raid group and no one slot is free if (!groupFound) return false; } return _addMember(guid, name, isAssistant, groupid); }