rendered paste bodyIndex: src/game/Pet.cpp===================================================================--- src/game/Pet.cpp (revision 6488)+++ src/game/Pet.cpp (working copy)@@ -306,6 +306,9 @@ //load spells/cooldowns/auras SetCanModifyStats(true); _LoadAuras(timediff);+ + // convert master's dummy effects to pet auras+ BuildPetAuras(owner); //init AB if(is_temporary_summoned)@@ -1690,3 +1693,132 @@ addSpell(*petSet); } }++// lookup master's dummy effects to cast pet auras ( if needed )+void Pet::BuildPetAuras( Unit* owner )+{+ if(!owner)+ return;++ if ( getPetType()!=HUNTER_PET && (getPetType()!=SUMMON_PET || owner->getClass()!= CLASS_WARLOCK))+ return;++ Unit::AuraList const& dummyList = owner->GetAurasByType(SPELL_AURA_DUMMY);+ for(Unit::AuraList::const_iterator itr = dummyList.begin();itr!=dummyList.end();++itr)+ {+ uint32 MD = 0;++ switch((*itr)->GetSpellProto()->Id)+ {+ // Spirit Bond+ case 19578:+ CastSpell(this, 19579, true);+ break;+ case 20895:+ CastSpell(this, 24529, true);+ break;+ // Stalker's Ally+ case 28757:+ CastSpell(this, 28758, true);+ break;+ // Master Demonologist+ case 23785:+ {+ switch(GetEntry())+ {+ case 416: MD = 23759; break; // imp+ case 1860: MD = 23760; break; // voidwalker+ case 1863: MD = 23761; break; // succubus+ case 417: MD = 23762; break; // felhunter+ case 17252: MD = 35702; break; // felguard+ default: break;+ }+ if(MD) CastSpell(this, MD, true);+ break;+ }+ case 23822:+ {+ switch(GetEntry())+ { + case 416: MD = 23826; break; // imp+ case 1860: MD = 23841; break; // voidwalker+ case 1863: MD = 23833; break; // succubus+ case 417: MD = 23837; break; // felhunter+ case 17252: MD = 35703; break; // felguard+ default: break;+ }+ if(MD) CastSpell(this, MD, true);+ break;+ }+ case 23823:+ {+ switch(GetEntry())+ {+ case 416: MD = 23827; break; // imp+ case 1860: MD = 23842; break; // voidwalker+ case 1863: MD = 23834; break; // succubus+ case 417: MD = 23838; break; // felhunter+ case 17252: MD = 35704; break; // felguard+ default: break;+ }+ if(MD) CastSpell(this, MD, true);+ break;+ }+ case 23824:+ {+ switch(GetEntry())+ {+ case 416: MD = 23828; break; // imp+ case 1860: MD = 23842; break; // voidwalker+ case 1863: MD = 23835; break; // succubus+ case 417: MD = 23839; break; // felhunter+ case 17252: MD = 35705; break; // felguard+ default: break;+ }+ if(MD) CastSpell(this, MD, true);+ break;+ }+ case 23825:+ {+ switch(GetEntry())+ {+ case 416: MD = 23829; break; // imp+ case 1860: MD = 23844; break; // voidwalker+ case 1863: MD = 23836; break; // succubus+ case 417: MD = 23840; break; // felhunter+ case 17252: MD = 35706; break; // felguard+ default: break;+ }+ if(MD) CastSpell(this, MD, true);+ break;+ }+ // Demonic Knowledge+ case 35691:+ case 35692:+ case 35693:+ {+ int32 DemonKnowledgeBasePoints0 = (*itr)->GetModifier()->m_amount;+ DemonKnowledgeBasePoints0 = int32( DemonKnowledgeBasePoints0 * (GetStat(STAT_STAMINA) + GetStat(STAT_INTELLECT)) / 100.0f );+ CastCustomSpell(this,35696,&DemonKnowledgeBasePoints0, NULL, NULL, true );+ break;+ }+ default: break;+ }+ }+ // Focused Fire is has SPELL_AURA_ADD_FLAT_MODIFIER :-/+ Unit::AuraList const& flatModList = owner->GetAurasByType(SPELL_AURA_ADD_FLAT_MODIFIER);+ for(Unit::AuraList::const_iterator itr = flatModList.begin();itr!=flatModList.end();++itr)+ {+ switch((*itr)->GetSpellProto()->Id)+ {+ // Focused Fire+ case 35029:+ CastSpell(this, 35060, true);+ break;+ case 35030:+ CastSpell(this, 35061, true);+ break;+ default: break;+ }+ }+}Index: src/game/Pet.h===================================================================--- src/game/Pet.h (revision 6488)+++ src/game/Pet.h (working copy)@@ -176,6 +176,8 @@ void AddTeachSpell(uint32 learned_id, uint32 source_id) { m_teachspells[learned_id] = source_id; } void LearnPetPassives();+ + void BuildPetAuras(Unit* owner); void _LoadSpellCooldowns(); void _SaveSpellCooldowns();Index: src/game/SpellAuras.cpp===================================================================--- src/game/SpellAuras.cpp (revision 6488)+++ src/game/SpellAuras.cpp (working copy)@@ -896,7 +896,7 @@ // passive auras (except totem auras) do not get placed in the slots // area auras with SPELL_AURA_NONE are not shown on target if((!m_isPassive || (caster && caster->GetTypeId() == TYPEID_UNIT && ((Creature*)caster)->isTotem())) && - (m_modifier.m_auraname != SPELL_AURA_NONE || !IsAreaAura()))+ (m_spellProto->Effect[GetEffIndex()] != SPELL_EFFECT_APPLY_AREA_AURA_ENEMY || m_target != caster)) { if(!samespell) // new slot need {Index: src/game/SpellEffects.cpp===================================================================--- src/game/SpellEffects.cpp (revision 6488)+++ src/game/SpellEffects.cpp (working copy)@@ -987,6 +987,15 @@ m_caster->CastSpell(m_caster,45088,true); return; }+ case 19028: // Soul Link+ {+ if (!unitTarget)+ return;++ // Pet will cast aura+ unitTarget->CastSpell(unitTarget,25228,true,NULL);+ return;+ } } //All IconID Check in there