aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorMeji <alvaromegias_46@hotmail.com>2021-10-03 21:20:45 +0200
committerGitHub <noreply@github.com>2021-10-03 21:20:45 +0200
commit0cfd14d2a0a52ceb0d8203c31c7c6c487775bcee (patch)
treec131dfb62ba3bde90a9bb05c93ae5a2813f62190 /src/server/game/Entities/Unit
parentb1c0d069e1eba2f7b43ada8032b954bff630b68d (diff)
Core/BattlePets: Misc fixes (#26990)
* Define BattlePetBreedQuality enum class. * Check the quality of the battle pet species in battle_pet_quality table to avoid invalid values. * Set CurrentBattlePetBreedQuality and WildBattlePetLevel update fields with the data of the summoned battle pet. * Added function to calculate the WildBattlePetLevel of wild battle pets according to their spawn zone.
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp9
-rw-r--r--src/server/game/Entities/Unit/Unit.h32
2 files changed, 26 insertions, 15 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index e86156cc3bf..86db8294fcb 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -22,6 +22,7 @@
#include "Battleground.h"
#include "BattlegroundPackets.h"
#include "BattlegroundScore.h"
+#include "BattlePetMgr.h"
#include "CellImpl.h"
#include "CharacterCache.h"
#include "ChatPackets.h"
@@ -5823,7 +5824,13 @@ void Unit::SetMinion(Minion *minion, bool apply)
{
SetCritterGUID(minion->GetGUID());
if (Player const* thisPlayer = ToPlayer())
- minion->SetBattlePetCompanionGUID(thisPlayer->m_activePlayerData->SummonedBattlePetGUID);
+ {
+ if (BattlePetMgr::BattlePet const* pet = thisPlayer->GetSession()->GetBattlePetMgr()->GetPet(thisPlayer->m_activePlayerData->SummonedBattlePetGUID))
+ {
+ minion->SetBattlePetCompanionGUID(thisPlayer->m_activePlayerData->SummonedBattlePetGUID);
+ minion->SetWildBattlePetLevel(pet->PacketInfo.Level);
+ }
+ }
}
// PvP, FFAPvP
diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h
index 67746b97bc9..810f1de1413 100644
--- a/src/server/game/Entities/Unit/Unit.h
+++ b/src/server/game/Entities/Unit/Unit.h
@@ -1065,20 +1065,21 @@ class TC_GAME_API Unit : public WorldObject
void AddNpcFlag2(NPCFlags2 flags) { SetUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::NpcFlags, 1), flags); }
void RemoveNpcFlag2(NPCFlags2 flags) { RemoveUpdateFieldFlagValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::NpcFlags, 1), flags); }
void SetNpcFlags2(NPCFlags2 flags) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::NpcFlags, 1), flags); }
- bool IsVendor() const { return HasNpcFlag(UNIT_NPC_FLAG_VENDOR); }
- bool IsTrainer() const { return HasNpcFlag(UNIT_NPC_FLAG_TRAINER); }
- bool IsQuestGiver() const { return HasNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); }
- bool IsGossip() const { return HasNpcFlag(UNIT_NPC_FLAG_GOSSIP); }
- bool IsTaxi() const { return HasNpcFlag(UNIT_NPC_FLAG_FLIGHTMASTER); }
- bool IsGuildMaster() const { return HasNpcFlag(UNIT_NPC_FLAG_PETITIONER); }
- bool IsBattleMaster() const { return HasNpcFlag(UNIT_NPC_FLAG_BATTLEMASTER); }
- bool IsBanker() const { return HasNpcFlag(UNIT_NPC_FLAG_BANKER); }
- bool IsInnkeeper() const { return HasNpcFlag(UNIT_NPC_FLAG_INNKEEPER); }
- bool IsSpiritHealer() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRITHEALER); }
- bool IsSpiritGuide() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRITGUIDE); }
- bool IsTabardDesigner()const{ return HasNpcFlag(UNIT_NPC_FLAG_TABARDDESIGNER); }
- bool IsAuctioner() const { return HasNpcFlag(UNIT_NPC_FLAG_AUCTIONEER); }
- bool IsArmorer() const { return HasNpcFlag(UNIT_NPC_FLAG_REPAIR); }
+ bool IsVendor() const { return HasNpcFlag(UNIT_NPC_FLAG_VENDOR); }
+ bool IsTrainer() const { return HasNpcFlag(UNIT_NPC_FLAG_TRAINER); }
+ bool IsQuestGiver() const { return HasNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); }
+ bool IsGossip() const { return HasNpcFlag(UNIT_NPC_FLAG_GOSSIP); }
+ bool IsTaxi() const { return HasNpcFlag(UNIT_NPC_FLAG_FLIGHTMASTER); }
+ bool IsGuildMaster() const { return HasNpcFlag(UNIT_NPC_FLAG_PETITIONER); }
+ bool IsBattleMaster() const { return HasNpcFlag(UNIT_NPC_FLAG_BATTLEMASTER); }
+ bool IsBanker() const { return HasNpcFlag(UNIT_NPC_FLAG_BANKER); }
+ bool IsInnkeeper() const { return HasNpcFlag(UNIT_NPC_FLAG_INNKEEPER); }
+ bool IsSpiritHealer() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRITHEALER); }
+ bool IsSpiritGuide() const { return HasNpcFlag(UNIT_NPC_FLAG_SPIRITGUIDE); }
+ bool IsTabardDesigner() const { return HasNpcFlag(UNIT_NPC_FLAG_TABARDDESIGNER); }
+ bool IsAuctioner() const { return HasNpcFlag(UNIT_NPC_FLAG_AUCTIONEER); }
+ bool IsArmorer() const { return HasNpcFlag(UNIT_NPC_FLAG_REPAIR); }
+ bool IsWildBattlePet() const { return HasNpcFlag(UNIT_NPC_FLAG_WILD_BATTLE_PET); }
bool IsServiceProvider() const;
bool IsSpiritService() const { return HasNpcFlag(NPCFlags(UNIT_NPC_FLAG_SPIRITHEALER | UNIT_NPC_FLAG_SPIRITGUIDE)); }
bool IsCritter() const { return GetCreatureType() == CREATURE_TYPE_CRITTER; }
@@ -1296,6 +1297,9 @@ class TC_GAME_API Unit : public WorldObject
Pet* CreateTamedPetFrom(uint32 creatureEntry, uint32 spell_id = 0);
bool InitTamedPet(Pet* pet, uint8 level, uint32 spell_id);
+ void SetWildBattlePetLevel(uint32 wildBattlePetLevel) { SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::WildBattlePetLevel), wildBattlePetLevel); }
+ uint32 GetWildBattlePetLevel() const { return m_unitData->WildBattlePetLevel; }
+
// aura apply/remove helpers - you should better not use these
Aura* _TryStackingOrRefreshingExistingAura(AuraCreateInfo& createInfo);
void _AddAura(UnitAura* aura, Unit* caster);