diff options
Diffstat (limited to 'src/server/game/Entities')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 28 | ||||
| -rw-r--r-- | src/server/game/Entities/Player/Player.h | 4 | ||||
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.h | 2 |
3 files changed, 33 insertions, 1 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 0b9ac27aa66..1c8682a0ff5 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -32,7 +32,6 @@ #include "BattlegroundMgr.h" #include "BattlegroundPackets.h" #include "BattlegroundScore.h" -#include "BattlePetMgr.h" #include "CellImpl.h" #include "Channel.h" #include "ChannelMgr.h" @@ -22030,6 +22029,33 @@ void Player::RemovePetAura(PetAura const* petSpell) pet->RemoveAurasDueToSpell(petSpell->GetAura(pet->GetEntry())); } +Creature* Player::GetSummonedBattlePet() +{ + if (Creature* summonedBattlePet = ObjectAccessor::GetCreatureOrPetOrVehicle(*this, GetCritterGUID())) + if (!GetSummonedBattlePetGUID().IsEmpty() && GetSummonedBattlePetGUID() == summonedBattlePet->GetBattlePetCompanionGUID()) + return summonedBattlePet; + + return nullptr; +} + +void Player::SetBattlePetData(BattlePetMgr::BattlePet const* pet) +{ + if (pet) + { + SetSummonedBattlePetGUID(pet->PacketInfo.Guid); + SetCurrentBattlePetBreedQuality(pet->PacketInfo.Quality); + SetBattlePetCompanionExperience(pet->PacketInfo.Exp); + SetWildBattlePetLevel(pet->PacketInfo.Level); + } + else + { + SetSummonedBattlePetGUID(ObjectGuid::Empty); + SetCurrentBattlePetBreedQuality(AsUnderlyingType(BattlePetBreedQuality::Poor)); + SetBattlePetCompanionExperience(0); + SetWildBattlePetLevel(0); + } +} + void Player::StopCastingCharm() { Unit* charm = GetCharmed(); diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 387671c7e86..a5a58add20e 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -19,6 +19,7 @@ #define _PLAYER_H #include "Unit.h" +#include "BattlePetMgr.h" #include "CUFProfile.h" #include "DatabaseEnvFwd.h" #include "DBCEnums.h" @@ -1210,6 +1211,9 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> void AddPetAura(PetAura const* petSpell); void RemovePetAura(PetAura const* petSpell); + Creature* GetSummonedBattlePet(); + void SetBattlePetData(BattlePetMgr::BattlePet const* pet = nullptr); + /// Handles said message in regular chat based on declared language and in config pre-defined Range. void Say(std::string const& text, Language language, WorldObject const* = nullptr) override; void Say(uint32 textId, WorldObject const* target = nullptr) override; diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index e88bcf953eb..28f9f156cec 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1302,6 +1302,8 @@ class TC_GAME_API Unit : public WorldObject uint32 GetBattlePetCompanionNameTimestamp() const { return m_unitData->BattlePetCompanionNameTimestamp; } void SetBattlePetCompanionNameTimestamp(uint32 timestamp) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::BattlePetCompanionNameTimestamp), timestamp); } + uint32 GetBattlePetCompanionExperience() const { return m_unitData->BattlePetCompanionExperience; } + void SetBattlePetCompanionExperience(uint32 experience) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::BattlePetCompanionExperience), experience); } uint32 GetWildBattlePetLevel() const { return m_unitData->WildBattlePetLevel; } void SetWildBattlePetLevel(uint32 wildBattlePetLevel) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::WildBattlePetLevel), wildBattlePetLevel); } |
