aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Unit
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-02-02 00:08:37 +0100
committerShauren <shauren.trinity@gmail.com>2022-02-02 00:08:37 +0100
commit950db60435e7e513633ff5b22ad7f0ed8b1147e4 (patch)
treecb5b9e47570528dea0374f804f829512c89a5410 /src/server/game/Entities/Unit
parentd6a2461fc77f156dfe9e62c1c2387815c27e43de (diff)
Core/Pets: Updated pet summoning for latest client version (5 Call Pet spells and stable size 200)
Diffstat (limited to 'src/server/game/Entities/Unit')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index c62211a1a1d..b339b55e7d1 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -10316,7 +10316,12 @@ bool Unit::InitTamedPet(Pet* pet, uint8 level, uint32 spell_id)
{
Player* player = ToPlayer();
PetStable& petStable = player->GetOrInitPetStable();
- if (petStable.CurrentPet || petStable.GetUnslottedHunterPet())
+ auto freeActiveSlotItr = std::find_if(petStable.ActivePets.begin(), petStable.ActivePets.end(), [](Optional<PetStable::PetInfo> const& petInfo)
+ {
+ return !petInfo.has_value();
+ });
+
+ if (freeActiveSlotItr == petStable.ActivePets.end())
return false;
pet->SetCreatorGUID(GetGUID());
@@ -10340,7 +10345,8 @@ bool Unit::InitTamedPet(Pet* pet, uint8 level, uint32 spell_id)
//pet->InitLevelupSpellsForLevel();
pet->SetFullHealth();
- pet->FillPetInfo(&petStable.CurrentPet.emplace());
+ petStable.SetCurrentActivePetIndex(std::distance(petStable.ActivePets.begin(), freeActiveSlotItr));
+ pet->FillPetInfo(&freeActiveSlotItr->emplace());
return true;
}