Index: trunk/src/game/SpellEffects.cpp
===================================================================
--- trunk/src/game/SpellEffects.cpp (revision 105)
+++ trunk/src/game/SpellEffects.cpp (revision 106)
@@ -3490,7 +3490,10 @@
         int32 duration = GetSpellDuration(m_spellInfo);
 
-        TempSummonType summonType = (duration == 0) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_OR_DEAD_DESPAWN;
-
-        m_caster->SummonCreature(creature_entry,px,py,pz,m_caster->GetOrientation(),summonType,duration);
+        TempSummonType summonType = (duration == 0) ? TEMPSUMMON_DEAD_DESPAWN : TEMPSUMMON_TIMED_DESPAWN;
+
+        if(m_originalCaster)
+            m_originalCaster->SummonCreature(creature_entry,px,py,pz,m_caster->GetOrientation(),summonType,duration);
+        else
+            m_caster->SummonCreature(creature_entry,px,py,pz,m_caster->GetOrientation(),summonType,duration);
     }
 }
Index: trunk/src/bindings/scripts/include/sc_creature.cpp
===================================================================
--- trunk/src/bindings/scripts/include/sc_creature.cpp (revision 69)
+++ trunk/src/bindings/scripts/include/sc_creature.cpp (revision 106)
@@ -459,10 +459,9 @@
     }
 
-    if (!pUnit->CanHaveThreatList() || pUnit->getThreatManager().isThreatListEmpty())
+    /*if (!pUnit->CanHaveThreatList() || pUnit->getThreatManager().isThreatListEmpty())
     {
         error_log("SD2: DoZoneInCombat called for creature that either cannot have threat list or has empty threat list (pUnit entry = %d)", pUnit->GetTypeId() == TYPEID_UNIT ? ((Creature*)pUnit)->GetEntry() : 0);
-
-        return;
-    }
+        return;
+    }*/
 
     InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
@@ -470,5 +469,5 @@
     for (i = PlayerList.begin(); i != PlayerList.end(); ++i)
     {
-        if(!(*i)->isGameMaster())
+        if((*i)->isAlive())
             pUnit->AddThreat(*i, 0.0f);
     }
Index: trunk/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp (revision 90)
+++ trunk/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp (revision 106)
@@ -586,5 +586,5 @@
             m_creature->HandleEmoteCommand(EMOTE_ONESHOT_LIFTOFF);
             //m_creature->GetMotionMaster()->Clear(false);
-            m_creature->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING);
+            m_creature->SetUnitMovementFlags(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT);
             //m_creature->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ());
             m_creature->StopMoving();
@@ -595,7 +595,7 @@
         case 2://move to center
             //m_creature->GetMotionMaster()->Clear(false);
-            m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
+            //m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
             m_creature->GetMotionMaster()->MovePoint(0, CENTER_X + 5, CENTER_Y, CENTER_Z); //+5, for SPELL_THROW_GLAIVE bug
-            m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
+            //m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
             Timer[EVENT_FLIGHT_SEQUENCE] = 0;
             break;
@@ -637,13 +637,13 @@
             break;
         case 6://fly to hover point
-            m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
+            //m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
             m_creature->GetMotionMaster()->MovePoint(0, HoverPosition[HoverPoint].x, HoverPosition[HoverPoint].y, HoverPosition[HoverPoint].z);
-            m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
+            //m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
             Timer[EVENT_FLIGHT_SEQUENCE] = 0;
             break;
         case 7://return to center
-            m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
+            //m_creature->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
             m_creature->GetMotionMaster()->MovePoint(0, CENTER_X, CENTER_Y, CENTER_Z);
-            m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
+            //m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
             Timer[EVENT_FLIGHT_SEQUENCE] = 0;
             break;
@@ -665,5 +665,5 @@
         case 9://land
             //m_creature->GetMotionMaster()->Clear(false);
-            m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
+            m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT);
             //m_creature->GetMotionMaster()->MovePoint(0, m_creature->GetPositionX(),m_creature->GetPositionY(),m_creature->GetPositionZ());
             m_creature->StopMoving();
@@ -1617,5 +1617,6 @@
     void UpdateAI(const uint32 diff)
     {
-        if((!m_creature->SelectHostilTarget() || !m_creature->getVictim()) && !Timer[1])
+        if((!m_creature->SelectHostilTarget() || !m_creature->getVictim()) 
+            && !Timer[EVENT_MAIEV_STEALTH])
             return;
 
@@ -2108,5 +2109,5 @@
     m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY, 0);
     m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY+1, 0);
-    m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING);
+    m_creature->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING + MOVEMENTFLAG_ONTRANSPORT);
 
     DoCast(m_creature, SPELL_DUAL_WIELD, true);
Index: trunk/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp (revision 105)
+++ trunk/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp (revision 106)
@@ -239,5 +239,8 @@
         //someone evaded!
         if(pInstance && !pInstance->GetData(DATA_MAULGAREVENT))
+        {
             EnterEvadeMode();
+            return;
+        }
 
         //ArcingSmash_Timer
@@ -366,5 +369,8 @@
         //someone evaded!
         if(pInstance && !pInstance->GetData(DATA_MAULGAREVENT))
+        {
             EnterEvadeMode();
+            return;
+        }
 
         //DarkDecay_Timer
@@ -490,5 +496,8 @@
         //someone evaded!
         if(pInstance && !pInstance->GetData(DATA_MAULGAREVENT))
+        {
             EnterEvadeMode();
+            return;
+        }
 
         //GreaterPolymorph_Timer
@@ -617,5 +626,8 @@
         //someone evaded!
         if(pInstance && !pInstance->GetData(DATA_MAULGAREVENT))
+        {
             EnterEvadeMode();
+            return;
+        }
 
         //GreaterPowerWordShield_Timer
@@ -728,5 +740,8 @@
         //someone evaded!
         if(pInstance && !pInstance->GetData(DATA_MAULGAREVENT))
+        {
             EnterEvadeMode();
+            return;
+        }
 
         //GreaterFireball_Timer
