Index: /trunk/src/game/Unit.cpp
===================================================================
--- /trunk/src/game/Unit.cpp (revision 59)
+++ /trunk/src/game/Unit.cpp (revision 60)
@@ -501,15 +501,23 @@
         if ( pVictim->GetCreatureType() == CREATURE_TYPE_CRITTER)
         {
-            pVictim->setDeathState(JUST_DIED);
-            pVictim->SetHealth(0);
+            // critters run away when hit
+            pVictim->GetMotionMaster()->MoveFleeing(this);
 
             // allow loot only if has loot_id in creature_template
-            CreatureInfo const* cInfo = ((Creature*)pVictim)->GetCreatureInfo();
-            if(cInfo && cInfo->lootid)
-                pVictim->SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
-
-            // some critters required for quests
-            if(GetTypeId() == TYPEID_PLAYER)
-                ((Player*)this)->KilledMonster(pVictim->GetEntry(),pVictim->GetGUID());
+            if(damage >= pVictim->GetHealth())
+            {
+                pVictim->setDeathState(JUST_DIED);
+                pVictim->SetHealth(0);
+
+                CreatureInfo const* cInfo = ((Creature*)pVictim)->GetCreatureInfo();
+                if(cInfo && cInfo->lootid)
+                    pVictim->SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
+
+                // some critters required for quests
+                if(GetTypeId() == TYPEID_PLAYER)
+                    ((Player*)this)->KilledMonster(pVictim->GetEntry(),pVictim->GetGUID());
+            }
+            else
+                pVictim->ModifyHealth(- (int32)damage);
 
             return damage;
@@ -612,4 +620,7 @@
         pVictim->CombatStop();
         pVictim->getHostilRefManager().deleteReferences();
+
+        // stop movement
+        pVictim->StopMoving();
 
         bool damageFromSpiritOfRedemtionTalent = spellProto && spellProto->Id == 27795;
