Index: src/game/SpellAuras.cpp =================================================================== --- src/game/SpellAuras.cpp (revision 6154) +++ src/game/SpellAuras.cpp (working copy) @@ -3056,7 +3056,40 @@ { ((Creature *)m_target)->StopMoving(); }else m_target->SetUnitMovementFlags(0); //Clear movement flags + + // Summon the Naj'entus Spine GameObject and it's trap on target if spell is Impaling Spine + if(GetSpellProto()->Id == 39837) + { + GameObject* pObj = new GameObject(m_target); + float x, y, z; + m_target->GetPosition(x, y, z); + + if(!pObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), 185584, m_target->GetMapId(), x, y, z, 0, 0, 0, 0, 0, 100, 1)) + { + delete pObj; + return; + } + + pObj->SetRespawnTime(GetSpellDuration(GetSpellProto())/1000); + pObj->SetSpellId(39837); + m_target->AddGameObject(pObj); + MapManager::Instance().GetMap(pObj->GetMapId(), pObj)->Add(pObj); + + pObj = new GameObject(m_target); + + if(!pObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), 185601, m_target->GetMapId(), x, y, z, 0, 0, 0, 0, 0, 100, 1)) + { + delete pObj; + return; + } + + pObj->SetRespawnTime(GetSpellDuration(GetSpellProto())/1000); + pObj->SetSpellId(39977); + m_target->AddGameObject(pObj); + MapManager::Instance().GetMap(pObj->GetMapId(), pObj)->Add(pObj); + } + WorldPacket data(SMSG_FORCE_MOVE_ROOT, 8); data.append(m_target->GetPackGUID()); @@ -3107,6 +3140,10 @@ caster->CastSpell(m_target,spellInfo,true,NULL,this); return; } + + // Parasitic Shadowfiend - handle summoning of two Shadowfiends on DoT expire + if((m_spellProto->Id == 41917)) + m_target->CastSpell(m_target, 41915, true); } }