Index: /trunk/src/game/SpellMgr.cpp
===================================================================
--- /trunk/src/game/SpellMgr.cpp (revision 44)
+++ /trunk/src/game/SpellMgr.cpp (revision 67)
@@ -1346,26 +1346,9 @@
     }
 
-    // more generic checks
-    if (spellInfo_1->SpellIconID == spellInfo_2->SpellIconID &&
-        spellInfo_1->SpellIconID != 0 && spellInfo_2->SpellIconID != 0)
-    {
-        bool isModifier = false;
-        for (int i = 0; i < 3; i++)
-        {
-            if (spellInfo_1->EffectApplyAuraName[i] == SPELL_AURA_ADD_FLAT_MODIFIER ||
-                spellInfo_1->EffectApplyAuraName[i] == SPELL_AURA_ADD_PCT_MODIFIER  ||
-                spellInfo_2->EffectApplyAuraName[i] == SPELL_AURA_ADD_FLAT_MODIFIER ||
-                spellInfo_2->EffectApplyAuraName[i] == SPELL_AURA_ADD_PCT_MODIFIER )
-                isModifier = true;
-        }
-
-        if (!isModifier)
-            return true;
-    }
-
     if (IsRankSpellDueToSpell(spellInfo_1, spellId_2))
         return true;
 
-    if (spellInfo_1->SpellFamilyName == 0 || spellInfo_2->SpellFamilyName == 0)
+    if (spellInfo_1->SpellIconID != spellInfo_2->SpellIconID ||
+        !spellInfo_1->SpellIconID)
         return false;
 
Index: /trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp
===================================================================
--- /trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp (revision 63)
+++ /trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp (revision 67)
@@ -63,4 +63,5 @@
 #define SPELL_CLOUD_SUMMON      45884
 
+//Creatures
 #define MOB_FELMYST             25038
 #define MOB_BRUTALLUS
@@ -75,11 +76,19 @@
 #define MOB_VAPOR_TRAIL         25267
 
+//Yells and Sounds
 #define YELL_BIRTH      "Glory to Kil'jaeden! Death to all who oppose!"
+#define SOUND_BIRTH            12477
 #define YELL_KILL1      "I kill for the master!"
+#define SOUND_KILL1            12480
 #define YELL_KILL2      "The end has come!"
+#define SOUND_KILL2            12481
 #define YELL_BREATH     "Choke on your final breath!"
+#define SOUND_BREATH   12478
 #define YELL_TAKEOFF    "I am stronger than ever before!"
+#define SOUND_TAKEOFF  12479
 #define YELL_BERSERK    "No more hesitation! Your fates are written!"
+#define SOUND_BERSERK  12482
 #define YELL_DEATH      "Kil'jaeden... will... prevail..."
+#define SOUND_DEATH            12483
 
 #define YELL_KALECGOS   "Madrigosa deserved a far better fate. You did what had to be done, but this battle is far from over."
@@ -182,9 +191,9 @@
         case 0:
             DoYell(YELL_KILL1,LANG_UNIVERSAL, NULL);
-            //DoPlaySoundToSet(m_creature, SOUND_KILL1);
+            DoPlaySoundToSet(m_creature, SOUND_KILL1);
             break;
         case 1:
             DoYell(YELL_KILL2,LANG_UNIVERSAL, NULL);
-            //DoPlaySoundToSet(m_creature, SOUND_KILL2);
+            DoPlaySoundToSet(m_creature, SOUND_KILL2);
             break;
         }
@@ -194,5 +203,5 @@
     {
         DoYell(YELL_DEATH, LANG_UNIVERSAL, NULL);
-        //DoPlaySoundToSet(m_creature, SOUND_DEATH);
+        DoPlaySoundToSet(m_creature, SOUND_DEATH);
     }
 
@@ -277,5 +286,5 @@
             m_creature->StopMoving();
             DoYell(YELL_TAKEOFF, LANG_UNIVERSAL, NULL);
-            //DoPlaySoundToSet(m_creature, SOUND_TAKEOFF);
+            DoPlaySoundToSet(m_creature, SOUND_TAKEOFF);
             Timer[EVENT_FLIGHT_SEQUENCE] = 2000;
             break;
@@ -414,5 +423,5 @@
             case EVENT_BERSERK:
                 DoYell(YELL_BERSERK, LANG_UNIVERSAL, NULL);
-                //DoPlaySoundToSet(m_creature, SOUND_BERSERK);
+                DoPlaySoundToSet(m_creature, SOUND_BERSERK);
                 m_creature->CastSpell(m_creature, SPELL_BERSERK, true);
                 Timer[EVENT_BERSERK] = 0;
