void GroupObject::changeLeader(Player* player) { mMasterLooter = player->getCharId(); // we create a new list containing the new hierarchy PlayerList tempList; tempList.reserve(20); tempList.push_back(player); // new leader tempList.push_back(getLeader()); // old leader // iterate trough old list PlayerList::iterator listIt = mMembers.begin() + 1; // starting at position 1 ( 0 is the old leader) while(listIt != mMembers.end()) { // if not the new leader (its in position of new list 1 already) if((*listIt) != player) { tempList.push_back((*listIt)); // add to the new list } ++listIt; } // do i need this ? =0 mMembers.empty(); // assign the new list mMembers = tempList; // recalculate member indexes resetIndexes(); // send the delta to everyone broadcastDeltaResetAll(); // send the sys message to everyone gChatMessageLib->sendGroupSystemMessage(getLeader()->getName(), BString("new_leader"), NULL, this, true); }