Index: trunk/src/bindings/scripts/include/sc_creature.h
===================================================================
--- trunk/src/bindings/scripts/include/sc_creature.h (revision 13)
+++ trunk/src/bindings/scripts/include/sc_creature.h (revision 14)
@@ -72,4 +72,7 @@
     //Bool for if we are in combat or not
     bool InCombat;
+
+    //For fleeing
+    bool IsFleeing;
 
     //*************
Index: trunk/src/bindings/scripts/scripts/creature/mob_event_ai.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/creature/mob_event_ai.cpp (revision 6)
+++ trunk/src/bindings/scripts/scripts/creature/mob_event_ai.cpp (revision 14)
@@ -80,4 +80,5 @@
     uint32 AttackDistance;                                  //Distance to attack from
     float AttackAngle;                                      //Angle of attack
+    uint32 TimetoFleeLeft;                                  //For fleeing
 
     void AttackTarget(Unit* pTarget, bool Follow)
@@ -775,6 +776,7 @@
         case ACTION_T_FLEE:
             {
-                //TODO: Replace with Flee movement generator
-                m_creature->CastSpell(m_creature, SPELL_RUN_AWAY, true);
+                TimetoFleeLeft = 8000;
+                m_creature->DoFleeToGetAssistance();
+                IsFleeing = true;
             }
             break;
@@ -955,4 +957,5 @@
     {
         InCombat = false;
+        IsFleeing = false;
         Reset();
 
@@ -1015,4 +1018,5 @@
 
         InCombat = false;
+        IsFleeing = false;
         Reset();
 
@@ -1035,4 +1039,5 @@
     {
         InCombat = false;
+        IsFleeing = false;
         Reset();
 
@@ -1132,5 +1137,5 @@
             return;
 
-        if (who->isTargetableForAttack())
+        if (who->isTargetableForAttack() && !IsFleeing)
         {
             //Begin melee attack if we are within range
@@ -1224,4 +1229,18 @@
         //Must return if creature isn't alive. Normally select hostil target and get victim prevent this
         if (!m_creature->isAlive())
+            return;
+
+        if ((TimetoFleeLeft < diff || (m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != POINT_MOTION_TYPE && m_creature->GetMotionMaster()->GetCurrentMovementGeneratorType() != FLEEING_MOTION_TYPE)) && IsFleeing)
+        {
+            m_creature->GetMotionMaster()->Clear(false);
+            m_creature->SetNoCallAssistence(false);
+            m_creature->CallAssistence();
+            m_creature->GetMotionMaster()->MoveChase(m_creature->getVictim());
+            IsFleeing = false;
+        } 
+        else
+            TimetoFleeLeft -= diff;
+
+        if(IsFleeing)
             return;
 
