diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index f71fc495d..5bbd87664 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -1541,13 +1541,8 @@ void Spell::EffectDummy(SpellEffectIndex eff_idx) if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT) return; - if (m_caster->GetTypeId() != TYPEID_PLAYER) - return; - - // Not expecting any MINI_PET here, the ones used for related quests are - // fighting "companions" (effMiscValueB 387). Needs to be corrected. - Pet* pPet = ((Player*)m_caster)->GetMiniPet(); - + // only spell related protector pets exist currently + Pet* pPet = m_caster->GetProtectorPet(); if (!pPet) return; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 5f6bc7aec..4dd9673b2 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -5909,11 +5909,20 @@ void Unit::RemoveGuardians() Pet* Unit::FindGuardianWithEntry(uint32 entry) { - // pet guid middle part is entry (and creature also) - // and in guardian list must be guardians with same entry _always_ for(GuardianPetList::const_iterator itr = m_guardianPets.begin(); itr != m_guardianPets.end(); ++itr) if(Pet* pet = GetMap()->GetPet(*itr)) - if (pet->GetEntry() == entry) + if (pet->getPetType() == entry) + return pet; + + return NULL; +} + + +Pet* Unit::GetProtectorPet() +{ + for(GuardianPetList::const_iterator itr = m_guardianPets.begin(); itr != m_guardianPets.end(); ++itr) + if(Pet* pet = GetMap()->GetPet(*itr)) + if (pet->getPetType() == PROTECTOR_PET) return pet; return NULL; diff --git a/src/game/Unit.h b/src/game/Unit.h index 9c36a8325..3d61591ed 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1532,6 +1532,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject void RemoveGuardian(Pet* pet); void RemoveGuardians(); Pet* FindGuardianWithEntry(uint32 entry); + Pet* GetProtectorPet(); // expected single case in guardian list bool isCharmed() const { return !GetCharmerGuid().IsEmpty(); } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 2c86ae78d..9aa64988a 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "10734" + #define REVISION_NR "10735" #endif // __REVISION_NR_H__