aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 3e3a39c16a5..8e682bc0cb0 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -5903,8 +5903,8 @@ void Unit::SetMinion(Minion *minion, bool apply)
if (oldPet != minion && (oldPet->IsPet() || minion->IsPet() || oldPet->GetEntry() != minion->GetEntry()))
{
// remove existing minion pet
- if (oldPet->IsPet())
- ((Pet*)oldPet)->Remove(PET_SAVE_AS_CURRENT);
+ if (Pet* oldPetAsPet = oldPet->ToPet())
+ oldPetAsPet->Remove(PET_SAVE_NOT_IN_SLOT);
else
oldPet->UnSummon();
SetPetGUID(minion->GetGUID());
@@ -5959,13 +5959,15 @@ void Unit::SetMinion(Minion *minion, bool apply)
else if (minion->IsTotem())
{
// All summoned by totem minions must disappear when it is removed.
- if (SpellInfo const* spInfo = sSpellMgr->GetSpellInfo(minion->ToTotem()->GetSpell()))
- for (int i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ if (SpellInfo const* spInfo = sSpellMgr->GetSpellInfo(minion->ToTotem()->GetSpell()))
{
- if (spInfo->Effects[i].Effect != SPELL_EFFECT_SUMMON)
- continue;
+ for (int i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ {
+ if (spInfo->Effects[i].Effect != SPELL_EFFECT_SUMMON)
+ continue;
- RemoveAllMinionsByEntry(spInfo->Effects[i].MiscValue);
+ RemoveAllMinionsByEntry(spInfo->Effects[i].MiscValue);
+ }
}
}