Index: /trunk/src/game/SpellAuras.h
===================================================================
--- /trunk/src/game/SpellAuras.h (revision 139)
+++ /trunk/src/game/SpellAuras.h (revision 236)
@@ -288,5 +288,5 @@
         void SetAuraProcCharges(int32 charges) { m_procCharges = charges; }
 
-        virtual Unit* GetTriggerTarget() const { return m_target; }
+        Unit* GetTriggerTarget() const;
 
         // add/remove SPELL_AURA_MOD_SHAPESHIFT (36) linked auras
Index: /trunk/src/game/SpellAuras.cpp
===================================================================
--- /trunk/src/game/SpellAuras.cpp (revision 233)
+++ /trunk/src/game/SpellAuras.cpp (revision 236)
@@ -1883,15 +1883,13 @@
     }
     m_target->CastSpell(target, triggeredSpellInfo, true, 0, this, originalCasterGUID);
-    /*// All ok cast by default case
-    Spell *spell = new Spell(m_target, triggeredSpellInfo, true, originalCasterGUID );
-
-    SpellCastTargets targets;
-    targets.setUnitTarget( target );
-
-    // if spell create dynamic object extract area from it
-    if(DynamicObject* dynObj = caster->GetDynObject(GetId()))
-        targets.setDestination(dynObj->GetPositionX(),dynObj->GetPositionY(),dynObj->GetPositionZ());
-
-    spell->prepare(&targets, this);*/
+}
+
+Unit* Aura::GetTriggerTarget() const
+{
+    Unit* target = ObjectAccessor::GetUnit(*m_target,
+        /*m_target->GetTypeId()==TYPEID_PLAYER ?
+        ((Player*)m_target)->GetSelection() :*/
+        m_target->GetUInt64Value(UNIT_FIELD_TARGET));
+    return target ? target : m_target;
 }
 
Index: /trunk/src/game/Unit.cpp
===================================================================
--- /trunk/src/game/Unit.cpp (revision 233)
+++ /trunk/src/game/Unit.cpp (revision 236)
@@ -3305,4 +3305,5 @@
                 m_AutoRepeatFirstCast = true;
             }
+            addUnitState(UNIT_STAT_CASTING);
         } break;
 
@@ -3317,4 +3318,5 @@
                 m_currentSpells[CURRENT_AUTOREPEAT_SPELL]->m_spellInfo->Category == 351 )
                 InterruptSpell(CURRENT_AUTOREPEAT_SPELL);
+            addUnitState(UNIT_STAT_CASTING);
         } break;
 
Index: /trunk/src/game/Spell.cpp
===================================================================
--- /trunk/src/game/Spell.cpp (revision 231)
+++ /trunk/src/game/Spell.cpp (revision 236)
@@ -2143,5 +2143,4 @@
         m_selfContainer = &(m_caster->m_currentSpells[GetCurrentContainer()]);
         SendSpellStart();
-        m_caster->addUnitState(UNIT_STAT_CASTING);
     }
 }
Index: /trunk/src/game/SpellMgr.cpp
===================================================================
--- /trunk/src/game/SpellMgr.cpp (revision 229)
+++ /trunk/src/game/SpellMgr.cpp (revision 236)
@@ -1704,4 +1704,7 @@
         case 31347: // Doom
         case 41635: // Prayer of Mending
+        case 44869: // Spectral Blast
+        case 45027: // Revitalize
+        case 45976: // Muru Portal Channel
             mSpellCustomAttrMap[tempSpell->Id] |= SPELL_ATTR_CU_PLAYERS_ONLY;
             tempSpell->MaxAffectedTargets = 1;
