Index: trunk/src/game/SpellEffects.cpp
===================================================================
--- trunk/src/game/SpellEffects.cpp (revision 56)
+++ trunk/src/game/SpellEffects.cpp (revision 57)
@@ -4666,13 +4666,4 @@
         }
 
-        // Dreaming Glory
-        case 28698:
-        {
-            if(!unitTarget)
-                return;
-            unitTarget->CastSpell(unitTarget, 28694, true);
-            break;
-        }
-
         // Netherbloom
         case 28702:
@@ -4747,20 +4738,4 @@
                 }
             }
-            break;
-        }
-        case 41126:                                         // Flame Crash
-        {
-            if(!unitTarget)
-                return;
-
-           unitTarget->CastSpell(unitTarget, 41131, true);
-           break;
-        }
-        case 44876:                                         // Force Cast - Portal Effect: Sunwell Isle
-        {
-            if(!unitTarget)
-                return;
-
-            unitTarget->CastSpell(unitTarget, 44870, true);
             break;
         }
@@ -4791,12 +4766,30 @@
             break;
         }
+
+    }
+
+    if(!unitTarget || !unitTarget->isAlive()) // can we remove this check?
+    {
+        sLog.outError("Spell %u in EffectScriptEffect does not have unitTarget", m_spellInfo->Id);
+        return;
+    }
+
+    switch(m_spellInfo->Id)
+    {
+        // Dreaming Glory
+        case 28698: unitTarget->CastSpell(unitTarget, 28694, true); break;
+        // Needle Spine
+        case 39835: unitTarget->CastSpell(unitTarget, 39968, true); break;
+        // Draw Soul
+        case 40904: unitTarget->CastSpell(m_caster, 40903, true); break;
+        // Flame Crash
+        case 41126: unitTarget->CastSpell(unitTarget, 41131, true); break;
+        // Force Cast - Portal Effect: Sunwell Isle
+        case 44876: unitTarget->CastSpell(unitTarget, 44870, true); break;
         //5,000 Gold
         case 46642:
         {
-            if(!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
-                return;
-
-            ((Player*)unitTarget)->ModifyMoney(50000000);
-
+            if(unitTarget->GetTypeId() == TYPEID_PLAYER)
+                ((Player*)unitTarget)->ModifyMoney(50000000);
             break;
         }
@@ -4810,6 +4803,4 @@
             case 0x800000:
             {
-                if(!unitTarget || !unitTarget->isAlive())
-                    return;
                 uint32 spellId2 = 0;
 
@@ -4862,7 +4853,4 @@
 
     // normal DB scripted effect
-    if(!unitTarget)
-        return;
-
     sLog.outDebug("Spell ScriptStart spellid %u in EffectScriptEffect ", m_spellInfo->Id);
     sWorld.ScriptsStart(sSpellScripts, m_spellInfo->Id, m_caster, unitTarget);
Index: trunk/src/game/SpellAuras.cpp
===================================================================
--- trunk/src/game/SpellAuras.cpp (revision 44)
+++ trunk/src/game/SpellAuras.cpp (revision 57)
@@ -1651,6 +1651,19 @@
 //                    // Prismatic Shield
 //                    case 40879: break;
-//                    // Aura of Desire
-//                    case 41350: break;
+                    // Aura of Desire
+                    case 41350:
+                    {
+                        Unit::AuraList const& mMod = m_target->GetAurasByType(SPELL_AURA_MOD_INCREASE_ENERGY_PERCENT);
+                        for(Unit::AuraList::const_iterator i = mMod.begin(); i != mMod.end(); ++i)
+                        {
+                            if ((*i)->GetId() == 41350)
+                            {
+                                (*i)->ApplyModifier(false);
+                                (*i)->GetModifier()->m_amount -= 5;
+                                (*i)->ApplyModifier(true);
+                                break;
+                            }
+                        }                        
+                    }break;
 //                    // Dementia
 //                    case 41404: break;
@@ -5615,4 +5628,19 @@
                         break;
                     }
+                    case 41337:// aura of anger
+                    {                        
+                        Unit::AuraList const& mMod = m_target->GetAurasByType(SPELL_AURA_MOD_DAMAGE_PERCENT_DONE);
+                        for(Unit::AuraList::const_iterator i = mMod.begin(); i != mMod.end(); ++i)
+                        {
+                            if ((*i)->GetId() == 41337)
+                            {
+                                (*i)->ApplyModifier(false);
+                                (*i)->GetModifier()->m_amount += 5;
+                                (*i)->ApplyModifier(true);
+                                break;
+                            }
+                        }                        
+                        m_modifier.m_amount += 100;
+                    }break;
                     default:
                         break;
