Index: trunk/src/bindings/scripts/sql/Updates/r112_trinity.sql
===================================================================
--- trunk/src/bindings/scripts/sql/Updates/r112_trinity.sql (revision 105)
+++ trunk/src/bindings/scripts/sql/Updates/r112_trinity.sql (revision 105)
@@ -0,0 +1,2 @@
+UPDATE `item_template` SET `ScriptName`='item_arcane_charges' WHERE `entry`='34475';
+UPDATE gameobject_template SET faction = 14 WHERE entry = 185134;
Index: trunk/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp (revision 98)
+++ trunk/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp (revision 105)
@@ -26,14 +26,26 @@
 
 //Sounds
-#define SOUND_AGGRO             11367                      //"Gronn are the real power in outland."
-#define SOUND_ENRAGE            11368                      //"You will not defeat the hand of Gruul!"
-#define SOUND_OGRE_DEATH1       11369                      //"You won't kill next one so easy!"
-#define SOUND_OGRE_DEATH2       11370                      //"Pah! Does not prove anything!"
-#define SOUND_OGRE_DEATH3       11371                      //"I'm not afraid of you."
-#define SOUND_OGRE_DEATH4       11372                      //"Good, now you fight me!"
-#define SOUND_SLAY1             11373                      //"You not so tough afterall!"
-#define SOUND_SLAY2             11374                      //"Aha ha ha ha!"
-#define SOUND_SLAY3             11375                      //"Mulgar is king!"
-#define SOUND_DEATH             11376                      //"Gruul ...will crush you..."
+#define SOUND_AGGRO             11367
+#define SOUND_ENRAGE            11368
+#define SOUND_OGRE_DEATH1       11369
+#define SOUND_OGRE_DEATH2       11370
+#define SOUND_OGRE_DEATH3       11371
+#define SOUND_OGRE_DEATH4       11372
+#define SOUND_SLAY1             11373
+#define SOUND_SLAY2             11374
+#define SOUND_SLAY3             11375
+#define SOUND_DEATH             11376
+
+//Yells
+#define SAY_AGGRO				"Gronn are the real power in Outland!"
+#define SAY_ENRAGE				"You will not defeat the Hand of Gruul!"
+#define SAY_OGRE_DEATH1			"You not kill next one so easy!"
+#define SAY_OGRE_DEATH2			"Does not mean anything!"
+#define SAY_OGRE_DEATH3			"I'm not afraid of you!"
+#define SAY_OGRE_DEATH4			"Good, now you fight me!"
+#define SAY_SLAY1				"You not so tough after all!"
+#define SAY_SLAY2				"Ahahahaha!"
+#define SAY_SLAY3				"Maulgar is king!"
+#define SAY_DEATH				"Gruul will... crush you!"
 
 // High King Maulgar
@@ -41,23 +53,23 @@
 #define SPELL_MIGHTY_BLOW       33230
 #define SPELL_WHIRLWIND         33238
-#define SPELL_BERSERKER_C              26561
-#define SPELL_ROAR                             16508
-#define SPELL_FLURRY                   33232
+#define SPELL_BERSERKER_C       26561
+#define SPELL_ROAR              16508
+#define SPELL_FLURRY            33232
 
 // Olm the Summoner
 #define SPELL_DARK_DECAY        33129
-#define SPELL_DEATH_COIL               33130
-#define SPELL_SUMMON_WFH               33131
+#define SPELL_DEATH_COIL        33130
+#define SPELL_SUMMON_WFH        33131
 
 //Kiggler the Craed
-#define SPELL_GREATER_POLYMORPH 33173
-#define SPELL_LIGHTNING_BOLT    36152
-#define SPELL_ARCANE_SHOCK      33175
-#define SPELL_ARCANE_EXPLOSION  33237
+#define SPELL_GREATER_POLYMORPH 	33173
+#define SPELL_LIGHTNING_BOLT    	36152
+#define SPELL_ARCANE_SHOCK      	33175
+#define SPELL_ARCANE_EXPLOSION  	33237
 
 //Blindeye the Seer
-#define SPELL_GREATER_PW_SHIELD 33147
-#define SPELL_HEAL              33144
-#define SPELL_PRAYER_OH                        33152
+#define SPELL_GREATER_PW_SHIELD 		33147
+#define SPELL_HEAL              		33144
+#define SPELL_PRAYER_OH                 33152
 
 //Krosh Firehand
@@ -83,5 +95,5 @@
     uint32 Whirlwind_Timer;
     uint32 Charging_Timer;
-       uint32 Roar_Timer;
+    uint32 Roar_Timer;
 
     bool Phase2;