@@ -452,5 +461,5 @@
             case EVENT_BERSERK:
                 DoYell(YELL_BERSERK, LANG_UNIVERSAL, NULL);
-                //DoPlaySoundToSet(m_creature, SOUND_BERSERK);
+                DoPlaySoundToSet(m_creature, SOUND_BERSERK);
                 m_creature->CastSpell(m_creature, SPELL_BERSERK, true);
                 Timer[EVENT_BERSERK] = 0;
Index: /trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp
===================================================================
--- /trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp (revision 63)
+++ /trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp (revision 67)
@@ -8,6 +8,15 @@
 #include "def_sunwell_plateau.h"
 
+//Intro
+#define YELL_INTRO_SAC_1                "Misery..."
+#define YELL_INTRO_ALY_2                "Depravity..."
+#define YELL_INTRO_SAC_3                "Confusion..."
+#define YELL_INTRO_ALY_4                "Hatred..."
+#define YELL_INTRO_SAC_5                "Mistrust..."
+#define YELL_INTRO_ALY_6                "Chaos..."
+#define YELL_INTRO_SAC_7                "These are the hallmarks..."
+#define YELL_INTRO_ALY_8                "These are the pillars..."
+
 // Lady Sacrolash
-
 #define LADY_SACROLASH                  25165
 
@@ -339,5 +348,5 @@
         pInstance = (c->GetInstanceData()) ? ((ScriptedInstance*)c->GetInstanceData()) : NULL;
         Reset();
-        once = false;
+        IntroStepCounter = 10;
     }
 
@@ -345,5 +354,6 @@
     bool InCombat;
     bool sisterdeath;
-    bool once;
+    uint32 IntroStepCounter;
+    uint32 IntroYell_Timer;
 
     uint32 conflagration_timer;
@@ -385,4 +395,5 @@
             enrage_timer = 360000;
             flamesear_timer = 15000;
+            IntroYell_Timer = 10000;
         }
     }
@@ -436,8 +447,7 @@
             }
         }
-        else if (!once && m_creature->IsWithinLOSInMap(who)&& m_creature->IsWithinDistInMap(who, 30) )
-        {
-            DoPlaySoundToSet(m_creature,SOUND_INTRO);
-            once = true;
+        else if (IntroStepCounter == 10 && m_creature->IsWithinLOSInMap(who)&& m_creature->IsWithinDistInMap(who, 30) )
+        {
+            IntroStepCounter = 0;
         }
     }
@@ -524,6 +534,52 @@
     }
 
+    uint32 IntroStep(uint32 step)
+    {
+        Creature* Sacrolash = (Creature*)Unit::GetUnit((*m_creature),pInstance->GetData64(DATA_SACROLASH));
+        switch (step)
+        {
+        case 0: DoPlaySoundToSet(m_creature,SOUND_INTRO); return 0;
+        case 1:
+            if(Sacrolash)
+                Sacrolash->Yell(YELL_INTRO_SAC_1, LANG_UNIVERSAL,NULL); 
+            return 1000;
+        case 2: 
+            m_creature->Yell(YELL_INTRO_ALY_2, LANG_UNIVERSAL,NULL); 
+            return 1000;
+        case 3: 
+            if(Sacrolash)
+                Sacrolash->Yell(YELL_INTRO_SAC_3, LANG_UNIVERSAL,NULL); 
+            return 2000;
+        case 4: 
+            m_creature->Yell(YELL_INTRO_ALY_4, LANG_UNIVERSAL,NULL); 
+            return 1000;
+        case 5:
+            if(Sacrolash)
+                Sacrolash->Yell(YELL_INTRO_SAC_5, LANG_UNIVERSAL,NULL); 
+            return 2000;
+        case 6: 
+            m_creature->Yell(YELL_INTRO_ALY_6, LANG_UNIVERSAL,NULL); 
+            return 1000;
+        case 7: 
+            if(Sacrolash)
+                Sacrolash->Yell(YELL_INTRO_SAC_7, LANG_UNIVERSAL,NULL); 
+            return 3000;
+        case 8: 
+            m_creature->Yell(YELL_INTRO_ALY_8, LANG_UNIVERSAL,NULL); 
+            return 900000;
+        }
+        return 10000;
+    }
+
     void UpdateAI(const uint32 diff) 
     {
+        if(IntroStepCounter < 9)
+        {
+            if(IntroYell_Timer < diff)
+            {
+                IntroYell_Timer = IntroStep(IntroStepCounter++);
+            }else IntroYell_Timer -= diff;
+        }
+
         if(!sisterdeath)
         {
