diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-02-02 00:08:37 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-02-02 00:08:37 +0100 |
| commit | 950db60435e7e513633ff5b22ad7f0ed8b1147e4 (patch) | |
| tree | cb5b9e47570528dea0374f804f829512c89a5410 /src/server/game/Entities/Unit | |
| parent | d6a2461fc77f156dfe9e62c1c2387815c27e43de (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.cpp | 10 |
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; } |