@@ -120,9 +132,18 @@
     void KilledUnit()
     {
-        switch(rand()%2)
-        {
-            case 0:  DoPlaySoundToSet(m_creature, SOUND_SLAY1);  break;
-            case 1:  DoPlaySoundToSet(m_creature, SOUND_SLAY2);  break;
-            case 2:  DoPlaySoundToSet(m_creature, SOUND_SLAY3);  break;
+        switch(rand()%3)
+        {
+            case 0:
+                DoYell(SAY_SLAY1, LANG_UNIVERSAL, NULL);
+                DoPlaySoundToSet(m_creature, SOUND_SLAY1);
+                break;
+            case 1:
+                DoYell(SAY_SLAY2, LANG_UNIVERSAL, NULL);
+                DoPlaySoundToSet(m_creature, SOUND_SLAY2);
+                break;
+            case 2:
+                DoYell(SAY_SLAY3, LANG_UNIVERSAL, NULL);
+                DoPlaySoundToSet(m_creature, SOUND_SLAY3);
+                break;
         }
     }
@@ -131,5 +152,6 @@
     {
         DoPlaySoundToSet(m_creature, SOUND_DEATH);
-
+		DoYell(SAY_DEATH, LANG_UNIVERSAL, NULL);
+		
         if (pInstance)
                {
@@ -145,11 +167,23 @@
        void AddDeath()
        {
-               switch(rand()%3)
-               {
-               case 0: DoPlaySoundToSet(m_creature, SOUND_OGRE_DEATH1);break;
-               case 1: DoPlaySoundToSet(m_creature, SOUND_OGRE_DEATH2);break;
-               case 2: DoPlaySoundToSet(m_creature, SOUND_OGRE_DEATH3);break;
-               case 3: DoPlaySoundToSet(m_creature, SOUND_OGRE_DEATH4);break;
-               }
+            switch(rand()%4)
+			{
+				case 0:
+					DoYell(SAY_OGRE_DEATH1, LANG_UNIVERSAL, NULL);
+					DoPlaySoundToSet(m_creature, SOUND_OGRE_DEATH1);
+					break;
+				case 1:
+					DoYell(SAY_OGRE_DEATH2, LANG_UNIVERSAL, NULL);
+					DoPlaySoundToSet(m_creature, SOUND_OGRE_DEATH2);
+					break;
+				case 2:
+					DoYell(SAY_OGRE_DEATH3, LANG_UNIVERSAL, NULL);
+					DoPlaySoundToSet(m_creature, SOUND_OGRE_DEATH3);
+					break;
+				case 3:
+					DoYell(SAY_OGRE_DEATH4, LANG_UNIVERSAL, NULL);
+					DoPlaySoundToSet(m_creature, SOUND_OGRE_DEATH4);
+					break;
+			}
        }
 
@@ -174,5 +208,6 @@
 
         DoPlaySoundToSet(m_creature, SOUND_AGGRO);
-
+		DoYell(SAY_AGGRO, LANG_UNIVERSAL, NULL);
+		
         pInstance->SetData64(DATA_MAULGAREVENT_TANK, who->GetGUID());
         pInstance->SetData(DATA_MAULGAREVENT, IN_PROGRESS);
@@ -232,8 +267,9 @@
             Phase2 = true;
             DoPlaySoundToSet(m_creature, SOUND_ENRAGE);
-                       DoCast(m_creature, SPELL_FLURRY);
-
-                       m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY, 0);
-               m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY+1, 0);                
+            DoYell(SAY_ENRAGE, LANG_UNIVERSAL, NULL);
+			DoCast(m_creature, SPELL_FLURRY);
+			
+            m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY, 0);
+            m_creature->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_DISPLAY+1, 0);                
         }
 
Index: trunk/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp (revision 90)
+++ trunk/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp (revision 105)
@@ -23,4 +23,5 @@
 
 #include "precompiled.h"
+#include "def_karazhan.h"
 
 #define SAY_AGGRO           "Madness has brought you here to me. I shall be your undoing!"
@@ -162,6 +163,11 @@
 struct TRINITY_DLL_DECL boss_malchezaarAI : public ScriptedAI
 {
-    boss_malchezaarAI(Creature *c) : ScriptedAI(c) {Reset();}
-
+    boss_malchezaarAI(Creature *c) : ScriptedAI(c) 
+    {
+        pInstance = ((ScriptedInstance*)c->GetInstanceData());
+        Reset();
+    }
+
+    ScriptedInstance *pInstance;
     uint32 EnfeebleTimer;
     uint32 EnfeebleResetTimer;
@@ -205,4 +211,13 @@
         AxesTargetSwitchTimer = 7500 + rand()%12500;
         phase = 1;
+
+        if(pInstance)
+        {
+            GameObject* Door = GameObject::GetGameObject((*m_creature),pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR));
+            if(Door)
+            {
+                Door->SetGoState(0);
+            }
+        }
     }
 
