aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2009-03-21 13:42:09 -0600
committermegamage <none@none>2009-03-21 13:42:09 -0600
commitc1a3f51f0439e1c251e58820c489694135646940 (patch)
tree92e7d66f23e226c6ffaca5adcaebc1b6e38c553a /src
parentb6e8e8a21f84cf326c23fbbc4723a718ef822f65 (diff)
*Do not allow pvp in dk start zone.
*Improve petsetaction code. --HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/PetHandler.cpp15
-rw-r--r--src/game/Player.cpp2
2 files changed, 11 insertions, 6 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);
}
}
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 6934f4ae1ed..2d41400c80f 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -6568,7 +6568,7 @@ void Player::UpdateZone(uint32 newZone, uint32 newArea)
pvpInfo.endTimer = time(0); // start toggle-off
}
- if(zone->flags & (AREA_FLAG_SANCTUARY | AREA_FLAG_UNK7 & AREA_FLAG_UNK7)) // in sanctuary
+ if((zone->flags & AREA_FLAG_SANCTUARY) || zone->mapid == 609) // in sanctuary
{
SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SANCTUARY);
if(sWorld.IsFFAPvPRealm())