diff options
| author | megamage <none@none> | 2009-03-21 13:42:09 -0600 |
|---|---|---|
| committer | megamage <none@none> | 2009-03-21 13:42:09 -0600 |
| commit | c1a3f51f0439e1c251e58820c489694135646940 (patch) | |
| tree | 92e7d66f23e226c6ffaca5adcaebc1b6e38c553a /src/game/PetHandler.cpp | |
| parent | b6e8e8a21f84cf326c23fbbc4723a718ef822f65 (diff) | |
*Do not allow pvp in dk start zone.
*Improve petsetaction code.
--HG--
branch : trunk
Diffstat (limited to 'src/game/PetHandler.cpp')
| -rw-r--r-- | src/game/PetHandler.cpp | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/game/PetHandler.cpp b/src/game/PetHandler.cpp index a93d9961e85..ed07f169e69 100644 --- a/src/game/PetHandler.cpp +++ b/src/game/PetHandler.cpp @@ -63,12 +63,17 @@ void WorldSession::HandlePetAction( WorldPacket & recv_data ) if(pet->GetTypeId() == TYPEID_PLAYER && !(flag == ACT_COMMAND && spellid == COMMAND_ATTACK)) return; - for(ControlList::iterator itr = GetPlayer()->m_Controlled.begin(); itr != GetPlayer()->m_Controlled.end();) + if(GetPlayer()->m_Controlled.size() == 1) + HandlePetActionHelper(pet, guid1, spellid, flag, guid2); + else { - Unit *unit = *itr; - ++itr; - if(unit->GetEntry() == pet->GetEntry() && unit->isAlive()) - HandlePetActionHelper(unit, guid1, spellid, flag, guid2); + //If a pet is dismissed, m_Controlled will change + std::vector<Unit*> controlled; + for(ControlList::iterator itr = GetPlayer()->m_Controlled.begin(); itr != GetPlayer()->m_Controlled.end(); ++itr) + if((*itr)->GetEntry() == pet->GetEntry() && (*itr)->isAlive()) + controlled.push_back(*itr); + for(std::vector<Unit*>::iterator itr = controlled.begin(); itr != controlled.end(); ++itr) + HandlePetActionHelper(*itr, guid1, spellid, flag, guid2); } } |
