diff options
| author | Meji <alvaromegias_46@hotmail.com> | 2021-12-25 15:27:58 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-12-25 15:27:58 +0100 |
| commit | 924182f692bde38d8fed85d5dbe7531a09790501 (patch) | |
| tree | ec5b5c5842315ad391d1da9cd236952159a03fd4 /src/server/game/Entities/Unit | |
| parent | 8ac0388870519a085115454783dafed873c1535f (diff) | |
Core/BattlePets: Misc fixes (#27446)
* Added script for "Summon Battle Pet" spell (118301).
* Set the saved display of the battle pet when summoning it.
* If a summon has SummonPropertiesFlags::SummonFromBattlePetJournal it will remove NpcFlag UNIT_NPC_FLAG_WILD_BATTLE_PET (Wild battle pets).
* When a creature is summoned with SummonTitle::Companion, it will check to see if it has SummonPropertiesFlags::SummonFromBattlePetJournal before updating the battle pet's update fields. (If you have a summoned battle pet and summon a creature with that SummonTitle, it will incorrectly update the battle pet's update fields with the summoned battle pet's data).
* Implemented SummonPropertiesFlags::UseCreatureLevel. If a summon has this flag, it will use the owner's level (If the summon doesn't have SummonProperties it will always use the selected level).
Diffstat (limited to 'src/server/game/Entities/Unit')
| -rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 76dadac3885..ad6ed3ec293 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -5827,16 +5827,26 @@ void Unit::SetMinion(Minion *minion, bool apply) SetMinionGUID(minion->GetGUID()); } - if (minion->m_Properties && SummonTitle(minion->m_Properties->Title) == SummonTitle::Companion) + SummonPropertiesEntry const* properties = minion->m_Properties; + if (properties && SummonTitle(properties->Title) == SummonTitle::Companion) { SetCritterGUID(minion->GetGUID()); if (Player const* thisPlayer = ToPlayer()) { - if (BattlePets::BattlePet const* pet = thisPlayer->GetSession()->GetBattlePetMgr()->GetPet(thisPlayer->GetSummonedBattlePetGUID())) + if (properties->GetFlags().HasFlag(SummonPropertiesFlags::SummonFromBattlePetJournal)) { - minion->SetBattlePetCompanionGUID(thisPlayer->GetSummonedBattlePetGUID()); - minion->SetBattlePetCompanionNameTimestamp(pet->NameTimestamp); - minion->SetWildBattlePetLevel(pet->PacketInfo.Level); + if (BattlePets::BattlePet const* pet = thisPlayer->GetSession()->GetBattlePetMgr()->GetPet(thisPlayer->GetSummonedBattlePetGUID())) + { + minion->SetBattlePetCompanionGUID(thisPlayer->GetSummonedBattlePetGUID()); + minion->SetBattlePetCompanionNameTimestamp(pet->NameTimestamp); + minion->SetWildBattlePetLevel(pet->PacketInfo.Level); + + if (uint32 display = pet->PacketInfo.DisplayID) + { + minion->SetDisplayId(display); + minion->SetNativeDisplayId(display); + } + } } } } |