@@ -238,4 +253,13 @@
         for(int i = 0; i < TOTAL_INFERNAL_POINTS; ++i)
             positions.push_back(&InfernalPoints[i]);
+
+        if(pInstance)
+        {
+            GameObject* Door = GameObject::GetGameObject((*m_creature),pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR));
+            if(Door)
+            {
+                Door->SetGoState(0);
+            }
+        }
     }
 
@@ -244,4 +268,13 @@
         DoYell(SAY_AGGRO, LANG_UNIVERSAL, NULL);
         DoPlaySoundToSet(m_creature, SOUND_AGGRO);
+
+        if(pInstance)
+        {
+            GameObject* Door = GameObject::GetGameObject((*m_creature),pInstance->GetData64(DATA_GAMEOBJECT_NETHER_DOOR));
+            if(Door)
+            {
+                Door->SetGoState(1);
+            }
+        }
     }
 
@@ -628,7 +661,12 @@
 }
 
-void AddSC_netherspite_infernal()
+void AddSC_boss_malchezaar()
 {
     Script *newscript;
+    newscript = new Script;
+    newscript->Name="boss_malchezaar";
+    newscript->GetAI = GetAI_boss_malchezaar;
+    m_scripts[nrscripts++] = newscript;
+
     newscript = new Script;
     newscript->Name="netherspite_infernal";
@@ -636,11 +674,2 @@
     m_scripts[nrscripts++] = newscript;
 }
-
-void AddSC_boss_malchezaar()
-{
-    Script *newscript;
-    newscript = new Script;
-    newscript->Name="boss_malchezaar";
-    newscript->GetAI = GetAI_boss_malchezaar;
-    m_scripts[nrscripts++] = newscript;
-}
Index: trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp (revision 90)
+++ trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp (revision 105)
@@ -287,6 +287,10 @@
                     if( DrainManaTimer < diff )
                     {
-                        DoCast(SelectUnit(SELECT_TARGET_RANDOM, 0), SPELL_DRAIN_MANA);
-                        DrainManaTimer = 10000;
+                        Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0);
+                        if( target->getPowerType() == POWER_MANA)
+                        {    
+                            DoCast(target, SPELL_DRAIN_MANA);
+                            DrainManaTimer = 10000;
+                        }
                     }else DrainManaTimer -= diff;
                 }
@@ -367,5 +371,5 @@
                 if(((boss_selin_fireheartAI*)Selin->AI())->CrystalGUID == m_creature->GetGUID())
                 {
-                    // Set this to false if we are the creature that Selin is draining so his AI flows properly
+                    Selin->RemoveAurasDueToSpell(SPELL_MANA_RAGE);
                     ((boss_selin_fireheartAI*)Selin->AI())->DrainingCrystal = false;
                     ((boss_selin_fireheartAI*)Selin->AI())->IsDraining = false;
Index: trunk/src/bindings/scripts/scripts/item/item_scripts.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/item/item_scripts.cpp (revision 90)
+++ trunk/src/bindings/scripts/scripts/item/item_scripts.cpp (revision 105)
@@ -63,4 +63,19 @@
         return true;
     }
+}
+
+/*#####
+# item_arcane_charges
+#####*/
+
+bool ItemUse_item_arcane_charges(Player *player, Item* _Item, SpellCastTargets const& targets)
+{
+    // allow use in flight only
+    if( player->isInFlight() )
+        return false;
+
+    // error
+    player->SendEquipError(EQUIP_ERR_CANT_DO_RIGHT_NOW,_Item,NULL);
+    return true;
 }
 
@@ -444,4 +459,9 @@
 
     newscript = new Script;
+    newscript->Name="item_arcane_charges";
+    newscript->pItemUse = ItemUse_item_arcane_charges;
+    m_scripts[nrscripts++] = newscript;
+
+    newscript = new Script;
     newscript->Name="item_attuned_crystal_cores";
     newscript->pItemUse = ItemUse_item_attuned_crystal_cores;
Index: trunk/src/bindings/scripts/ScriptMgr.cpp
===================================================================
--- trunk/src/bindings/scripts/ScriptMgr.cpp (revision 82)
+++ trunk/src/bindings/scripts/ScriptMgr.cpp (revision 105)
@@ -342,5 +342,4 @@
 extern void AddSC_boss_malchezaar();
 extern void AddSC_boss_terestian_illhoof();
-extern void AddSC_netherspite_infernal();
 extern void AddSC_boss_moroes();
 extern void AddSC_bosses_opera();
@@ -1532,5 +1531,4 @@
     AddSC_boss_malchezaar();
     AddSC_boss_terestian_illhoof();
-    AddSC_netherspite_infernal();
     AddSC_boss_moroes();
     AddSC_bosses_opera();
