diff options
Diffstat (limited to 'src/server/game/BattlePets/BattlePetMgr.cpp')
| -rw-r--r-- | src/server/game/BattlePets/BattlePetMgr.cpp | 41 |
1 files changed, 36 insertions, 5 deletions
diff --git a/src/server/game/BattlePets/BattlePetMgr.cpp b/src/server/game/BattlePets/BattlePetMgr.cpp index c56ebe8532d..9ff67a33d1e 100644 --- a/src/server/game/BattlePets/BattlePetMgr.cpp +++ b/src/server/game/BattlePets/BattlePetMgr.cpp @@ -25,6 +25,7 @@ #include "ObjectAccessor.h" #include "ObjectMgr.h" #include "Player.h" +#include "World.h" #include "WorldSession.h" void BattlePetMgr::BattlePet::CalculateStats() @@ -408,16 +409,14 @@ void BattlePetMgr::AddPet(uint32 species, uint32 display, uint16 breed, BattlePe void BattlePetMgr::RemovePet(ObjectGuid guid) { + if (!HasJournalLock()) + return; + BattlePet* pet = GetPet(guid); if (!pet) return; pet->SaveInfo = BATTLE_PET_REMOVED; - - // spell is not unlearned on retail - /*if (GetPetCount(pet->PacketInfo.Species) == 0) - if (BattlePetSpeciesEntry const* speciesEntry = sBattlePetSpeciesStore.LookupEntry(pet->PacketInfo.Species)) - _owner->GetPlayer()->RemoveSpell(speciesEntry->SummonSpellID);*/ } void BattlePetMgr::ClearFanfare(ObjectGuid guid) @@ -434,6 +433,9 @@ void BattlePetMgr::ClearFanfare(ObjectGuid guid) void BattlePetMgr::ModifyName(ObjectGuid guid, std::string const& name, DeclinedName* declinedName) { + if (!HasJournalLock()) + return; + BattlePet* pet = GetPet(guid); if (!pet) return; @@ -508,6 +510,9 @@ uint16 BattlePetMgr::GetMaxPetLevel() const void BattlePetMgr::CageBattlePet(ObjectGuid guid) { + if (!HasJournalLock()) + return; + BattlePet* pet = GetPet(guid); if (!pet) return; @@ -595,8 +600,12 @@ void BattlePetMgr::DismissPet() void BattlePetMgr::SendJournal() { + if (!HasJournalLock()) + SendJournalLockStatus(); + WorldPackets::BattlePet::BattlePetJournal battlePetJournal; battlePetJournal.Trap = _trapLevel; + battlePetJournal.HasJournalLock = _hasJournalLock; for (auto& pet : _pets) if (pet.second.SaveInfo != BATTLE_PET_REMOVED) @@ -624,3 +633,25 @@ void BattlePetMgr::SendError(BattlePetError error, uint32 creatureId) battlePetError.CreatureID = creatureId; _owner->SendPacket(battlePetError.Write()); } + +void BattlePetMgr::SendJournalLockStatus() +{ + if (!IsJournalLockAcquired()) + ToggleJournalLock(true); + + if (HasJournalLock()) + { + WorldPackets::BattlePet::BattlePetJournalLockAcquired battlePetJournalLockAcquired; + _owner->SendPacket(battlePetJournalLockAcquired.Write()); + } + else + { + WorldPackets::BattlePet::BattlePetJournalLockDenied BattlePetJournalLockDenied; + _owner->SendPacket(BattlePetJournalLockDenied.Write()); + } +} + +bool BattlePetMgr::IsJournalLockAcquired() const +{ + return sWorld->IsBattlePetJournalLockAcquired(_owner->GetBattlenetAccountGUID()); +} |
