aboutsummaryrefslogtreecommitdiff
path: root/src/game/Player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/Player.cpp')
-rw-r--r--src/game/Player.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 20fc71d08bb..cb63810fbd3 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -16478,11 +16478,31 @@ void Player::UpdateDuelFlag(time_t currTime)
duel->opponent->duel->startTime = currTime;
}
+Pet* Player::GetPet() const
+{
+ if(uint64 pet_guid = GetPetGUID())
+ {
+ if(!IS_PET_GUID(pet_guid))
+ return NULL;
+
+ if(Pet* pet = ObjectAccessor::GetPet(pet_guid))
+ return pet;
+
+ sLog.outError("Player::GetPet: Pet %u not exist.",GUID_LOPART(pet_guid));
+ const_cast<Player*>(this)->SetPetGUID(0);
+ }
+
+ return NULL;
+}
+
void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent)
{
if(!pet)
pet = GetPet();
+ if(pet)
+ sLog.outDebug("RemovePet %u, %u, %u", pet->GetEntry(), mode, returnreagent);
+
if(returnreagent && (pet || m_temporaryUnsummonedPetNumber))
{
//returning of reagents only for players, so best done here
@@ -16536,7 +16556,7 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent)
case POSSESSED_PET:
pet->RemoveCharmedOrPossessedBy(NULL);
default:
- SetPet(pet, false);
+ SetGuardian(pet, false);
break;
}
@@ -19731,6 +19751,9 @@ void Player::InitGlyphsForLevel()
void Player::EnterVehicle(Vehicle *vehicle)
{
+ if(vehicle->GetCharmerGUID())
+ return;
+
VehicleEntry const *ve = sVehicleStore.LookupEntry(vehicle->GetVehicleId());
if(!ve)
return;