Index: trunk/src/bindings/scripts/ScriptMgr.h
===================================================================
--- trunk/src/bindings/scripts/ScriptMgr.h (revision 260)
+++ trunk/src/bindings/scripts/ScriptMgr.h (revision 272)
@@ -25,5 +25,5 @@
 class WorldObject;
 
-#define MAX_SCRIPTS         5000                            //72 bytes each (approx 351kb)
+#define MAX_SCRIPTS         1000                            //72 bytes each (approx 71kb)
 #define VISIBLE_RANGE       (166.0f)                        //MAX visible range (size of grid)
 #define DEFAULT_TEXT        "<Trinity Script Text Entry Missing!>"
@@ -32,36 +32,37 @@
 {
     Script() :
-        pGossipHello(NULL), pQuestAccept(NULL), pGossipSelect(NULL), pGossipSelectWithCode(NULL),
-        pQuestSelect(NULL), pQuestComplete(NULL), pNPCDialogStatus(NULL), pGODialogStatus(NULL), pChooseReward(NULL),
-        pItemHello(NULL), pGOHello(NULL), pAreaTrigger(NULL), pItemQuestAccept(NULL), pGOQuestAccept(NULL),
-        pGOChooseReward(NULL),pReceiveEmote(NULL),pItemUse(NULL), GetAI(NULL), GetInstanceData(NULL)
-    {}
+pGossipHello(NULL), pQuestAccept(NULL), pGossipSelect(NULL), pGossipSelectWithCode(NULL),
+pQuestSelect(NULL), pQuestComplete(NULL), pNPCDialogStatus(NULL), pGODialogStatus(NULL), pChooseReward(NULL),
+pItemHello(NULL), pGOHello(NULL), pAreaTrigger(NULL), pItemQuestAccept(NULL), pGOQuestAccept(NULL),
+pGOChooseReward(NULL),pReceiveEmote(NULL),pItemUse(NULL), GetAI(NULL), GetInstanceData(NULL)
+{}
 
-    std::string Name;
+std::string Name;
 
-    //Methods to be scripted
-    bool (*pGossipHello         )(Player*, Creature*);
-    bool (*pQuestAccept         )(Player*, Creature*, Quest const* );
-    bool (*pGossipSelect        )(Player*, Creature*, uint32 , uint32 );
-    bool (*pGossipSelectWithCode)(Player*, Creature*, uint32 , uint32 , const char* );
-    bool (*pQuestSelect         )(Player*, Creature*, Quest const* );
-    bool (*pQuestComplete       )(Player*, Creature*, Quest const* );
-    uint32 (*pNPCDialogStatus   )(Player*, Creature* );
-    uint32 (*pGODialogStatus    )(Player*, GameObject * _GO );
-    bool (*pChooseReward        )(Player*, Creature*, Quest const*, uint32 );
-    bool (*pItemHello           )(Player*, Item*, Quest const* );
-    bool (*pGOHello             )(Player*, GameObject* );
-    bool (*pAreaTrigger         )(Player*, AreaTriggerEntry* );
-    bool (*pItemQuestAccept     )(Player*, Item *, Quest const* );
-    bool (*pGOQuestAccept       )(Player*, GameObject*, Quest const* );
-    bool (*pGOChooseReward      )(Player*, GameObject*, Quest const*, uint32 );
-    bool (*pReceiveEmote        )(Player*, Creature*, uint32 );
-    bool (*pItemUse             )(Player*, Item*, SpellCastTargets const& );
+// Quest/gossip Methods to be scripted
+bool (*pGossipHello         )(Player*, Creature*);
+bool (*pQuestAccept         )(Player*, Creature*, Quest const* );
+bool (*pGossipSelect        )(Player*, Creature*, uint32 , uint32  );
+bool (*pGossipSelectWithCode)(Player*, Creature*, uint32 , uint32 , const char* );
+bool (*pQuestSelect         )(Player*, Creature*, Quest const* );
+bool (*pQuestComplete       )(Player*, Creature*, Quest const* );
+uint32 (*pNPCDialogStatus   )(Player*, Creature* );
+uint32 (*pGODialogStatus    )(Player *player, GameObject * _GO );
+bool (*pChooseReward        )(Player*, Creature*, Quest const*, uint32 );
+bool (*pItemHello           )(Player*, Item*, Quest const* );
+bool (*pGOHello             )(Player*, GameObject* );
+bool (*pAreaTrigger         )(Player*, AreaTriggerEntry* );
+bool (*pItemQuestAccept     )(Player*, Item *, Quest const* );
+bool (*pGOQuestAccept       )(Player*, GameObject*, Quest const* );
+bool (*pGOChooseReward      )(Player*, GameObject*_GO, Quest const*, uint32 );
+bool (*pReceiveEmote        )(Player*, Creature*, uint32 );
+bool (*pItemUse             )(Player*, Item*, SpellCastTargets const& );
 
-    CreatureAI* (*GetAI)(Creature*);
-    InstanceData* (*GetInstanceData)(Map*);
+CreatureAI* (*GetAI)(Creature*);
+InstanceData* (*GetInstanceData)(Map*);
+};
 
-    void RegisterSelf();
-};
+extern int nrscripts;
+extern Script *m_scripts[MAX_SCRIPTS];
 
 //Generic scripting text function
Index: trunk/src/bindings/scripts/include/sc_creature.cpp
===================================================================
--- trunk/src/bindings/scripts/include/sc_creature.cpp (revision 267)
+++ trunk/src/bindings/scripts/include/sc_creature.cpp (revision 272)
@@ -74,5 +74,15 @@
 void ScriptedAI::MoveInLineOfSight(Unit *who)
 {
-    if(!m_creature->getVictim() && m_creature->canStartAttack(who))
+    if(m_creature->getVictim() || !m_creature->IsHostileTo(who) || !who->isInAccessiblePlaceFor(m_creature))
+        return;
+
+    if(!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE)
+        return;
+
+    if(!m_creature->IsWithinDistInMap(who, m_creature->GetAttackDistance(who)) || !m_creature->IsWithinLOSInMap(who))
+        return;
+    
+    if(m_creature->canAttack(who))
+        //who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
         AttackStart(who);
 }
@@ -670,9 +680,11 @@
     }
 
-    Map::PlayerList const &PlayerList = map->GetPlayers();
-    for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
-        if (Player* i_pl = i->getSource())
-            if (!i_pl->isAlive())
-                pUnit->AddThreat(i_pl, 0.0f);
+    InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
+    InstanceMap::PlayerList::const_iterator i;
+    for (i = PlayerList.begin(); i != PlayerList.end(); ++i)
+    {
+        if((*i)->isAlive())
+            pUnit->AddThreat(*i, 0.0f);
+    }
 }
 
@@ -709,18 +721,4 @@
     ((Player*)pUnit)->TeleportTo(pUnit->GetMapId(), x, y, z, o, TELE_TO_NOT_LEAVE_COMBAT);
 }
-
-void ScriptedAI::DoTeleportAll(float x, float y, float z, float o)
-{
-    Map *map = m_creature->GetMap();
-    if (!map->IsDungeon())
-        return;
-
-    Map::PlayerList const &PlayerList = map->GetPlayers();
-    for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
-        if (Player* i_pl = i->getSource())
-            if (!i_pl->isAlive())
-                i_pl->TeleportTo(m_creature->GetMapId(), x, y, z, o, TELE_TO_NOT_LEAVE_COMBAT);
-}
-
 
 Unit* ScriptedAI::DoSelectLowestHpFriendly(float range, uint32 MinHPDiff)
Index: trunk/src/bindings/scripts/include/sc_creature.h
===================================================================
--- trunk/src/bindings/scripts/include/sc_creature.h (revision 257)
+++ trunk/src/bindings/scripts/include/sc_creature.h (revision 272)
@@ -147,5 +147,4 @@
     //Teleports a player without dropping threat (only teleports to same map)
     void DoTeleportPlayer(Unit* pUnit, float x, float y, float z, float o);
-    void DoTeleportAll(float x, float y, float z, float o);
 
     //Returns friendly unit with the most amount of hp missing from max hp
Index: trunk/src/bindings/scripts/scripts/npc/npc_innkeeper.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/npc/npc_innkeeper.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/npc/npc_innkeeper.cpp (revision 272)
@@ -141,4 +141,4 @@
     newscript->pGossipHello = &GossipHello_npc_innkeeper;
     newscript->pGossipSelect = &GossipSelect_npc_innkeeper;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/npc/npcs_special.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/npc/npcs_special.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/npc/npcs_special.cpp (revision 272)
@@ -836,15 +836,15 @@
     newscript->pQuestAccept =   &QuestAccept_npc_chicken_cluck;
     newscript->pQuestComplete = &QuestComplete_npc_chicken_cluck;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_dancing_flames";
     newscript->pReceiveEmote =  &ReceiveEmote_npc_dancing_flames;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_injured_patient";
     newscript->GetAI = GetAI_npc_injured_patient;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -852,10 +852,10 @@
     newscript->GetAI = GetAI_npc_doctor;
     newscript->pQuestAccept = &QuestAccept_npc_doctor;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_guardian";
     newscript->GetAI = GetAI_npc_guardian;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -863,5 +863,5 @@
     newscript->pGossipHello =  &GossipHello_npc_mount_vendor;
     newscript->pGossipSelect = &GossipSelect_npc_mount_vendor;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -869,5 +869,5 @@
     newscript->pGossipHello =  &GossipHello_npc_rogue_trainer;
     newscript->pGossipSelect = &GossipSelect_npc_rogue_trainer;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -875,4 +875,4 @@
     newscript->pGossipHello = &GossipHello_npc_sayge;
     newscript->pGossipSelect = &GossipSelect_npc_sayge;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/npc/npc_professions.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/npc/npc_professions.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/npc/npc_professions.cpp (revision 272)
@@ -1178,5 +1178,5 @@
     newscript->pGossipHello =  &GossipHello_npc_prof_alchemy;
     newscript->pGossipSelect = &GossipSelect_npc_prof_alchemy;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -1184,5 +1184,5 @@
     newscript->pGossipHello =  &GossipHello_npc_prof_blacksmith;
     newscript->pGossipSelect = &GossipSelect_npc_prof_blacksmith;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -1190,5 +1190,5 @@
     newscript->pGossipHello =  &GossipHello_npc_prof_leather;
     newscript->pGossipSelect = &GossipSelect_npc_prof_leather;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -1196,5 +1196,5 @@
     newscript->pGossipHello =  &GossipHello_npc_prof_tailor;
     newscript->pGossipSelect = &GossipSelect_npc_prof_tailor;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     /*newscript = new Script;
@@ -1202,4 +1202,4 @@
     newscript->pGOHello =  &GOHello_go_soothsaying_for_dummies;
     //newscript->pGossipSelect = &GossipSelect_go_soothsaying_for_dummies;
-    newscript->RegisterSelf();*/
-}
+    m_scripts[nrscripts++] = newscript;*/
+}
Index: trunk/src/bindings/scripts/scripts/guard/guards.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/guard/guards.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/guard/guards.cpp (revision 272)
@@ -3981,5 +3981,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_azuremyst;
     newscript->GetAI = GetAI_guard_azuremyst;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -3988,10 +3988,10 @@
     newscript->pGossipSelect         = &GossipSelect_guard_bluffwatcher;
     newscript->GetAI = GetAI_guard_bluffwatcher;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="guard_contested";
     newscript->GetAI = GetAI_guard_contested;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4000,5 +4000,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_darnassus;
     newscript->GetAI = GetAI_guard_darnassus;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4007,5 +4007,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_dunmorogh;
     newscript->GetAI = GetAI_guard_dunmorogh;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4014,5 +4014,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_durotar;
     newscript->GetAI = GetAI_guard_durotar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4021,5 +4021,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_elwynnforest;
     newscript->GetAI = GetAI_guard_elwynnforest;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4028,5 +4028,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_eversong;
     newscript->GetAI = GetAI_guard_eversong;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4035,5 +4035,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_exodar;
     newscript->GetAI = GetAI_guard_exodar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4042,5 +4042,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_ironforge;
     newscript->GetAI = GetAI_guard_ironforge;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4049,5 +4049,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_mulgore;
     newscript->GetAI = GetAI_guard_mulgore;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4057,5 +4057,5 @@
     newscript->pReceiveEmote         = &ReceiveEmote_guard_orgrimmar;
     newscript->GetAI = GetAI_guard_orgrimmar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4064,5 +4064,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_shattrath;
     newscript->GetAI = GetAI_guard_shattrath;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4071,5 +4071,5 @@
     newscript->pGossipHello          = &GossipHello_guard_shattrath_aldor;
     newscript->pGossipSelect         = &GossipSelect_guard_shattrath_aldor;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4078,5 +4078,5 @@
     newscript->pGossipHello          = &GossipHello_guard_shattrath_scryer;
     newscript->pGossipSelect         = &GossipSelect_guard_shattrath_scryer;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4085,5 +4085,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_silvermoon;
     newscript->GetAI = GetAI_guard_silvermoon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4093,5 +4093,5 @@
     newscript->pReceiveEmote         = &ReceiveEmote_guard_stormwind;
     newscript->GetAI = GetAI_guard_stormwind;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4100,5 +4100,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_teldrassil;
     newscript->GetAI = GetAI_guard_teldrassil;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4107,5 +4107,5 @@
     newscript->pGossipSelect         = &GossipSelect_guard_tirisfal;
     newscript->GetAI = GetAI_guard_tirisfal;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -4114,4 +4114,4 @@
     newscript->pGossipSelect         = &GossipSelect_guard_undercity;
     newscript->GetAI = GetAI_guard_undercity;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/go/go_scripts.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/go/go_scripts.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/go/go_scripts.cpp (revision 272)
@@ -166,44 +166,44 @@
     newscript->Name="go_northern_crystal_pylon";
     newscript->pGOHello =           &GOHello_go_northern_crystal_pylon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="go_eastern_crystal_pylon";
     newscript->pGOHello =           &GOHello_go_eastern_crystal_pylon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="go_western_crystal_pylon";
     newscript->pGOHello =           &GOHello_go_western_crystal_pylon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="go_barov_journal";
     newscript->pGOHello =           &GOHello_go_barov_journal;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="go_field_repair_bot_74A";
     newscript->pGOHello =           &GOHello_go_field_repair_bot_74A;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="go_orb_of_command";
     newscript->pGOHello =           &GOHello_go_orb_of_command;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="go_tablet_of_madness";
     newscript->pGOHello =           &GOHello_go_tablet_of_madness;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="go_tablet_of_the_seven";
     newscript->pGOHello =           &GOHello_go_tablet_of_the_seven;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="go_teleporter";
     newscript->pGOHello =           &GOHello_go_teleporter;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/boss/boss_taerar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/boss/boss_taerar.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/boss/boss_taerar.cpp (revision 272)
@@ -298,9 +298,9 @@
     newscript->Name="boss_taerar";
     newscript->GetAI = GetAI_boss_taerar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_shade_of_taerar";
     newscript->GetAI = GetAI_boss_shadeoftaerar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/boss/boss_ysondre.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/boss/boss_ysondre.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/boss/boss_ysondre.cpp (revision 272)
@@ -238,9 +238,9 @@
     newscript->Name="boss_ysondre";
     newscript->GetAI = GetAI_boss_ysondre;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_dementeddruids";
     newscript->GetAI = GetAI_mob_dementeddruids;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/boss/boss_emeriss.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/boss/boss_emeriss.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/boss/boss_emeriss.cpp (revision 272)
@@ -153,4 +153,4 @@
     newscript->Name="boss_emeriss";
     newscript->GetAI = GetAI_boss_emeriss;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/creature/mob_generic_creature.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/creature/mob_generic_creature.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/creature/mob_generic_creature.cpp (revision 272)
@@ -169,4 +169,4 @@
     newscript->Name="generic_creature";
     newscript->GetAI = GetAI_generic_creature;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/creature/mob_event_ai.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/creature/mob_event_ai.cpp (revision 269)
+++ trunk/src/bindings/scripts/scripts/creature/mob_event_ai.cpp (revision 272)
@@ -7,10 +7,10 @@
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  */
 
@@ -965,15 +965,4 @@
                 DoZoneInCombat();
             }
-            break;
-
-        // TRINITY ONLY
-        case ACTION_T_SET_ACTIVE:
-            m_creature->setActive(param1 ? true : false);
-            break;
-        case ACTION_T_SET_AGGRESSIVE:
-            m_creature->SetAggressive(param1 ? true : false);
-            break;
-        case ACTION_T_ATTACK_START_PULSE:
-            AttackStart(m_creature->SelectNearestTarget((float)param1));
             break;
         }
@@ -1204,10 +1193,22 @@
         }
 
-        // do we need this?
-        //if (m_creature->isCivilian() && m_creature->IsNeutralToAll())
-        //    return;
-
-        if(m_creature->canStartAttack(who))
-            AttackStart(who);
+        if (m_creature->isCivilian() && m_creature->IsNeutralToAll())
+            return;
+
+        if (m_creature->canAttack(who) && who->isInAccessiblePlaceFor(m_creature) && m_creature->IsHostileTo(who))
+        {
+            if (!m_creature->canFly() && m_creature->GetDistanceZ(who) > CREATURE_Z_ATTACK_RANGE)
+                return;
+
+            float attackRadius = m_creature->GetAttackDistance(who);
+            if (m_creature->IsWithinDistInMap(who, attackRadius) && m_creature->IsWithinLOSInMap(who))
+            {
+                //if(who->HasStealthAura())
+                //    who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH);
+
+                //Begin melee attack if we are within range
+                AttackStart(who);
+            }
+        }
     }
 
@@ -1292,5 +1293,4 @@
                         if (!((*i).Event.event_inverse_phase_mask & (1 << Phase)))
                             (*i).Time -= EventDiff;
-
                         //Skip processing of events that have time remaining
                         continue;
@@ -1329,5 +1329,4 @@
         if (Combat && MeleeEnabled)
             DoMeleeAttackIfReady();
-
     }
 };
@@ -1402,4 +1401,4 @@
     newscript->Name="mob_eventai";
     newscript->GetAI = GetAI_Mob_EventAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/creature/mob_event_ai.h
===================================================================
--- trunk/src/bindings/scripts/scripts/creature/mob_event_ai.h (revision 269)
+++ trunk/src/bindings/scripts/scripts/creature/mob_event_ai.h (revision 272)
@@ -1,5 +1,5 @@
 /* Copyright (C) 2006 - 2008 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/>
- * This program is free software licensed under GPL version 2
- * Please see the included DOCS/LICENSE.TXT for more information */
+* This program is free software licensed under GPL version 2
+* Please see the included DOCS/LICENSE.TXT for more information */
 
 #ifndef SC_EVENTAI_H
@@ -77,8 +77,4 @@
     ACTION_T_ZONE_COMBAT_PULSE      = 38,   //No Params
 
-    ACTION_T_SET_ACTIVE             = 101,  //Apply
-    ACTION_T_SET_AGGRESSIVE         = 102,  //Apply
-    ACTION_T_ATTACK_START_PULSE     = 103,  //Distance
-
     ACTION_T_END,
 };
Index: trunk/src/bindings/scripts/scripts/custom/test.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/custom/test.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/custom/test.cpp (revision 272)
@@ -197,4 +197,4 @@
     newscript->pGossipHello          = &GossipHello_npc_test;
     newscript->pGossipSelect         = &GossipSelect_npc_test;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/custom/custom_gossip_codebox.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/custom/custom_gossip_codebox.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/custom/custom_gossip_codebox.cpp (revision 272)
@@ -78,4 +78,4 @@
     newscript->pGossipSelect =          &GossipSelect_custom_gossip_codebox;
     newscript->pGossipSelectWithCode =  &GossipSelectWithCode_custom_gossip_codebox;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/custom/custom_example.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/custom/custom_example.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/custom/custom_example.cpp (revision 272)
@@ -274,4 +274,4 @@
     newscript->pGossipSelect = &GossipSelect_custom_example;
     newscript->pReceiveEmote = &ReceiveEmote_custom_example;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_hazzarah.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_hazzarah.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_hazzarah.cpp (revision 272)
@@ -97,4 +97,4 @@
     newscript->Name="boss_hazzarah";
     newscript->GetAI = GetAI_boss_hazzarah;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_thekal.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_thekal.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_thekal.cpp (revision 272)
@@ -532,14 +532,14 @@
     newscript->Name="boss_thekal";
     newscript->GetAI = GetAI_boss_thekal;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_zealot_lorkhan";
     newscript->GetAI = GetAI_mob_zealot_lorkhan;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_zealot_zath";
     newscript->GetAI = GetAI_mob_zealot_zath;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_jeklik.cpp (revision 272)
@@ -289,9 +289,9 @@
     newscript->Name="boss_jeklik";
     newscript->GetAI = GetAI_boss_jeklik;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_batrider";
     newscript->GetAI = GetAI_mob_batrider;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_wushoolay.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_wushoolay.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_wushoolay.cpp (revision 272)
@@ -81,4 +81,4 @@
     newscript->Name="boss_wushoolay";
     newscript->GetAI = GetAI_boss_wushoolay;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_venoxis.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_venoxis.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_venoxis.cpp (revision 272)
@@ -197,4 +197,4 @@
     newscript->Name="boss_venoxis";
     newscript->GetAI = GetAI_boss_venoxis;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_grilek.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_grilek.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_grilek.cpp (revision 272)
@@ -89,4 +89,4 @@
     newscript->Name="boss_grilek";
     newscript->GetAI = GetAI_boss_grilek;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/instance_zulgurub.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/instance_zulgurub.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/instance_zulgurub.cpp (revision 272)
@@ -235,4 +235,4 @@
     newscript->Name = "instance_zulgurub";
     newscript->GetInstanceData = GetInstanceData_instance_zulgurub;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_renataki.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_renataki.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_renataki.cpp (revision 272)
@@ -148,4 +148,4 @@
     newscript->Name="boss_renataki";
     newscript->GetAI = GetAI_boss_renataki;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_hakkar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_hakkar.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_hakkar.cpp (revision 272)
@@ -253,4 +253,4 @@
     newscript->Name="boss_hakkar";
     newscript->GetAI = GetAI_boss_hakkar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_arlokk.cpp (revision 272)
@@ -208,4 +208,4 @@
     newscript->Name="boss_arlokk";
     newscript->GetAI = GetAI_boss_arlokk;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_jindo.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_jindo.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_jindo.cpp (revision 272)
@@ -259,14 +259,14 @@
     newscript->Name="boss_jindo";
     newscript->GetAI = GetAI_boss_jindo;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_healing_ward";
     newscript->GetAI = GetAI_mob_healing_ward;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_shade_of_jindo";
     newscript->GetAI = GetAI_mob_shade_of_jindo;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_mandokir.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_mandokir.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_mandokir.cpp (revision 272)
@@ -303,9 +303,9 @@
     newscript->Name="boss_mandokir";
     newscript->GetAI = GetAI_boss_mandokir;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_ohgan";
     newscript->GetAI = GetAI_mob_ohgan;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_marli.cpp (revision 272)
@@ -245,9 +245,9 @@
     newscript->Name="boss_marli";
     newscript->GetAI = GetAI_boss_marli;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_spawn_of_marli";
     newscript->GetAI = GetAI_mob_spawn_of_marli;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_gahzranka.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_gahzranka.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulgurub/boss_gahzranka.cpp (revision 272)
@@ -89,4 +89,4 @@
     newscript->Name="boss_gahzranka";
     newscript->GetAI = GetAI_boss_gahzranka;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_broggok.cpp (revision 272)
@@ -124,9 +124,9 @@
     newscript->Name="boss_broggok";
     newscript->GetAI = GetAI_boss_broggokAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_broggok_poisoncloud";
     newscript->GetAI = GetAI_mob_broggok_poisoncloudAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_the_maker.cpp (revision 272)
@@ -128,4 +128,4 @@
     newscript->Name="boss_the_maker";
     newscript->GetAI = GetAI_boss_the_makerAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/blood_furnace/boss_kelidan_the_breaker.cpp (revision 272)
@@ -226,9 +226,9 @@
     newscript->Name="boss_kelidan_the_breaker";
     newscript->GetAI = GetAI_boss_kelidan_the_breaker;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_shadowmoon_channeler";
     newscript->GetAI = GetAI_mob_shadowmoon_channeler;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_watchkeeper_gargolmar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_watchkeeper_gargolmar.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_watchkeeper_gargolmar.cpp (revision 272)
@@ -165,4 +165,4 @@
     newscript->Name="boss_watchkeeper_gargolmar";
     newscript->GetAI = GetAI_boss_watchkeeper_gargolmarAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_omor_the_unscarred.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_omor_the_unscarred.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/hellfire_ramparts/boss_omor_the_unscarred.cpp (revision 272)
@@ -210,4 +210,4 @@
     newscript->Name="boss_omor_the_unscarred";
     newscript->GetAI = GetAI_boss_omor_the_unscarredAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_warbringer_omrogg.cpp (revision 272)
@@ -395,9 +395,9 @@
     newscript->Name="boss_warbringer_omrogg";
     newscript->GetAI = GetAI_boss_warbringer_omrogg;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_omrogg_heads";
     newscript->GetAI = GetAI_mob_omrogg_heads;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/boss_nethekurse.cpp (revision 272)
@@ -445,14 +445,14 @@
     newscript->Name="boss_grand_warlock_nethekurse";
     newscript->GetAI = GetAI_boss_grand_warlock_nethekurse;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_fel_orc_convert";
     newscript->GetAI = GetAI_mob_fel_orc_convert;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_lesser_shadow_fissure";
     newscript->GetAI = GetAI_mob_lesser_shadow_fissure;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/instance_shattered_halls.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/instance_shattered_halls.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/shattered_halls/instance_shattered_halls.cpp (revision 272)
@@ -111,4 +111,4 @@
     newscript->Name = "instance_shattered_halls";
     newscript->GetInstanceData = GetInstanceData_instance_shattered_halls;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/instance_magtheridons_lair.cpp (revision 272)
@@ -119,4 +119,7 @@
     void SetData(uint32 type, uint32 data)
     {
+        Player *player = GetPlayer();
+        if(!player) return;
+
         switch(type)
         {
@@ -127,5 +130,5 @@
             if(data != IN_PROGRESS)
             {
-                if(GameObject *Door = instance->GetGameObjectInMap(DoorGUID))
+                if(GameObject *Door = GameObject::GetGameObject(*player, DoorGUID))
                     Door->SetGoState(0);
             }
@@ -140,5 +143,5 @@
                     for(std::set<uint64>::iterator i = ChannelerGUID.begin(); i != ChannelerGUID.end(); ++i)
                     {
-                        if(Creature *Channeler = instance->GetCreatureInMap(*i))
+                        if(Creature *Channeler = (Creature*)Unit::GetUnit(*player, *i))
                         {
                             if(Channeler->isAlive())
@@ -149,5 +152,5 @@
                     }
                     CageTimer = 0;
-                    if(GameObject *Door = instance->GetGameObjectInMap(DoorGUID))
+                    if(GameObject *Door = GameObject::GetGameObject(*player, DoorGUID))
                         Door->SetGoState(0);
                 }break;
@@ -159,5 +162,5 @@
                     for(std::set<uint64>::iterator i = ChannelerGUID.begin(); i != ChannelerGUID.end(); ++i)
                     {
-                        Creature *Channeler = instance->GetCreatureInMap(*i);
+                        Creature *Channeler = (Creature*)Unit::GetUnit(*player, *i);
                         if(Channeler && Channeler->isAlive())
                         {
@@ -168,5 +171,5 @@
                     }
                     // Release Magtheridon after two minutes.
-                    Creature *Magtheridon = instance->GetCreatureInMap(MagtheridonGUID);
+                    Creature *Magtheridon = (Creature*)Unit::GetUnit(*player, MagtheridonGUID);
                     if(Magtheridon && Magtheridon->isAlive())
                     {
@@ -174,5 +177,5 @@
                         CageTimer = 120000;
                     }
-                    if(GameObject *Door = instance->GetGameObjectInMap(DoorGUID))
+                    if(GameObject *Door = GameObject::GetGameObject(*player, DoorGUID))
                         Door->SetGoState(1);
                 }break;
@@ -180,5 +183,5 @@
                 for(std::set<uint64>::iterator i = ChannelerGUID.begin(); i != ChannelerGUID.end(); ++i)
                 {
-                    Creature *Channeler = instance->GetCreatureInMap(*i);
+                    Unit *Channeler = Unit::GetUnit(*player, *i);
                     if(Channeler && Channeler->isAlive())
                     {
@@ -195,5 +198,5 @@
             for(std::set<uint64>::iterator i = ColumnGUID.begin(); i != ColumnGUID.end(); ++i)
             {
-                if(GameObject *Column = instance->GetGameObjectInMap(*i))
+                if(GameObject *Column = GameObject::GetGameObject(*player, *i))
                     Column->SetGoState(!data);
             }
@@ -211,4 +214,11 @@
     }
 
+    Player* GetPlayer()
+    {
+        if(((InstanceMap*)instance)->GetPlayers().size())
+            return ((InstanceMap*)instance)->GetPlayers().front();
+        return NULL;
+    }
+
     void AttackNearestTarget(Creature *creature)
     {
@@ -216,19 +226,16 @@
         float range;
         Player* target = NULL;
-        Map::PlayerList const &PlayerList = instance->GetPlayers();
-        Map::PlayerList::const_iterator i;
+        InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)instance)->GetPlayers();
+        InstanceMap::PlayerList::const_iterator i;
         for(i = PlayerList.begin(); i != PlayerList.end(); ++i)
         {
-            if(Player* i_pl = i->getSource())
-            {
-                if(i_pl->isTargetableForAttack())
-                {
-                    range = i_pl->GetDistance(creature);
-                    if(range < minRange)
-                    {
-                        minRange = range;
-                        target = i_pl;
-                    }                
-                }
+            if((*i)->isTargetableForAttack())
+            {
+                range = (*i)->GetDistance(creature);
+                if(range < minRange)
+                {
+                    minRange = range;
+                    target = *i;
+                }                
             }
         }
@@ -242,9 +249,12 @@
             if(CageTimer <= diff)
             {
-                Creature *Magtheridon = instance->GetCreatureInMap(MagtheridonGUID);
-                if(Magtheridon && Magtheridon->isAlive())
-                {
-                    Magtheridon->clearUnitState(UNIT_STAT_STUNNED);
-                    AttackNearestTarget(Magtheridon);
+                if(Player *player = GetPlayer())
+                {
+                    Creature *Magtheridon = (Creature*)Unit::GetUnit(*player, MagtheridonGUID);
+                    if(Magtheridon && Magtheridon->isAlive())
+                    {
+                        Magtheridon->clearUnitState(UNIT_STAT_STUNNED);
+                        AttackNearestTarget(Magtheridon);
+                    }
                 }
                 CageTimer = 0;
@@ -256,12 +266,15 @@
             if(RespawnTimer <= diff)
             {
-                for(std::set<uint64>::iterator i = ChannelerGUID.begin(); i != ChannelerGUID.end(); ++i)
-                {
-                    if(Creature *Channeler = instance->GetCreatureInMap(*i))
-                    {
-                        if(Channeler->isAlive())
-                            Channeler->AI()->EnterEvadeMode();
-                        else
-                            Channeler->Respawn();
+                if(Player *player = GetPlayer())
+                {
+                    for(std::set<uint64>::iterator i = ChannelerGUID.begin(); i != ChannelerGUID.end(); ++i)
+                    {
+                        if(Creature *Channeler = (Creature*)Unit::GetUnit(*player, *i))
+                        {
+                            if(Channeler->isAlive())
+                                Channeler->AI()->EnterEvadeMode();
+                            else
+                                Channeler->Respawn();
+                        }
                     }
                 }
@@ -283,4 +296,4 @@
     newscript->Name = "instance_magtheridons_lair";
     newscript->GetInstanceData = GetInstanceData_instance_magtheridons_lair;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/hellfire_citadel/magtheridons_lair/boss_magtheridon.cpp (revision 272)
@@ -546,20 +546,20 @@
     newscript->Name="boss_magtheridon";
     newscript->GetAI = GetAI_boss_magtheridon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_hellfire_channeler";
     newscript->GetAI = GetAI_mob_hellfire_channeler;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="go_manticron_cube";
     newscript->pGOHello = &GOHello_go_Manticron_Cube;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_abyssal";
     newscript->GetAI = GetAI_mob_abyssalAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
 }
Index: trunk/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/black_temple/boss_teron_gorefiend.cpp (revision 272)
@@ -576,14 +576,14 @@
     newscript->Name = "mob_doom_blossom";
     newscript->GetAI = GetAI_mob_doom_blossom;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "mob_shadowy_construct";
     newscript->GetAI = GetAI_mob_shadowy_construct;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_teron_gorefiend";
     newscript->GetAI = GetAI_boss_teron_gorefiend;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/black_temple/black_temple.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/black_temple/black_temple.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/black_temple/black_temple.cpp (revision 272)
@@ -65,4 +65,4 @@
     newscript->pGossipHello = GossipHello_npc_spirit_of_olum;
     newscript->pGossipSelect = GossipSelect_npc_spirit_of_olum;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/black_temple/boss_illidan.cpp (revision 272)
@@ -2248,5 +2248,5 @@
     newscript->Name = "boss_illidan_stormrage";
     newscript->GetAI = GetAI_boss_illidan_stormrage;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -2255,44 +2255,44 @@
     newscript->pGossipHello = GossipHello_npc_akama_at_illidan;
     newscript->pGossipSelect = GossipSelect_npc_akama_at_illidan;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "boss_maiev_shadowsong";
     newscript->GetAI = GetAI_boss_maiev;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "mob_flame_of_azzinoth";
     newscript->GetAI = GetAI_mob_flame_of_azzinoth;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "mob_blade_of_azzinoth";
     newscript->GetAI = GetAI_blade_of_azzinoth;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "gameobject_cage_trap";
     newscript->pGOHello = GOHello_cage_trap;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_cage_trap_trigger";
     newscript->GetAI = &GetAI_cage_trap_trigger;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "mob_shadow_demon";
     newscript->GetAI = GetAI_shadow_demon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_demon_fire";
     newscript->GetAI = GetAI_demonfire;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "mob_parasitic_shadowfiend";
     newscript->GetAI = GetAI_parasitic_shadowfiend;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/black_temple/boss_mother_shahraz.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/black_temple/boss_mother_shahraz.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/black_temple/boss_mother_shahraz.cpp (revision 272)
@@ -358,4 +358,4 @@
     newscript->Name="boss_mother_shahraz";
     newscript->GetAI = GetAI_boss_shahraz;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/black_temple/illidari_council.cpp (revision 272)
@@ -856,29 +856,29 @@
     newscript->Name="mob_illidari_council";
     newscript->GetAI = GetAI_mob_illidari_council;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "mob_blood_elf_council_voice_trigger";
     newscript->GetAI = GetAI_mob_blood_elf_council_voice_trigger;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_gathios_the_shatterer";
     newscript->GetAI = GetAI_boss_gathios_the_shatterer;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_lady_malande";
     newscript->GetAI = GetAI_boss_lady_malande;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_veras_darkshadow";
     newscript->GetAI = GetAI_boss_veras_darkshadow;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_high_nethermancer_zerevor";
     newscript->GetAI = GetAI_boss_high_nethermancer_zerevor;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/black_temple/instance_black_temple.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/black_temple/instance_black_temple.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/black_temple/instance_black_temple.cpp (revision 272)
@@ -333,4 +333,4 @@
     newscript->Name = "instance_black_temple";
     newscript->GetInstanceData = GetInstanceData_instance_black_temple;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/black_temple/boss_warlord_najentus.cpp (revision 272)
@@ -259,9 +259,9 @@
     newscript->Name="boss_najentus";
     newscript->GetAI = GetAI_boss_najentus;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "go_najentus_spine";
     newscript->pGOHello = &GOHello_go_najentus_spine;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/black_temple/boss_shade_of_akama.cpp (revision 272)
@@ -797,15 +797,15 @@
     newscript->Name="boss_shade_of_akama";
     newscript->GetAI = GetAI_boss_shade_of_akama;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_ashtongue_channeler";
     newscript->GetAI = GetAI_mob_ashtongue_channeler;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_ashtongue_sorcerer";
     newscript->GetAI = GetAI_mob_ashtongue_sorcerer;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -814,4 +814,4 @@
     newscript->pGossipHello = &GossipHello_npc_akama;
     newscript->pGossipSelect = &GossipSelect_npc_akama;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/black_temple/boss_supremus.cpp (revision 272)
@@ -237,9 +237,9 @@
     newscript->Name="boss_supremus";
     newscript->GetAI = GetAI_boss_supremus;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="molten_flame";
     newscript->GetAI = GetAI_molten_flame;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/black_temple/boss_bloodboil.cpp (revision 272)
@@ -362,4 +362,4 @@
     newscript->Name="boss_gurtogg_bloodboil";
     newscript->GetAI = GetAI_boss_gurtogg_bloodboil;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/black_temple/boss_reliquary_of_souls.cpp (revision 272)
@@ -724,24 +724,24 @@
     newscript->Name="boss_reliquary_of_souls";
     newscript->GetAI = GetAI_boss_reliquary_of_souls;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_essence_of_suffering";
     newscript->GetAI = GetAI_boss_essence_of_suffering;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_essence_of_desire";
     newscript->GetAI = GetAI_boss_essence_of_desire;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_essence_of_anger";
     newscript->GetAI = GetAI_boss_essence_of_anger;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_enslaved_soul";
     newscript->GetAI = GetAI_npc_enslaved_soul;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stonetalon_mountains/stonetalon_mountains.cpp (revision 272)
@@ -77,4 +77,4 @@
     newscript->pGossipHello = &GossipHello_npc_braug_dimspirit;
     newscript->pGossipSelect = &GossipSelect_npc_braug_dimspirit;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_warp_splinter.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_warp_splinter.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_warp_splinter.cpp (revision 272)
@@ -294,9 +294,9 @@
     newscript->Name="boss_warp_splinter";
     newscript->GetAI = GetAI_boss_warp_splinter;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_warp_splinter_treant";
     newscript->GetAI = GetAI_mob_treant;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_high_botanist_freywinn.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_high_botanist_freywinn.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_high_botanist_freywinn.cpp (revision 272)
@@ -212,4 +212,4 @@
     newscript->Name="boss_high_botanist_freywinn";
     newscript->GetAI = GetAI_boss_high_botanist_freywinn;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_laj.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_laj.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/botanica/boss_laj.cpp (revision 272)
@@ -195,4 +195,4 @@
     newscript->Name="boss_laj";
     newscript->GetAI = GetAI_boss_laj;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_kaelthas.cpp (revision 272)
@@ -1582,34 +1582,34 @@
     newscript->Name="boss_kaelthas";
     newscript->GetAI = GetAI_boss_kaelthas;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_thaladred_the_darkener";
     newscript->GetAI = GetAI_boss_thaladred_the_darkener;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_lord_sanguinar";
     newscript->GetAI = GetAI_boss_lord_sanguinar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_grand_astromancer_capernian";
     newscript->GetAI = GetAI_boss_grand_astromancer_capernian;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_master_engineer_telonicus";
     newscript->GetAI = GetAI_boss_master_engineer_telonicus;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name= "mob_kael_flamestrike";
     newscript->GetAI = GetAI_mob_kael_flamestrike;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_phoenix";
     newscript->GetAI = GetAI_mob_phoenix;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/the_eye.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/the_eye.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/the_eye.cpp (revision 272)
@@ -95,4 +95,4 @@
     newscript->Name="mob_crystalcore_devastator";
     newscript->GetAI = GetAI_mob_crystalcore_devastator;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_astromancer.cpp (revision 272)
@@ -537,9 +537,9 @@
     newscript->Name="boss_high_astromancer_solarian";
     newscript->GetAI = GetAI_boss_high_astromancer_solarian;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_solarium_priest";
     newscript->GetAI = GetAI_mob_solarium_priest;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_alar.cpp (revision 272)
@@ -506,14 +506,14 @@
     newscript->Name="boss_alar";
     newscript->GetAI = GetAI_boss_alar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_ember_of_alar";
     newscript->GetAI = GetAI_mob_ember_of_alar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_flame_patch_alar";
     newscript->GetAI = GetAI_mob_flame_patch_alar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/instance_the_eye.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/instance_the_eye.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/instance_the_eye.cpp (revision 272)
@@ -173,4 +173,4 @@
     newscript->Name = "instance_the_eye";
     newscript->GetInstanceData = GetInstanceData_instance_the_eye;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_void_reaver.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_void_reaver.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_eye/boss_void_reaver.cpp (revision 272)
@@ -196,4 +196,4 @@
     newscript->Name="boss_void_reaver";
     newscript->GetAI = GetAI_boss_void_reaver;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/boss_harbinger_skyriss.cpp (revision 272)
@@ -368,9 +368,9 @@
     newscript->Name="boss_harbinger_skyriss";
     newscript->GetAI = GetAI_boss_harbinger_skyriss;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_harbinger_skyriss_illusion";
     newscript->GetAI = GetAI_boss_harbinger_skyriss_illusion;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/arcatraz.cpp (revision 272)
@@ -576,14 +576,14 @@
     newscript->Name="npc_millhouse_manastorm";
     newscript->GetAI = GetAI_npc_millhouse_manastorm;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_warden_mellichar";
     newscript->GetAI = GetAI_npc_warden_mellichar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_zerekethvoidzone";
     newscript->GetAI = GetAI_mob_zerekethvoidzoneAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/instance_arcatraz.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/instance_arcatraz.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/arcatraz/instance_arcatraz.cpp (revision 272)
@@ -221,4 +221,4 @@
     newscript->Name = "instance_arcatraz";
     newscript->GetInstanceData = GetInstanceData_instance_arcatraz;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_nethermancer_sepethrea.cpp (revision 272)
@@ -278,9 +278,9 @@
     newscript->Name="boss_nethermancer_sepethrea";    
     newscript->GetAI = GetAI_boss_nethermancer_sepethrea;    
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;    
     newscript->Name="mob_ragin_flames";    
     newscript->GetAI = GetAI_mob_ragin_flames;    
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp (revision 263)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/instance_mechanar.cpp (revision 272)
@@ -87,4 +87,4 @@
     newscript->Name = "instance_mechanar";
     newscript->GetInstanceData = GetInstanceData_instance_mechanar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_gatewatcher_ironhand.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_gatewatcher_ironhand.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_gatewatcher_ironhand.cpp (revision 272)
@@ -158,4 +158,4 @@
     newscript->Name="boss_gatewatcher_iron_hand";    
     newscript->GetAI = GetAI_boss_gatewatcher_iron_hand;    
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_pathaleon_the_calculator.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_pathaleon_the_calculator.cpp (revision 263)
+++ trunk/src/bindings/scripts/scripts/zone/tempest_keep/the_mechanar/boss_pathaleon_the_calculator.cpp (revision 272)
@@ -298,9 +298,9 @@
     newscript->Name="boss_pathaleon_the_calculator";    
     newscript->GetAI = GetAI_boss_pathaleon_the_calculator;    
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;    
     newscript->Name="mob_nether_wraith";    
     newscript->GetAI = GetAI_mob_nether_wraith;    
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stormwind/stormwind_city.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stormwind/stormwind_city.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stormwind/stormwind_city.cpp (revision 272)
@@ -246,5 +246,5 @@
     newscript->pGossipHello = &GossipHello_npc_archmage_malin;
     newscript->pGossipSelect = &GossipSelect_npc_archmage_malin;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -252,5 +252,5 @@
     newscript->GetAI = GetAI_npc_bartleby;
     newscript->pQuestAccept = &QuestAccept_npc_bartleby;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -258,10 +258,10 @@
     newscript->GetAI = GetAI_npc_dashel_stonefist;
     newscript->pQuestAccept = &QuestAccept_npc_dashel_stonefist;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "npc_general_marcus_jonathan";
     newscript->pReceiveEmote = &ReceiveEmote_npc_general_marcus_jonathan;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -269,4 +269,4 @@
     newscript->pGossipHello = &GossipHello_npc_lady_katrana_prestor;
     newscript->pGossipSelect = &GossipSelect_npc_lady_katrana_prestor;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_bug_trio.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_bug_trio.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_bug_trio.cpp (revision 272)
@@ -335,14 +335,14 @@
     newscript->Name="boss_kri";
     newscript->GetAI = GetAI_boss_kri;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_vem";
     newscript->GetAI = GetAI_boss_vem;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_yauj";
     newscript->GetAI = GetAI_boss_yauj;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_huhuran.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_huhuran.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_huhuran.cpp (revision 272)
@@ -140,4 +140,4 @@
     newscript->Name="boss_huhuran";
     newscript->GetAI = GetAI_boss_huhuran;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_twinemperors.cpp (revision 272)
@@ -690,9 +690,9 @@
     newscript->Name="boss_veknilash";
     newscript->GetAI = GetAI_boss_veknilash;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_veklor";
     newscript->GetAI = GetAI_boss_veklor;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_fankriss.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_fankriss.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_fankriss.cpp (revision 272)
@@ -187,4 +187,4 @@
     newscript->Name="boss_fankriss";
     newscript->GetAI = GetAI_boss_fankriss;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_cthun.cpp (revision 272)
@@ -578,21 +578,18 @@
                 if(!map->IsDungeon()) return;
 
-                Map::PlayerList const &PlayerList = map->GetPlayers();
-                for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
-                {
-                    if (Player* i_pl = i->getSource())
+                InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
+                for (InstanceMap::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
+                {
+                    //Play random sound to the zone
+                    switch (rand()%8)
                     {
-                        //Play random sound to the zone
-                        switch (rand()%8)
-                        {
-                            case 0: i_pl->SendPlaySound(RND_WISPER_1, true); break;
-                            case 1: i_pl->SendPlaySound(RND_WISPER_2, true); break;
-                            case 2: i_pl->SendPlaySound(RND_WISPER_3, true); break;
-                            case 3: i_pl->SendPlaySound(RND_WISPER_4, true); break;
-                            case 4: i_pl->SendPlaySound(RND_WISPER_5, true); break;
-                            case 5: i_pl->SendPlaySound(RND_WISPER_6, true); break;
-                            case 6: i_pl->SendPlaySound(RND_WISPER_7, true); break;
-                            case 7: i_pl->SendPlaySound(RND_WISPER_8, true); break;
-                        }
+                        case 0: (*i)->SendPlaySound(RND_WISPER_1, true); break;
+                        case 1: (*i)->SendPlaySound(RND_WISPER_2, true); break;
+                        case 2: (*i)->SendPlaySound(RND_WISPER_3, true); break;
+                        case 3: (*i)->SendPlaySound(RND_WISPER_4, true); break;
+                        case 4: (*i)->SendPlaySound(RND_WISPER_5, true); break;
+                        case 5: (*i)->SendPlaySound(RND_WISPER_6, true); break;
+                        case 6: (*i)->SendPlaySound(RND_WISPER_7, true); break;
+                        case 7: (*i)->SendPlaySound(RND_WISPER_8, true); break;
                     }
                 }
@@ -1330,34 +1327,34 @@
     newscript->Name="boss_eye_of_cthun";
     newscript->GetAI = GetAI_eye_of_cthun;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_cthun";
     newscript->GetAI = GetAI_cthun;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_eye_tentacle";
     newscript->GetAI = GetAI_eye_tentacle;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_claw_tentacle";
     newscript->GetAI = GetAI_claw_tentacle;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_giant_claw_tentacle";
     newscript->GetAI = GetAI_giant_claw_tentacle;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_giant_eye_tentacle";
     newscript->GetAI = GetAI_giant_eye_tentacle;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_giant_flesh_tentacle";
     newscript->GetAI = GetAI_flesh_tentacle;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_sartura.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_sartura.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_sartura.cpp (revision 272)
@@ -260,9 +260,9 @@
     newscript->Name="boss_sartura";
     newscript->GetAI = GetAI_boss_sartura;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_sartura_royal_guard";
     newscript->GetAI = GetAI_mob_sartura_royal_guard;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_skeram.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_skeram.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_skeram.cpp (revision 272)
@@ -311,4 +311,4 @@
     newscript->Name="boss_skeram";
     newscript->GetAI = GetAI_boss_skeram;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/boss_ouro.cpp (revision 272)
@@ -137,4 +137,4 @@
     newscript->Name="boss_ouro";
     newscript->GetAI = GetAI_boss_ouro;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/instance_temple_of_ahnqiraj.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/instance_temple_of_ahnqiraj.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/instance_temple_of_ahnqiraj.cpp (revision 272)
@@ -162,4 +162,4 @@
     newscript->Name = "instance_temple_of_ahnqiraj";
     newscript->GetInstanceData = GetInstanceData_instance_temple_of_ahnqiraj;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/mob_anubisath_sentinel.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/mob_anubisath_sentinel.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/temple_of_ahnqiraj/mob_anubisath_sentinel.cpp (revision 272)
@@ -310,5 +310,5 @@
     newscript->Name="mob_anubisath_sentinel";
     newscript->GetAI = GetAI_mob_anubisath_sentinelAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
 
Index: trunk/src/bindings/scripts/scripts/zone/ironforge/ironforge.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/ironforge/ironforge.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/ironforge/ironforge.cpp (revision 272)
@@ -90,4 +90,4 @@
     newscript->pGossipHello =  &GossipHello_npc_royal_historian_archesonus;
     newscript->pGossipSelect = &GossipSelect_npc_royal_historian_archesonus;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/shadowmoon_valley/boss_doomwalker.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/shadowmoon_valley/boss_doomwalker.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/shadowmoon_valley/boss_doomwalker.cpp (revision 272)
@@ -213,4 +213,4 @@
     newscript->Name="boss_doomwalker";
     newscript->GetAI = GetAI_boss_doomwalker;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/shadowmoon_valley/shadowmoon_valley.cpp (revision 272)
@@ -1107,15 +1107,15 @@
     newscript->Name = "mob_mature_netherwing_drake";
     newscript->GetAI = GetAI_mob_mature_netherwing_drake;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "mob_enslaved_netherwing_drake";
     newscript->GetAI = GetAI_mob_enslaved_netherwing_drake;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
 	newscript = new Script;
 	newscript->Name = "mob_dragonmaw_peon";
 	newscript->GetAI = GetAI_mob_dragonmaw_peon;
-	newscript->RegisterSelf();
+	m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -1123,10 +1123,10 @@
     newscript->pGossipHello =  &GossipHello_npc_drake_dealer_hurlunk;
     newscript->pGossipSelect = &GossipSelect_npc_drake_dealer_hurlunk;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_invis_legion_teleporter";
     newscript->GetAI = GetAI_npc_invis_legion_teleporter;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -1134,5 +1134,5 @@
     newscript->pGossipHello =  &GossipHello_npcs_flanis_swiftwing_and_kagrosh;
     newscript->pGossipSelect = &GossipSelect_npcs_flanis_swiftwing_and_kagrosh;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -1140,5 +1140,5 @@
     newscript->pGossipHello =  &GossipHello_npc_murkblood_overseer;
     newscript->pGossipSelect = &GossipSelect_npc_murkblood_overseer;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -1146,10 +1146,10 @@
     newscript->pGossipHello =  &GossipHello_npc_neltharaku;
     newscript->pGossipSelect = &GossipSelect_npc_neltharaku;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "npc_karynaku";
     newscript->pQuestAccept = &QuestAccept_npc_karynaku;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -1157,5 +1157,5 @@
     newscript->pGossipHello =  &GossipHello_npc_oronok_tornheart;
     newscript->pGossipSelect = &GossipSelect_npc_oronok_tornheart;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
 	newscript = new Script;
@@ -1163,10 +1163,10 @@
 	newscript->GetAI = GetAI_Overlord_Morghor;
 	newscript->pQuestAccept = &QuestAccept_Overlord_Morghor;
-	newscript->RegisterSelf();
+	m_scripts[nrscripts++] = newscript;
 
 	newscript = new Script;
 	newscript->Name = "npc_lord_illidan_stormrage";
 	newscript->GetAI = GetAI_Lord_Illidan;
-	newscript->RegisterSelf();
+	m_scripts[nrscripts++] = newscript;
 
 	newscript = new Script;
@@ -1175,4 +1175,4 @@
 	newscript->pGossipHello = &GossipHello_npc_yarzill_fly;
 	newscript->pGossipSelect = &GossipSelect_npc_yarzill_fly;
-	newscript->RegisterSelf();
-}
+	m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_gyth.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_gyth.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_gyth.cpp (revision 272)
@@ -202,4 +202,4 @@
     newscript->Name="boss_gyth";
     newscript->GetAI = GetAI_boss_gyth;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_warmaster_voone.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_warmaster_voone.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_warmaster_voone.cpp (revision 272)
@@ -118,4 +118,4 @@
     newscript->Name="boss_warmaster_voone";
     newscript->GetAI = GetAI_boss_warmastervoone;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_halycon.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_halycon.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_halycon.cpp (revision 272)
@@ -92,4 +92,4 @@
     newscript->Name="boss_halycon";
     newscript->GetAI = GetAI_boss_halycon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_the_beast.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_the_beast.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_the_beast.cpp (revision 272)
@@ -90,4 +90,4 @@
     newscript->Name="boss_the_beast";
     newscript->GetAI = GetAI_boss_thebeast;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_overlord_wyrmthalak.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_overlord_wyrmthalak.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_overlord_wyrmthalak.cpp (revision 272)
@@ -124,4 +124,4 @@
     newscript->Name="boss_overlord_wyrmthalak";
     newscript->GetAI = GetAI_boss_overlordwyrmthalak;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_rend_blackhand.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_rend_blackhand.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_rend_blackhand.cpp (revision 272)
@@ -88,4 +88,4 @@
     newscript->Name="boss_rend_blackhand";
     newscript->GetAI = GetAI_boss_rend_blackhand;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_highlord_omokk.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_highlord_omokk.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_highlord_omokk.cpp (revision 272)
@@ -128,4 +128,4 @@
     newscript->Name="boss_highlord_omokk";
     newscript->GetAI = GetAI_boss_highlordomokk;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_mother_smolderweb.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_mother_smolderweb.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_mother_smolderweb.cpp (revision 272)
@@ -83,4 +83,4 @@
     newscript->Name="boss_mother_smolderweb";
     newscript->GetAI = GetAI_boss_mothersmolderweb;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_shadow_hunter_voshgajin.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_shadow_hunter_voshgajin.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_shadow_hunter_voshgajin.cpp (revision 272)
@@ -92,4 +92,4 @@
     newscript->Name="boss_shadow_hunter_voshgajin";
     newscript->GetAI = GetAI_boss_shadowvosh;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_drakkisath.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_drakkisath.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_drakkisath.cpp (revision 272)
@@ -98,4 +98,4 @@
     newscript->Name="boss_drakkisath";
     newscript->GetAI = GetAI_boss_drakkisath;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_pyroguard_emberseer.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_pyroguard_emberseer.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_pyroguard_emberseer.cpp (revision 272)
@@ -90,4 +90,4 @@
     newscript->Name="boss_pyroguard_emberseer";
     newscript->GetAI = GetAI_boss_pyroguard_emberseer;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_quartermaster_zigris.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_quartermaster_zigris.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_spire/boss_quartermaster_zigris.cpp (revision 272)
@@ -82,4 +82,4 @@
     newscript->Name="quartermaster_zigris";
     newscript->GetAI = GetAI_boss_quatermasterzigris;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/elwynn_forest/elwynn_forest.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/elwynn_forest/elwynn_forest.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/elwynn_forest/elwynn_forest.cpp (revision 272)
@@ -95,4 +95,4 @@
     newscript->Name="npc_henze_faulk";
     newscript->GetAI = GetAI_npc_henze_faulk;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blasted_lands/blasted_lands.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blasted_lands/blasted_lands.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blasted_lands/blasted_lands.cpp (revision 272)
@@ -150,5 +150,5 @@
     newscript->pGossipHello =  &GossipHello_npc_deathly_usher;
     newscript->pGossipSelect = &GossipSelect_npc_deathly_usher;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -156,4 +156,4 @@
     newscript->pGossipHello =  &GossipHello_npc_fallen_hero_of_horde;
     newscript->pGossipSelect = &GossipSelect_npc_fallen_hero_of_horde;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blasted_lands/boss_kruul.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blasted_lands/boss_kruul.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blasted_lands/boss_kruul.cpp (revision 272)
@@ -179,4 +179,4 @@
     newscript->Name="boss_kruul";
     newscript->GetAI = GetAI_boss_kruul;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tanaris/tanaris.cpp (revision 272)
@@ -375,10 +375,10 @@
     newscript->Name="mob_aquementas";
     newscript->GetAI = GetAI_mob_aquementas;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_custodian_of_time";
     newscript->GetAI = GetAI_npc_custodian_of_time;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -386,5 +386,5 @@
     newscript->pGossipHello =  &GossipHello_npc_marin_noggenfogger;
     newscript->pGossipSelect = &GossipSelect_npc_marin_noggenfogger;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -393,5 +393,5 @@
     newscript->pGossipSelect = &GossipSelect_npc_steward_of_time;
     newscript->pQuestAccept =  &QuestAccept_npc_steward_of_time;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -399,4 +399,4 @@
     newscript->pGossipHello =  &GossipHello_npc_stone_watcher_of_norgannon;
     newscript->pGossipSelect = &GossipSelect_npc_stone_watcher_of_norgannon;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/shattrath/shattrath_city.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/shattrath/shattrath_city.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/shattrath/shattrath_city.cpp (revision 272)
@@ -415,5 +415,5 @@
     newscript->pGossipHello =  &GossipHello_npc_raliq_the_drunk;
     newscript->pGossipSelect = &GossipSelect_npc_raliq_the_drunk;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -421,5 +421,5 @@
     newscript->GetAI = GetAI_npc_salsalabim;
     newscript->pGossipHello =  &GossipHello_npc_salsalabim;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -427,5 +427,5 @@
     newscript->pGossipHello =  &GossipHello_npc_shattrathflaskvendors;
     newscript->pGossipSelect = &GossipSelect_npc_shattrathflaskvendors;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -433,9 +433,9 @@
     newscript->pGossipHello =  &GossipHello_npc_zephyr;
     newscript->pGossipSelect = &GossipSelect_npc_zephyr;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
        newscript = new Script;
     newscript->Name="npc_kservant";
     newscript->GetAI = GetAI_npc_kservantAI;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/eversong_woods/eversong_woods.cpp (revision 272)
@@ -153,5 +153,5 @@
     newscript->Name="mobs_mana_tapped";
     newscript->GetAI = GetAI_mobs_mana_tapped;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -160,4 +160,4 @@
     newscript->pGossipHello =  &GossipHello_npc_prospector_anvilward;
     newscript->pGossipSelect = &GossipSelect_npc_prospector_anvilward;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_kalecgos.cpp (revision 272)
@@ -369,10 +369,11 @@
         Map *map = m_creature->GetMap();
         if(!map->IsDungeon()) return;
-        Map::PlayerList const &PlayerList = map->GetPlayers();
-        Map::PlayerList::const_iterator i;
-        for(i = PlayerList.begin(); i != PlayerList.end(); ++i)
-            if(Player* i_pl = i->getSource())
-                if(i_pl->HasAura(AURA_SPECTRAL_REALM,0))
-                    i_pl->RemoveAurasDueToSpell(AURA_SPECTRAL_REALM);
+        InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
+        InstanceMap::PlayerList::const_iterator i;
+        for (i = PlayerList.begin(); i != PlayerList.end(); ++i)
+        {
+            if((*i)->HasAura(AURA_SPECTRAL_REALM,0))
+                (*i)->RemoveAurasDueToSpell(AURA_SPECTRAL_REALM);
+        }
     }
 
@@ -681,19 +682,19 @@
     newscript->Name="boss_kalecgos";
     newscript->GetAI = GetAI_boss_kalecgos;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_sathrovarr";
     newscript->GetAI = GetAI_boss_Sathrovarr;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_kalec";
     newscript->GetAI = GetAI_boss_kalec;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="kalocegos_teleporter";
     newscript->pGOHello = &GOkalocegos_teleporter;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_brutallus.cpp (revision 272)
@@ -179,4 +179,4 @@
     newscript->Name="boss_brutallus";
     newscript->GetAI = GetAI_boss_brutallus;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/instance_sunwell_plateau.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/instance_sunwell_plateau.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/instance_sunwell_plateau.cpp (revision 272)
@@ -193,4 +193,4 @@
     newscript->Name = "instance_sunwell_plateau";
     newscript->GetInstanceData = GetInstanceData_instance_sunwell_plateau;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_felmyst.cpp (revision 272)
@@ -296,5 +296,5 @@
             break;
         case 2:
-            if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true))
+            if(Player* target = SelectRandomPlayer(150))
             {
                 Creature* Vapor = m_creature->SummonCreature(MOB_VAPOR, target->GetPositionX()-5+rand()%10, target->GetPositionY()-5+rand()%10, target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 9000);
@@ -312,5 +312,5 @@
             DespawnSummons(MOB_VAPOR_TRAIL);
             //m_creature->CastSpell(m_creature, SPELL_VAPOR_SELECT); need core support
-            if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true))
+            if(Player* target = SelectRandomPlayer(150))
             {
                 //target->CastSpell(target, SPELL_VAPOR_SUMMON, true); need core support
@@ -331,5 +331,5 @@
             break;
         case 5:
-            if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true))
+            if(Player* target = SelectRandomPlayer(150))
             {
                 BreathX = target->GetPositionX();
@@ -434,5 +434,5 @@
                 break;
             case EVENT_ENCAPSULATE:
-                if(Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 150, true))
+                if(Unit* target = SelectRandomPlayer(150))
                 {
                     m_creature->CastSpell(target, SPELL_ENCAPSULATE_CHANNEL, false);
@@ -516,4 +516,24 @@
         }
     }
+
+    Player* SelectRandomPlayer(float range = 0.0f)
+    {
+        Map *map = m_creature->GetMap();
+        if (!map->IsDungeon()) return NULL;
+
+        InstanceMap::PlayerList PlayerList = ((InstanceMap*)map)->GetPlayers();
+        InstanceMap::PlayerList::iterator i;
+        while(PlayerList.size())
+        {
+            i = PlayerList.begin();
+            advance(i, rand()%PlayerList.size());
+            if((range == 0.0f || m_creature->IsWithinDistInMap(*i, range))
+                && (*i)->isTargetableForAttack())
+                return *i;
+            else
+                PlayerList.erase(i);
+        }
+        return NULL;
+    }
 };
 
@@ -575,14 +595,14 @@
     newscript->Name="boss_felmyst";
     newscript->GetAI = GetAI_boss_felmyst;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_felmyst_vapor";
     newscript->GetAI = GetAI_mob_felmyst_vapor;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_felmyst_trail";
     newscript->GetAI = GetAI_mob_felmyst_trail;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
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 260)
+++ trunk/src/bindings/scripts/scripts/zone/sunwell_plateau/boss_eredar_twins.cpp (revision 272)
@@ -762,14 +762,14 @@
     newscript->Name="boss_sacrolash";
     newscript->GetAI = GetAI_boss_sacrolash;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_alythess";
     newscript->GetAI = GetAI_boss_alythess;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_shadow_image";
     newscript->GetAI = GetAI_mob_shadow_image;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/moonglade/moonglade.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/moonglade/moonglade.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/moonglade/moonglade.cpp (revision 272)
@@ -546,5 +546,5 @@
     newscript->pGossipHello =  &GossipHello_npc_bunthen_plainswind;
     newscript->pGossipSelect = &GossipSelect_npc_bunthen_plainswind;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -552,5 +552,5 @@
     newscript->pGossipHello =  &GossipHello_npc_great_bear_spirit;
     newscript->pGossipSelect = &GossipSelect_npc_great_bear_spirit;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -558,14 +558,14 @@
     newscript->pGossipHello =  &GossipHello_npc_silva_filnaveth;
     newscript->pGossipSelect = &GossipSelect_npc_silva_filnaveth;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
 	newscript = new Script;
     newscript->Name="npc_clintar_dreamwalker";
     newscript->pQuestAccept = &QuestAccept_npc_clintar_dreamwalker;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_clintar_spirit";
     newscript->GetAI = GetAI_npc_clintar_spirit;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/undercity/undercity.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/undercity/undercity.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/undercity/undercity.cpp (revision 272)
@@ -246,10 +246,10 @@
     newscript->GetAI = GetAI_npc_lady_sylvanas_windrunner;
     newscript->pChooseReward = &ChooseReward_npc_lady_sylvanas_windrunner;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_highborne_lamenter";
     newscript->GetAI = GetAI_npc_highborne_lamenter;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -257,4 +257,4 @@
     newscript->pGossipHello = &GossipHello_npc_parqual_fintallas;
     newscript->pGossipSelect = &GossipSelect_npc_parqual_fintallas;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_broodlord_lashlayer.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_broodlord_lashlayer.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_broodlord_lashlayer.cpp (revision 272)
@@ -125,4 +125,4 @@
     newscript->Name="boss_broodlord";
     newscript->GetAI = GetAI_boss_broodlord;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_firemaw.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_firemaw.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_firemaw.cpp (revision 272)
@@ -91,4 +91,4 @@
     newscript->Name="boss_firemaw";
     newscript->GetAI = GetAI_boss_firemaw;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_razorgore.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_razorgore.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_razorgore.cpp (revision 272)
@@ -128,4 +128,4 @@
     newscript->Name="boss_razorgore";
     newscript->GetAI = GetAI_boss_razorgore;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_flamegor.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_flamegor.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_flamegor.cpp (revision 272)
@@ -91,4 +91,4 @@
     newscript->Name="boss_flamegor";
     newscript->GetAI = GetAI_boss_flamegor;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_chromaggus.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_chromaggus.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_chromaggus.cpp (revision 272)
@@ -311,4 +311,4 @@
     newscript->Name="boss_chromaggus";
     newscript->GetAI = GetAI_boss_chromaggus;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_vaelastrasz.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_vaelastrasz.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_vaelastrasz.cpp (revision 272)
@@ -258,4 +258,4 @@
     newscript->pGossipHello = &GossipHello_boss_vael;
     newscript->pGossipSelect = &GossipSelect_boss_vael;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_victor_nefarius.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_victor_nefarius.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_victor_nefarius.cpp (revision 272)
@@ -391,4 +391,4 @@
     newscript->pGossipHello = &GossipHello_boss_victor_nefarius;
     newscript->pGossipSelect = &GossipSelect_boss_victor_nefarius;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_nefarian.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_nefarian.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_nefarian.cpp (revision 272)
@@ -224,4 +224,4 @@
     newscript->Name="boss_nefarian";
     newscript->GetAI = GetAI_boss_nefarian;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_ebonroc.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_ebonroc.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackwing_lair/boss_ebonroc.cpp (revision 272)
@@ -100,4 +100,4 @@
     newscript->Name="boss_ebonroc";
     newscript->GetAI = GetAI_boss_ebonroc;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/searing_gorge/searing_gorge.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/searing_gorge/searing_gorge.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/searing_gorge/searing_gorge.cpp (revision 272)
@@ -144,5 +144,5 @@
     newscript->pGossipHello =  &GossipHello_npc_kalaran_windblade;
     newscript->pGossipSelect = &GossipSelect_npc_kalaran_windblade;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -150,5 +150,5 @@
     newscript->pGossipHello          = &GossipHello_npc_lothos_riftwaker;
     newscript->pGossipSelect         = &GossipSelect_npc_lothos_riftwaker;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -156,4 +156,4 @@
     newscript->pGossipHello =  &GossipHello_npc_zamael_lunthistle;
     newscript->pGossipSelect = &GossipSelect_npc_zamael_lunthistle;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blades_edge_mountains/blades_edge_mountains.cpp (revision 272)
@@ -407,15 +407,15 @@
     newscript->Name="mobs_bladespire_ogre";
     newscript->GetAI = GetAI_mobs_bladespire_ogre;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mobs_nether_drake";
     newscript->GetAI = GetAI_mobs_nether_drake;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_daranelle";
     newscript->GetAI = GetAI_npc_daranelle;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -423,5 +423,5 @@
     newscript->pGossipHello = &GossipHello_npc_overseer_nuaar;
     newscript->pGossipSelect = &GossipSelect_npc_overseer_nuaar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -429,5 +429,5 @@
     newscript->pGossipHello = &GossipHello_npc_saikkal_the_elder;
     newscript->pGossipSelect = &GossipSelect_npc_saikkal_the_elder;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -435,4 +435,4 @@
     newscript->pGossipHello =  &GossipHello_npc_skyguard_handler_irena;
     newscript->pGossipSelect = &GossipSelect_npc_skyguard_handler_irena;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_nexusprince_shaffar.cpp (revision 272)
@@ -272,9 +272,9 @@
     newscript->Name="boss_nexusprince_shaffar";
     newscript->GetAI = GetAI_boss_nexusprince_shaffar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_ethereal_beacon";
     newscript->GetAI = GetAI_mob_ethereal_beacon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_pandemonius.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_pandemonius.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/aunchindoun/mana_tombs/boss_pandemonius.cpp (revision 272)
@@ -135,4 +135,4 @@
     newscript->Name="boss_pandemonius";
     newscript->GetAI = GetAI_boss_pandemonius;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/aunchindoun/auchenai_crypts/boss_exarch_maladaar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/aunchindoun/auchenai_crypts/boss_exarch_maladaar.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/aunchindoun/auchenai_crypts/boss_exarch_maladaar.cpp (revision 272)
@@ -349,14 +349,14 @@
     newscript->Name="boss_exarch_maladaar";
     newscript->GetAI = GetAI_boss_exarch_maladaar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_avatar_of_martyred";
     newscript->GetAI = GetAI_mob_avatar_of_martyred;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_stolen_soul";
     newscript->GetAI = GetAI_mob_stolen_soul;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/instance_sethekk_halls.cpp (revision 272)
@@ -71,4 +71,4 @@
     newscript->Name = "instance_sethekk_halls";
     newscript->GetInstanceData = GetInstanceData_instance_sethekk_halls;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_tailonking_ikiss.cpp (revision 272)
@@ -220,4 +220,4 @@
     newscript->Name="boss_talon_king_ikiss";
     newscript->GetAI = GetAI_boss_talon_king_ikiss;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_darkweaver_syth.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_darkweaver_syth.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/aunchindoun/sethekk_halls/boss_darkweaver_syth.cpp (revision 272)
@@ -393,24 +393,24 @@
     newscript->Name="boss_darkweaver_syth";
     newscript->GetAI = GetAI_boss_darkweaver_syth;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_syth_fire";
     newscript->GetAI = GetAI_mob_syth_arcane;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_syth_arcane";
     newscript->GetAI = GetAI_mob_syth_arcane;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_syth_frost";
     newscript->GetAI = GetAI_mob_syth_frost;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_syth_shadow";
     newscript->GetAI = GetAI_mob_syth_shadow;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_blackheart_the_inciter.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_blackheart_the_inciter.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_blackheart_the_inciter.cpp (revision 272)
@@ -174,4 +174,4 @@
     newscript->Name="boss_blackheart_the_inciter";
     newscript->GetAI = GetAI_boss_blackheart_the_inciter;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/instance_shadow_labyrinth.cpp (revision 272)
@@ -175,4 +175,4 @@
     newscript->Name = "instance_shadow_labyrinth";
     newscript->GetInstanceData = GetInstanceData_instance_shadow_labyrinth;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_grandmaster_vorpil.cpp (revision 272)
@@ -221,5 +221,16 @@
         if ( DrawnShadows_Timer < diff)
         {
-            DoTeleportAll(VorpilPosition[0][0],VorpilPosition[0][1],VorpilPosition[0][2],0);
+            Map *map = m_creature->GetMap();
+            if(map->IsDungeon())
+            {
+                InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
+                for (InstanceMap::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
+                {
+                    if((*i)->isAlive())
+                    {
+                        (*i)->TeleportTo(555,VorpilPosition[0][0],VorpilPosition[0][1],VorpilPosition[0][2],0);
+                    }
+                }
+            }
             m_creature->Relocate(VorpilPosition[0][0],VorpilPosition[0][1],VorpilPosition[0][2],0);
             DoCast(m_creature,SPELL_DRAWN_SHADOWS,true);
@@ -364,9 +375,9 @@
     newscript->Name="boss_grandmaster_vorpil";
     newscript->GetAI = GetAI_boss_grandmaster_vorpil;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_voidtraveler";
     newscript->GetAI = GetAI_mob_voidtraveler;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_ambassador_hellmaw.cpp (revision 272)
@@ -195,4 +195,4 @@
     newscript->Name="boss_ambassador_hellmaw";
     newscript->GetAI = GetAI_boss_ambassador_hellmaw;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_murmur.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_murmur.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/aunchindoun/shadow_labyrinth/boss_murmur.cpp (revision 272)
@@ -149,4 +149,4 @@
     newscript->Name="boss_murmur";
     newscript->GetAI = GetAI_boss_murmur;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zangarmarsh/zangarmarsh.cpp (revision 272)
@@ -262,5 +262,5 @@
     newscript->pGossipHello =  &GossipHello_npcs_ashyen_and_keleth;
     newscript->pGossipSelect = &GossipSelect_npcs_ashyen_and_keleth;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -268,5 +268,5 @@
     newscript->pGossipHello =  &GossipHello_npc_cooshcoosh;
     newscript->pGossipSelect = &GossipSelect_npc_cooshcoosh;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -274,5 +274,5 @@
     newscript->pGossipHello =  &GossipHello_npc_elder_kuruti;
     newscript->pGossipSelect = &GossipSelect_npc_elder_kuruti;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -280,4 +280,4 @@
     newscript->pGossipHello =  &GossipHello_npc_mortog_steamhead;
     newscript->pGossipSelect = &GossipSelect_npc_mortog_steamhead;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/thunder_bluff/thunder_bluff.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/thunder_bluff/thunder_bluff.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/thunder_bluff/thunder_bluff.cpp (revision 272)
@@ -133,4 +133,4 @@
     newscript->pGossipHello = &GossipHello_npc_cairne_bloodhoof;
     newscript->pGossipSelect = &GossipSelect_npc_cairne_bloodhoof;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_hydromancer_thespia.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_hydromancer_thespia.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_hydromancer_thespia.cpp (revision 272)
@@ -189,9 +189,9 @@
     newscript->Name="boss_hydromancer_thespia";
     newscript->GetAI = GetAI_boss_thespiaAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_coilfang_waterelemental";
     newscript->GetAI = GetAI_mob_coilfang_waterelementalAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_warlord_kalithresh.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_warlord_kalithresh.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_warlord_kalithresh.cpp (revision 272)
@@ -227,9 +227,9 @@
     newscript->Name="mob_naga_distiller";
     newscript->GetAI = GetAI_mob_naga_distiller;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_warlord_kalithresh";
     newscript->GetAI = GetAI_boss_warlord_kalithresh;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_mekgineer_steamrigger.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_mekgineer_steamrigger.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/boss_mekgineer_steamrigger.cpp (revision 272)
@@ -272,9 +272,9 @@
     newscript->Name="boss_mekgineer_steamrigger";
     newscript->GetAI = GetAI_boss_mekgineer_steamrigger;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_steamrigger_mechanic";
     newscript->GetAI = GetAI_mob_steamrigger_mechanic;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/steam_vault/instance_steam_vault.cpp (revision 272)
@@ -167,4 +167,4 @@
     newscript->Name = "instance_steam_vault";
     newscript->GetInstanceData = GetInstanceData_instance_steam_vault;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_hungarfen.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_hungarfen.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/underbog/boss_hungarfen.cpp (revision 272)
@@ -148,9 +148,9 @@
     newscript->Name="boss_hungarfen";
     newscript->GetAI = GetAI_boss_hungarfen;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_underbog_mushroom";
     newscript->GetAI = GetAI_mob_underbog_mushroom;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_hydross_the_unstable.cpp (revision 272)
@@ -383,4 +383,4 @@
     newscript->Name="boss_hydross_the_unstable";
     newscript->GetAI = GetAI_boss_hydross_the_unstable;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lurker_below.cpp (revision 272)
@@ -168,15 +168,15 @@
     newscript->Name="boss_the_lurker_below";
     newscript->GetAI = GetAI_boss_the_lurker_below;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
 	newscript = new Script;
     newscript->Name="mob_coilfang_guardian";
     newscript->GetAI = GetAI_mob_coilfang_guardian;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
 	newscript = new Script;
     newscript->Name="mob_coilfang_ambusher";
     newscript->GetAI = GetAI_mob_coilfang_ambusher;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
 
Index: trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_leotheras_the_blind.cpp (revision 272)
@@ -755,20 +755,17 @@
 		{
 			Map *map = m_creature->GetMap();
-			Map::PlayerList const &PlayerList = map->GetPlayers();
-			for(Map::PlayerList::const_iterator itr = PlayerList.begin();itr != PlayerList.end(); ++itr)
+			InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
+			for(InstanceMap::PlayerList::const_iterator itr = PlayerList.begin();itr != PlayerList.end(); ++itr)
             {
-                if (Player* i_pl = itr->getSource())
-                {
-				    bool isCasting = false;
-				    for(uint8 i = 0; i < CURRENT_MAX_SPELL; ++i)
-					    if(i_pl->m_currentSpells[i])
-						    isCasting = true;
-    				
-				    if(isCasting)
-				    {
-					    DoCast(i_pl, SPELL_EARTHSHOCK);
-					    break;
-				    }
-                }
+				bool isCasting = false;
+				for(uint8 i = 0; i < CURRENT_MAX_SPELL; ++i)
+					if((*itr)->m_currentSpells[i])
+						isCasting = true;
+				
+				if(isCasting)
+				{
+					DoCast((*itr), SPELL_EARTHSHOCK);
+					break;
+				}
 			}
 			Earthshock_Timer = 8000 + rand()%7000;
@@ -805,19 +802,19 @@
     newscript->Name="boss_leotheras_the_blind";
     newscript->GetAI = GetAI_boss_leotheras_the_blind;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_leotheras_the_blind_demonform";
     newscript->GetAI = GetAI_boss_leotheras_the_blind_demonform;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
 	newscript = new Script;
     newscript->Name="mob_greyheart_spellbinder";
     newscript->GetAI = GetAI_mob_greyheart_spellbinder;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
 	newscript = new Script;
     newscript->Name="mob_inner_demon";
     newscript->GetAI = GetAI_mob_inner_demon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_lady_vashj.cpp (revision 272)
@@ -251,10 +251,10 @@
 			//remove old tainted cores to prevent cheating in phase 2
 			Map *map = m_creature->GetMap();
-			Map::PlayerList const &PlayerList = map->GetPlayers();
-			for(Map::PlayerList::const_iterator i = PlayerList.begin();i != PlayerList.end(); ++i)
-            {
-                if(Player* i_pl = i->getSource())
+			InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
+			for(InstanceMap::PlayerList::const_iterator i = PlayerList.begin();i != PlayerList.end(); ++i)
+            {
+                if((*i))
                 {
-                    i_pl->DestroyItemCount(31088, 1, true);
+                    (*i)->DestroyItemCount(31088, 1, true);
                 }
             }
@@ -1030,40 +1030,40 @@
     newscript->Name="boss_lady_vashj";
     newscript->GetAI = GetAI_boss_lady_vashj;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_enchanted_elemental";
     newscript->GetAI = GetAI_mob_enchanted_elemental;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_tainted_elemental";
     newscript->GetAI = GetAI_mob_tainted_elemental;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_toxic_sporebat";
     newscript->GetAI = GetAI_mob_toxic_sporebat;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_coilfang_elite";
     newscript->GetAI = GetAI_mob_coilfang_elite;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_coilfang_strider";
     newscript->GetAI = GetAI_mob_coilfang_strider;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_shield_generator_channel";
     newscript->GetAI = GetAI_mob_shield_generator_channel;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_tainted_core";
     newscript->pItemUse = ItemUse_item_tainted_core;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
 
Index: trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_fathomlord_karathress.cpp (revision 272)
@@ -745,19 +745,19 @@
     newscript->Name="boss_fathomlord_karathress";
     newscript->GetAI = GetAI_boss_fathomlord_karathress;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_fathomguard_sharkkis";
     newscript->GetAI = GetAI_boss_fathomguard_sharkkis;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_fathomguard_tidalvess";
     newscript->GetAI = GetAI_boss_fathomguard_tidalvess;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_fathomguard_caribdis";
     newscript->GetAI = GetAI_boss_fathomguard_caribdis;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/boss_morogrim_tidewalker.cpp (revision 272)
@@ -351,9 +351,9 @@
     newscript->Name="boss_morogrim_tidewalker";
     newscript->GetAI = GetAI_boss_morogrim_tidewalker;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_water_globule";
     newscript->GetAI = GetAI_mob_water_globule;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/coilfang_resevoir/serpent_shrine/instance_serpent_shrine.cpp (revision 272)
@@ -216,4 +216,4 @@
     newscript->Name = "instance_serpent_shrine";
     newscript->GetInstanceData = GetInstanceData_instance_serpentshrine_cavern;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/ruins_of_ahnqiraj/boss_moam.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/ruins_of_ahnqiraj/boss_moam.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/ruins_of_ahnqiraj/boss_moam.cpp (revision 272)
@@ -114,4 +114,4 @@
     newscript->Name="boss_moam";
     newscript->GetAI = GetAI_boss_moam;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/ruins_of_ahnqiraj/boss_ayamiss.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/ruins_of_ahnqiraj/boss_ayamiss.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/ruins_of_ahnqiraj/boss_ayamiss.cpp (revision 272)
@@ -104,4 +104,4 @@
     newscript->Name="boss_ayamiss";
     newscript->GetAI = GetAI_boss_ayamiss;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/ruins_of_ahnqiraj/boss_kurinnaxx.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/ruins_of_ahnqiraj/boss_kurinnaxx.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/ruins_of_ahnqiraj/boss_kurinnaxx.cpp (revision 272)
@@ -90,4 +90,4 @@
     newscript->Name="boss_kurinnaxx";
     newscript->GetAI = GetAI_boss_kurinnaxx;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/onyxias_lair/boss_onyxia.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/onyxias_lair/boss_onyxia.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/onyxias_lair/boss_onyxia.cpp (revision 272)
@@ -230,4 +230,4 @@
     newscript->Name="boss_onyxia";
     newscript->GetAI = GetAI_boss_onyxiaAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/dun_morogh/dun_morogh.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/dun_morogh/dun_morogh.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/dun_morogh/dun_morogh.cpp (revision 272)
@@ -95,4 +95,4 @@
     newscript->Name="npc_narm_faulk";
     newscript->GetAI = GetAI_npc_narm_faulk;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_aeonus.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_aeonus.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_aeonus.cpp (revision 272)
@@ -118,4 +118,4 @@
     newscript->Name="boss_aeonus";
     newscript->GetAI = GetAI_boss_aeonus;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_chrono_lord_deja.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_chrono_lord_deja.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_chrono_lord_deja.cpp (revision 272)
@@ -106,4 +106,4 @@
     newscript->Name="boss_chrono_lord_deja";
     newscript->GetAI = GetAI_boss_chrono_lord_deja;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_temporus.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_temporus.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/caverns_of_time/dark_portal/boss_temporus.cpp (revision 272)
@@ -140,4 +140,4 @@
     newscript->Name="boss_temporus";
     newscript->GetAI = GetAI_boss_temporus;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/old_hillsbrad.cpp (revision 272)
@@ -894,5 +894,5 @@
     newscript->pGossipHello =   &GossipHello_npc_brazen;
     newscript->pGossipSelect =  &GossipSelect_npc_brazen;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -900,5 +900,5 @@
     newscript->pGossipHello =   &GossipHello_npc_erozion;
     newscript->pGossipSelect =  &GossipSelect_npc_erozion;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -907,5 +907,5 @@
     newscript->pGossipSelect = &GossipSelect_npc_thrall_old_hillsbrad;
     newscript->GetAI = GetAI_npc_thrall_old_hillsbrad;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -913,4 +913,4 @@
     newscript->pGossipHello =   &GossipHello_npc_taretha;
     newscript->pGossipSelect =  &GossipSelect_npc_taretha;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_captain_skarloc.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_captain_skarloc.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_captain_skarloc.cpp (revision 272)
@@ -153,4 +153,4 @@
     newscript->Name="boss_captain_skarloc";
     newscript->GetAI = GetAI_boss_captain_skarloc;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/instance_old_hillsbrad.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/instance_old_hillsbrad.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/instance_old_hillsbrad.cpp (revision 272)
@@ -175,4 +175,4 @@
     newscript->Name = "instance_old_hillsbrad";
     newscript->GetInstanceData = GetInstanceData_instance_old_hillsbrad;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_epoch_hunter.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_epoch_hunter.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_epoch_hunter.cpp (revision 272)
@@ -147,4 +147,4 @@
     newscript->Name="boss_epoch_hunter";
     newscript->GetAI = GetAI_boss_epoch_hunter;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_leutenant_drake.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_leutenant_drake.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/caverns_of_time/old_hillsbrad/boss_leutenant_drake.cpp (revision 272)
@@ -195,9 +195,9 @@
     newscript->Name="go_barrel_old_hillsbrad";
     newscript->pGOHello = &GOHello_go_barrel_old_hillsbrad;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_lieutenant_drake";
     newscript->GetAI = GetAI_boss_lieutenant_drake;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/boss_archimonde.cpp (revision 272)
@@ -770,19 +770,19 @@
     newscript->Name="boss_archimonde";
     newscript->GetAI = GetAI_boss_archimonde;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "mob_doomfire";
     newscript->GetAI = GetAI_mob_doomfire;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "mob_doomfire_targetting";
     newscript->GetAI = GetAI_mob_doomfire_targetting;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "mob_ancient_wisp";
     newscript->GetAI = GetAI_mob_ancient_wisp;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp (revision 270)
+++ trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjalAI.cpp (revision 272)
@@ -302,5 +302,5 @@
     data << value;
 
-    map->SendToPlayers(&data);
+    ((InstanceMap*)map)->SendToPlayers(&data);
 
     // TODO: Uncomment and remove everything above this line only when the core patch for this is accepted
Index: trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/hyjal.cpp (revision 272)
@@ -201,5 +201,5 @@
     newscript->pGossipHello = &GossipHello_npc_jaina_proudmoore;
     newscript->pGossipSelect = &GossipSelect_npc_jaina_proudmoore;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -208,5 +208,5 @@
     newscript->pGossipHello = &GossipHello_npc_thrall;
     newscript->pGossipSelect = &GossipSelect_npc_thrall;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -214,4 +214,4 @@
     newscript->pGossipHello = &GossipHello_npc_tyrande_whisperwind;
     newscript->pGossipSelect = &GossipSelect_npc_tyrande_whisperwind;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp (revision 270)
+++ trunk/src/bindings/scripts/scripts/zone/caverns_of_time/hyjal/instance_hyjal.cpp (revision 272)
@@ -150,5 +150,5 @@
         data << value;
 
-        instance->SendToPlayers(&data);
+        ((InstanceMap*)instance)->SendToPlayers(&data);
     }
 
@@ -200,4 +200,4 @@
     newscript->Name = "instance_hyjal";
     newscript->GetInstanceData = GetInstanceData_instance_mount_hyjal;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/burning_steppes/burning_steppes.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/burning_steppes/burning_steppes.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/burning_steppes/burning_steppes.cpp (revision 272)
@@ -148,4 +148,4 @@
     newscript->pGossipHello =  &GossipHello_npc_ragged_john;
     newscript->pGossipSelect = &GossipSelect_npc_ragged_john;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/alterac_mountains/alterac_mountains.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/alterac_mountains/alterac_mountains.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/alterac_mountains/alterac_mountains.cpp (revision 272)
@@ -59,4 +59,4 @@
     newscript->Name="npc_ravenholdt";
     newscript->GetAI = GetAI_npc_ravenholdt;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/nagrand/nagrand.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/nagrand/nagrand.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/nagrand/nagrand.cpp (revision 272)
@@ -632,5 +632,5 @@
     newscript->Name="mob_shattered_rumbler";
     newscript->GetAI = GetAI_mob_shattered_rumbler;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -639,10 +639,10 @@
     newscript->pGossipHello =  &GossipHello_mob_lump;
     newscript->pGossipSelect = &GossipSelect_mob_lump;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_sunspring_villager";
     newscript->GetAI = GetAI_mob_sunspring_villager;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -651,5 +651,5 @@
     newscript->pGossipSelect = &GossipSelect_npc_altruis_the_sufferer;
     newscript->pQuestAccept =  &QuestAccept_npc_altruis_the_sufferer;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -657,5 +657,5 @@
     newscript->pGossipHello =  &GossipHello_npc_greatmother_geyah;
     newscript->pGossipSelect = &GossipSelect_npc_greatmother_geyah;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -663,14 +663,14 @@
     newscript->pGossipHello =  &GossipHello_npc_lantresor_of_the_blade;
     newscript->pGossipSelect = &GossipSelect_npc_lantresor_of_the_blade;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_creditmarker_visit_with_ancestors";
     newscript->GetAI = GetAI_npc_creditmarker_visit_with_ancestors;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_sparrowhawk";
     newscript->GetAI = GetAI_mob_sparrowhawk;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/eastern_plaguelands/eastern_plaguelands.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/eastern_plaguelands/eastern_plaguelands.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/eastern_plaguelands/eastern_plaguelands.cpp (revision 272)
@@ -159,5 +159,5 @@
     newscript->Name="mobs_ghoul_flayer";
     newscript->GetAI = GetAI_mobs_ghoul_flayer;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -165,5 +165,5 @@
     newscript->pGossipHello = &GossipHello_npc_augustus_the_touched;
     newscript->pGossipSelect = &GossipSelect_npc_augustus_the_touched;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -171,5 +171,5 @@
     newscript->GetAI = GetAI_npc_darrowshire_spirit;
     newscript->pGossipHello = &GossipHello_npc_darrowshire_spirit;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -177,4 +177,4 @@
     newscript->pGossipHello =  &GossipHello_npc_tirion_fordring;
     newscript->pGossipSelect = &GossipSelect_npc_tirion_fordring;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/shadowfang_keep/shadowfang_keep.cpp (revision 272)
@@ -114,4 +114,4 @@
     newscript->pGossipSelect = &GossipSelect_npc_shadowfang_prisoner;
     newscript->GetAI = GetAI_npc_shadowfang_prisoner;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/shadowfang_keep/instance_shadowfang_keep.cpp (revision 272)
@@ -149,4 +149,4 @@
     newscript->Name = "instance_shadowfang_keep";
     newscript->GetInstanceData = GetInstanceData_instance_shadowfang_keep;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/gruuls_lair/boss_gruul.cpp (revision 272)
@@ -301,4 +301,4 @@
     newscript->Name="boss_gruul";
     newscript->GetAI = GetAI_boss_gruul;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
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 260)
+++ trunk/src/bindings/scripts/scripts/zone/gruuls_lair/boss_high_king_maulgar.cpp (revision 272)
@@ -818,24 +818,24 @@
     newscript->Name="boss_high_king_maulgar";
     newscript->GetAI = GetAI_boss_high_king_maulgar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_kiggler_the_crazed";
     newscript->GetAI = GetAI_boss_kiggler_the_crazed;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_blindeye_the_seer";
     newscript->GetAI = GetAI_boss_blindeye_the_seer;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_olm_the_summoner";
     newscript->GetAI = GetAI_boss_olm_the_summoner;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_krosh_firehand";
     newscript->GetAI = GetAI_boss_krosh_firehand;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/gruuls_lair/instance_gruuls_lair.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/gruuls_lair/instance_gruuls_lair.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/gruuls_lair/instance_gruuls_lair.cpp (revision 272)
@@ -185,4 +185,4 @@
     newscript->Name = "instance_gruuls_lair";
     newscript->GetInstanceData = GetInstanceData_instance_gruuls_lair;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/bloodmyst_isle/bloodmyst_isle.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/bloodmyst_isle/bloodmyst_isle.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/bloodmyst_isle/bloodmyst_isle.cpp (revision 272)
@@ -132,5 +132,5 @@
     newscript->Name="mob_webbed_creature";
     newscript->GetAI = GetAI_mob_webbed_creature;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -138,4 +138,4 @@
     newscript->pGossipHello =  &GossipHello_npc_captured_sunhawk_agent;
     newscript->pGossipSelect = &GossipSelect_npc_captured_sunhawk_agent;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/winterspring/winterspring.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/winterspring/winterspring.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/winterspring/winterspring.cpp (revision 272)
@@ -142,5 +142,5 @@
     newscript->pGossipHello =  &GossipHello_npc_lorax;
     newscript->pGossipSelect = &GossipSelect_npc_lorax;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -148,5 +148,5 @@
     newscript->pGossipHello =  &GossipHello_npc_rivern_frostwind;
     newscript->pGossipSelect = &GossipSelect_npc_rivern_frostwind;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -154,4 +154,4 @@
     newscript->pGossipHello =  &GossipHello_npc_witch_doctor_mauari;
     newscript->pGossipSelect = &GossipSelect_npc_witch_doctor_mauari;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/barrens/the_barrens.cpp (revision 272)
@@ -370,5 +370,5 @@
     newscript->pGossipHello = &GossipHello_npc_beaten_corpse;
     newscript->pGossipSelect = &GossipSelect_npc_beaten_corpse;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -376,5 +376,5 @@
     newscript->pGossipHello = &GossipHello_npc_sputtervalve;
     newscript->pGossipSelect = &GossipSelect_npc_sputtervalve;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -382,9 +382,9 @@
     newscript->GetAI = GetAI_npc_taskmaster_fizzule;
     newscript->pReceiveEmote = &ReciveEmote_npc_taskmaster_fizzule;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_twiggy_flathead";
     newscript->GetAI = GetAI_npc_twiggy_flathead;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/tirisfal_glades/tirisfal_glades.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/tirisfal_glades/tirisfal_glades.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/tirisfal_glades/tirisfal_glades.cpp (revision 272)
@@ -85,4 +85,4 @@
     newscript->GetAI = GetAI_npc_calvin_montague;
     newscript->pQuestAccept = &QuestAccept_npc_calvin_montague;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/silvermoon/silvermoon_city.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/silvermoon/silvermoon_city.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/silvermoon/silvermoon_city.cpp (revision 272)
@@ -100,4 +100,4 @@
     newscript->Name="npc_blood_knight_stillblade";
     newscript->GetAI = GetAI_npc_blood_knight_stillblade;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_interrogator_vishas.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_interrogator_vishas.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_interrogator_vishas.cpp (revision 272)
@@ -110,4 +110,4 @@
     newscript->Name="boss_interrogator_vishas";
     newscript->GetAI = GetAI_boss_interrogator_vishas;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_azshir_the_sleepless.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_azshir_the_sleepless.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_azshir_the_sleepless.cpp (revision 272)
@@ -94,4 +94,4 @@
     newscript->Name="boss_azshir_the_sleepless";
     newscript->GetAI = GetAI_boss_azshir_the_sleepless;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_houndmaster_loksey.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_houndmaster_loksey.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_houndmaster_loksey.cpp (revision 272)
@@ -75,4 +75,4 @@
     newscript->Name="boss_houndmaster_loksey";
     newscript->GetAI = GetAI_boss_houndmaster_loksey;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_bloodmage_thalnos.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_bloodmage_thalnos.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_bloodmage_thalnos.cpp (revision 272)
@@ -133,4 +133,4 @@
     newscript->Name="boss_bloodmage_thalnos";
     newscript->GetAI = GetAI_boss_bloodmage_thalnos;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_herod.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_herod.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_herod.cpp (revision 272)
@@ -194,4 +194,4 @@
     newscript->Name="boss_herod";
     newscript->GetAI = GetAI_boss_herod;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_scarlet_commander_mograine.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_scarlet_commander_mograine.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_scarlet_commander_mograine.cpp (revision 272)
@@ -157,4 +157,4 @@
     newscript->Name="boss_scarlet_commander_mograine";
     newscript->GetAI = GetAI_boss_scarlet_commander_mograine;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_scorn.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_scorn.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_scorn.cpp (revision 272)
@@ -97,4 +97,4 @@
     newscript->Name="boss_scorn";
     newscript->GetAI = GetAI_boss_scorn;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_arcanist_doan.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_arcanist_doan.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_arcanist_doan.cpp (revision 272)
@@ -168,4 +168,4 @@
     newscript->Name="boss_arcanist_doan";
     newscript->GetAI = GetAI_boss_arcanist_doan;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_high_inquisitor_fairbanks.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_high_inquisitor_fairbanks.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_high_inquisitor_fairbanks.cpp (revision 272)
@@ -129,4 +129,4 @@
     newscript->Name="boss_high_inquisitor_fairbanks";
     newscript->GetAI = GetAI_boss_high_inquisitor_fairbanks;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_high_inquisitor_whitemane.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_high_inquisitor_whitemane.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scarlet_monastery/boss_high_inquisitor_whitemane.cpp (revision 272)
@@ -174,4 +174,4 @@
     newscript->Name="boss_high_inquisitor_whitemane";
     newscript->GetAI = GetAI_boss_high_inquisitor_whitemane;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/karazhan/boss_shade_of_aran.cpp (revision 272)
@@ -655,19 +655,19 @@
     newscript->Name="boss_shade_of_aran";
     newscript->GetAI = GetAI_boss_aran;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_shadow_of_aran";
     newscript->GetAI = GetAI_shadow_of_aran;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_aran_elemental";
     newscript->GetAI = GetAI_water_elemental;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     //newscript = new Script;
     //newscript->Name="mob_aran_blizzard";
     //newscript->GetAI = GetAI_boss_aran;
-    //newscript->RegisterSelf();
+    //m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/karazhan/karazhan.cpp (revision 272)
@@ -286,12 +286,12 @@
                     if(!map->IsDungeon()) return;
 
-                    Map::PlayerList const &PlayerList = map->GetPlayers();
-                    if(PlayerList.isEmpty())
+                    InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
+                    if(PlayerList.empty())
                         return;
 
                     RaidWiped = true;
-                    for(Map::PlayerList::const_iterator i = PlayerList.begin();i != PlayerList.end(); ++i)
+                    for(InstanceMap::PlayerList::const_iterator i = PlayerList.begin();i != PlayerList.end(); ++i)
                     {
-                        if (i->getSource()->isAlive() && !i->getSource()->isGameMaster())
+                        if((*i)->isAlive() && !(*i)->isGameMaster())
                         {
                             RaidWiped = false;
@@ -461,5 +461,5 @@
     newscript->pGossipHello = GossipHello_npc_barnes;
     newscript->pGossipSelect = GossipSelect_npc_barnes;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -467,4 +467,4 @@
     newscript->pGossipHello = GossipHello_npc_berthold;
     newscript->pGossipSelect = GossipSelect_npc_berthold;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/karazhan/boss_terestian_illhoof.cpp (revision 272)
@@ -437,19 +437,19 @@
     newscript->Name="boss_terestian_illhoof";
     newscript->GetAI = GetAI_boss_terestian_illhoof;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_karazhan_imp";
     newscript->GetAI = GetAI_mob_karazhan_imp;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_kilrek";
     newscript->GetAI = GetAI_mob_kilrek;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "mob_demon_chain";
     newscript->GetAI = GetAI_mob_demon_chain;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/karazhan/instance_karazhan.cpp (revision 272)
@@ -250,4 +250,4 @@
     newscript->Name = "instance_karazhan";
     newscript->GetInstanceData = GetInstanceData_instance_karazhan;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/karazhan/bosses_opera.cpp (revision 272)
@@ -1415,35 +1415,35 @@
     newscript->GetAI = GetAI_boss_dorothee;
     newscript->Name = "boss_dorothee";
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->GetAI = GetAI_boss_strawman;
     newscript->Name = "boss_strawman";
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->GetAI = GetAI_boss_tinhead;
     newscript->Name = "boss_tinhead";
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->GetAI = GetAI_boss_roar;
     newscript->Name = "boss_roar";
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->GetAI = GetAI_boss_crone;
     newscript->Name = "boss_crone";
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->GetAI = GetAI_mob_tito;
     newscript->Name = "mob_tito";
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->GetAI = GetAI_mob_cyclone;
     newscript->Name = "mob_cyclone";
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     // Hood
@@ -1452,10 +1452,10 @@
     newscript->pGossipSelect = GossipSelect_npc_grandmother;
     newscript->Name = "npc_grandmother";
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->GetAI = GetAI_boss_bigbadwolf;
     newscript->Name = "boss_bigbadwolf";
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     // Romeo And Juliet
@@ -1463,9 +1463,9 @@
     newscript->GetAI = GetAI_boss_julianne;
     newscript->Name = "boss_julianne";
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->GetAI = GetAI_boss_romulo;
     newscript->Name = "boss_romulo";
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/karazhan/boss_curator.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/karazhan/boss_curator.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/karazhan/boss_curator.cpp (revision 272)
@@ -197,4 +197,4 @@
     newscript->Name="boss_curator";
     newscript->GetAI = GetAI_boss_curator;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/karazhan/boss_maiden_of_virtue.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/karazhan/boss_maiden_of_virtue.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/karazhan/boss_maiden_of_virtue.cpp (revision 272)
@@ -180,4 +180,4 @@
     newscript->Name="boss_maiden_of_virtue";
     newscript->GetAI = GetAI_boss_maiden_of_virtue;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/karazhan/boss_midnight.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/karazhan/boss_midnight.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/karazhan/boss_midnight.cpp (revision 272)
@@ -363,9 +363,9 @@
     newscript->Name="boss_attumen";
     newscript->GetAI = GetAI_boss_attumen;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_midnight";
     newscript->GetAI = GetAI_boss_midnight;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/karazhan/boss_moroes.cpp (revision 272)
@@ -836,34 +836,34 @@
     newscript->Name="boss_moroes";
     newscript->GetAI = GetAI_boss_moroes;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_baroness_dorothea_millstipe";
     newscript->GetAI = GetAI_baroness_dorothea_millstipe;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_baron_rafe_dreuger";
     newscript->GetAI = GetAI_baron_rafe_dreuger;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_lady_catriona_von_indi";
     newscript->GetAI = GetAI_lady_catriona_von_indi;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_lady_keira_berrybuck";
     newscript->GetAI = GetAI_lady_keira_berrybuck;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_lord_robin_daris";
     newscript->GetAI = GetAI_lord_robin_daris;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_lord_crispin_ference";
     newscript->GetAI = GetAI_lord_crispin_ference;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/karazhan/boss_prince_malchezaar.cpp (revision 272)
@@ -667,9 +667,9 @@
     newscript->Name="boss_malchezaar";
     newscript->GetAI = GetAI_boss_malchezaar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="netherspite_infernal";
     newscript->GetAI = GetAI_netherspite_infernal;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/felwood/felwood.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/felwood/felwood.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/felwood/felwood.cpp (revision 272)
@@ -86,4 +86,4 @@
     newscript->pGossipHello = &GossipHello_npcs_riverbreeze_and_silversky;
     newscript->pGossipSelect = &GossipSelect_npcs_riverbreeze_and_silversky;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/dustwallow_marsh/dustwallow_marsh.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/dustwallow_marsh/dustwallow_marsh.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/dustwallow_marsh/dustwallow_marsh.cpp (revision 272)
@@ -205,10 +205,10 @@
     newscript->Name="mobs_risen_husk_spirit";
     newscript->GetAI = GetAI_mobs_risen_husk_spirit;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_restless_apparition";
     newscript->pGossipHello =   &GossipHello_npc_restless_apparition;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -216,5 +216,5 @@
     newscript->GetAI = GetAI_npc_deserter_agitator;
     newscript->pGossipHello = &GossipHello_npc_deserter_agitator;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -222,5 +222,5 @@
     newscript->pGossipHello = &GossipHello_npc_lady_jaina_proudmoore;
     newscript->pGossipSelect = &GossipSelect_npc_lady_jaina_proudmoore;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -228,4 +228,4 @@
     newscript->pGossipHello = &GossipHello_npc_nat_pagle;
     newscript->pGossipSelect = &GossipSelect_npc_nat_pagle;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/orgrimmar/orgrimmar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/orgrimmar/orgrimmar.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/orgrimmar/orgrimmar.cpp (revision 272)
@@ -248,5 +248,5 @@
     newscript->pGossipHello =  &GossipHello_npc_neeru_fireblade;
     newscript->pGossipSelect = &GossipSelect_npc_neeru_fireblade;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -255,5 +255,5 @@
     newscript->pQuestAccept =  &QuestAccept_npc_shenthul;
     newscript->pReceiveEmote = &ReciveEmote_npc_shenthul;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -262,4 +262,4 @@
     newscript->pGossipHello =  &GossipHello_npc_thrall_warchief;
     newscript->pGossipSelect = &GossipSelect_npc_thrall_warchief;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/razorfen_downs/boss_amnennar_the_coldbringer.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/razorfen_downs/boss_amnennar_the_coldbringer.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/razorfen_downs/boss_amnennar_the_coldbringer.cpp (revision 272)
@@ -137,4 +137,4 @@
     newscript->Name="boss_amnennar_the_coldbringer";
     newscript->GetAI = GetAI_boss_amnennar_the_coldbringer;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulfarrak/zulfarrak.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulfarrak/zulfarrak.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulfarrak/zulfarrak.cpp (revision 272)
@@ -214,5 +214,5 @@
     newscript->pGossipHello =  &GossipHello_npc_sergeant_bly;
     newscript->pGossipSelect = &GossipSelect_npc_sergeant_bly;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -221,4 +221,4 @@
     newscript->pGossipHello =  &GossipHello_npc_weegli_blastfuse;
     newscript->pGossipSelect = &GossipSelect_npc_weegli_blastfuse;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/stranglethorn_vale/stranglethorn_vale.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stranglethorn_vale/stranglethorn_vale.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stranglethorn_vale/stranglethorn_vale.cpp (revision 272)
@@ -104,4 +104,4 @@
     newscript->Name = "mob_yenniku";
     newscript->GetAI = GetAI_mob_yenniku;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_high_interrogator_gerstahn.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_high_interrogator_gerstahn.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_high_interrogator_gerstahn.cpp (revision 272)
@@ -102,4 +102,4 @@
     newscript->Name="boss_high_interrogator_gerstahn";
     newscript->GetAI = GetAI_boss_high_interrogator_gerstahn;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_seethrel.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_seethrel.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_seethrel.cpp (revision 272)
@@ -112,4 +112,4 @@
     newscript->Name="boss_seethrel";
     newscript->GetAI = GetAI_boss_seethrel;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/blackrock_depths.cpp (revision 272)
@@ -222,5 +222,5 @@
     newscript->Name="phalanx";
     newscript->GetAI = GetAI_mob_phalanx;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -228,5 +228,5 @@
     newscript->pGossipHello =  &GossipHello_npc_kharan_mighthammer;
     newscript->pGossipSelect = &GossipSelect_npc_kharan_mighthammer;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -234,4 +234,4 @@
     newscript->pGossipHello =  &GossipHello_npc_lokhtos_darkbargainer;
     newscript->pGossipSelect = &GossipSelect_npc_lokhtos_darkbargainer;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_general_angerforge.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_general_angerforge.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_general_angerforge.cpp (revision 272)
@@ -164,4 +164,4 @@
     newscript->Name="boss_general_angerforge";
     newscript->GetAI = GetAI_boss_general_angerforge;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_gloomrel.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_gloomrel.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_gloomrel.cpp (revision 272)
@@ -139,4 +139,4 @@
     newscript->pGossipHello = &GossipHello_boss_gloomrel;
     newscript->pGossipSelect = &GossipSelect_boss_gloomrel;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_haterel.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_haterel.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_haterel.cpp (revision 272)
@@ -102,4 +102,4 @@
     newscript->Name="boss_haterel";
     newscript->GetAI = GetAI_boss_haterel;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_moira_bronzebeard.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_moira_bronzebeard.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_moira_bronzebeard.cpp (revision 272)
@@ -96,4 +96,4 @@
     newscript->Name="boss_moira_bronzebeard";
     newscript->GetAI = GetAI_boss_moira_bronzebeard;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_gorosh_the_dervish.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_gorosh_the_dervish.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_gorosh_the_dervish.cpp (revision 272)
@@ -78,4 +78,4 @@
     newscript->Name="boss_gorosh_the_dervish";
     newscript->GetAI = GetAI_boss_gorosh_the_dervish;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_emperor_dagran_thaurissan.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_emperor_dagran_thaurissan.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_emperor_dagran_thaurissan.cpp (revision 272)
@@ -101,4 +101,4 @@
     newscript->Name="boss_emperor_dagran_thaurissan";
     newscript->GetAI = GetAI_boss_draganthaurissan;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_grizzle.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_grizzle.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_grizzle.cpp (revision 272)
@@ -83,4 +83,4 @@
     newscript->Name="boss_grizzle";
     newscript->GetAI = GetAI_boss_grizzle;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_ambassador_flamelash.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_ambassador_flamelash.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_ambassador_flamelash.cpp (revision 272)
@@ -103,4 +103,4 @@
     newscript->Name="boss_ambassador_flamelash";
     newscript->GetAI = GetAI_boss_ambassador_flamelash;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_magmus.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_magmus.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_magmus.cpp (revision 272)
@@ -81,4 +81,4 @@
     newscript->Name="boss_magmus";
     newscript->GetAI = GetAI_boss_magmus;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_doperel.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_doperel.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_doperel.cpp (revision 272)
@@ -88,4 +88,4 @@
     newscript->Name="boss_doperel";
     newscript->GetAI = GetAI_boss_doperel;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_angerrel.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_angerrel.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_angerrel.cpp (revision 272)
@@ -88,4 +88,4 @@
     newscript->Name="boss_angerrel";
     newscript->GetAI = GetAI_boss_angerrel;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_doomrel.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_doomrel.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_doomrel.cpp (revision 272)
@@ -136,4 +136,4 @@
     newscript->Name="boss_doomrel";
     newscript->GetAI = GetAI_boss_doomrel;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_anubshiah.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_anubshiah.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_anubshiah.cpp (revision 272)
@@ -112,4 +112,4 @@
     newscript->Name="boss_anubshiah";
     newscript->GetAI = GetAI_boss_anubshiah;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_vilerel.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_vilerel.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/blackrock_depths/boss_vilerel.cpp (revision 272)
@@ -98,4 +98,4 @@
     newscript->Name="boss_vilerel";
     newscript->GetAI = GetAI_boss_vilerel;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/loch_modan/loch_modan.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/loch_modan/loch_modan.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/loch_modan/loch_modan.cpp (revision 272)
@@ -88,4 +88,4 @@
     newscript->pGossipHello =  &GossipHello_npc_mountaineer_pebblebitty;
     newscript->pGossipSelect = &GossipSelect_npc_mountaineer_pebblebitty;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/terokkar_forest/terokkar_forest.cpp (revision 272)
@@ -369,20 +369,20 @@
     newscript->Name="mob_unkor_the_ruthless";
     newscript->GetAI = GetAI_mob_unkor_the_ruthless;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_infested_root_walker";
     newscript->GetAI = GetAI_mob_infested_root_walker;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_rotting_forest_rager";
     newscript->GetAI = GetAI_mob_rotting_forest_rager;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_netherweb_victim";
     newscript->GetAI = GetAI_mob_netherweb_victim;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -390,5 +390,5 @@
     newscript->pGossipHello =  &GossipHello_npc_floon;
     newscript->pGossipSelect = &GossipSelect_npc_floon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -396,4 +396,4 @@
     newscript->pGossipHello =  &GossipHello_npc_skyguard_handler_deesak;
     newscript->pGossipSelect = &GossipSelect_npc_skyguard_handler_deesak;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/western_plaguelands/western_plaguelands.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/western_plaguelands/western_plaguelands.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/western_plaguelands/western_plaguelands.cpp (revision 272)
@@ -168,9 +168,9 @@
     newscript->pGossipHello = &GossipHello_npcs_dithers_and_arbington;
     newscript->pGossipSelect = &GossipSelect_npcs_dithers_and_arbington;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_the_scourge_cauldron";
     newscript->GetAI = GetAI_npc_the_scourge_cauldron;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/ghostlands/ghostlands.cpp (revision 272)
@@ -134,5 +134,5 @@
     newscript->pGossipHello = &GossipHello_npc_blood_knight_dawnstar;
     newscript->pGossipSelect = &GossipSelect_npc_blood_knight_dawnstar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -140,5 +140,5 @@
     newscript->pGossipHello = &GossipHello_npc_budd_nedreck;
     newscript->pGossipSelect = &GossipSelect_npc_budd_nedreck;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -146,9 +146,9 @@
     newscript->pGossipHello = &GossipHello_npc_rathis_tomber;
     newscript->pGossipSelect = &GossipSelect_npc_rathis_tomber;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "go_gilded_brazier";
     newscript->pGOHello = &GOHello_gilded_brazier;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/molten_core/boss_gehennas.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/molten_core/boss_gehennas.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/molten_core/boss_gehennas.cpp (revision 272)
@@ -88,4 +88,4 @@
     newscript->Name="boss_gehennas";
     newscript->GetAI = GetAI_boss_gehennas;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/molten_core/boss_magmadar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/molten_core/boss_magmadar.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/molten_core/boss_magmadar.cpp (revision 272)
@@ -94,4 +94,4 @@
     newscript->Name="boss_magmadar";
     newscript->GetAI = GetAI_boss_magmadar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/molten_core/boss_shazzrah.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/molten_core/boss_shazzrah.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/molten_core/boss_shazzrah.cpp (revision 272)
@@ -118,4 +118,4 @@
     newscript->Name="boss_shazzrah";
     newscript->GetAI = GetAI_boss_shazzrah;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/molten_core/boss_garr.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/molten_core/boss_garr.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/molten_core/boss_garr.cpp (revision 272)
@@ -141,9 +141,9 @@
     newscript->Name="boss_garr";
     newscript->GetAI = GetAI_boss_garr;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_firesworn";
     newscript->GetAI = GetAI_mob_firesworn;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/molten_core/boss_majordomo_executus.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/molten_core/boss_majordomo_executus.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/molten_core/boss_majordomo_executus.cpp (revision 272)
@@ -130,4 +130,4 @@
     newscript->Name="boss_majordomo";
     newscript->GetAI = GetAI_boss_majordomo;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/molten_core/boss_ragnaros.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/molten_core/boss_ragnaros.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/molten_core/boss_ragnaros.cpp (revision 272)
@@ -314,4 +314,4 @@
     newscript->Name="boss_ragnaros";
     newscript->GetAI = GetAI_boss_ragnaros;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/molten_core/boss_sulfuron_harbinger.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/molten_core/boss_sulfuron_harbinger.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/molten_core/boss_sulfuron_harbinger.cpp (revision 272)
@@ -207,9 +207,9 @@
     newscript->Name="boss_sulfuron";
     newscript->GetAI = GetAI_boss_sulfuron;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_flamewaker_priest";
     newscript->GetAI = GetAI_mob_flamewaker_priest;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/molten_core/molten_core.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/molten_core/molten_core.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/molten_core/molten_core.cpp (revision 272)
@@ -85,4 +85,4 @@
     newscript->Name="mob_ancient_core_hound";
     newscript->GetAI = GetAI_mob_ancient_core_hound;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/molten_core/boss_baron_geddon.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/molten_core/boss_baron_geddon.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/molten_core/boss_baron_geddon.cpp (revision 272)
@@ -102,4 +102,4 @@
     newscript->Name="boss_baron_geddon";
     newscript->GetAI = GetAI_boss_baron_geddon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/molten_core/boss_lucifron.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/molten_core/boss_lucifron.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/molten_core/boss_lucifron.cpp (revision 272)
@@ -87,4 +87,4 @@
     newscript->Name="boss_lucifron";
     newscript->GetAI = GetAI_boss_lucifron;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/molten_core/boss_golemagg.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/molten_core/boss_golemagg.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/molten_core/boss_golemagg.cpp (revision 272)
@@ -193,9 +193,9 @@
     newscript->Name="boss_golemagg";
     newscript->GetAI = GetAI_boss_golemagg;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_core_rager";
     newscript->GetAI = GetAI_mob_core_rager;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/molten_core/instance_molten_core.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/molten_core/instance_molten_core.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/molten_core/instance_molten_core.cpp (revision 272)
@@ -254,4 +254,4 @@
     newscript->Name="instance_molten_core";
     newscript->GetInstanceData = &GetInstance_instance_molten_core;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulaman/boss_zuljin.cpp (revision 272)
@@ -630,14 +630,14 @@
     newscript->Name="boss_zuljin";
     newscript->GetAI = GetAI_boss_zuljin;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="do_nothing";
     newscript->GetAI = GetAI_do_nothing;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_zuljin_vortex";
     newscript->GetAI = GetAI_feather_vortexAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulaman/boss_janalai.cpp (revision 272)
@@ -398,10 +398,9 @@
             Map *map = m_creature->GetMap();
             if(!map->IsDungeon()) return;
-            Map::PlayerList const &PlayerList = map->GetPlayers();
-            for(Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
-            {
-                if (Player* i_pl = i->getSource())
-                    if(i_pl->isAlive())
-                        DoTeleportPlayer(i_pl, JanalainPos[0][0]-5+rand()%10, JanalainPos[0][1]-5+rand()%10, JanalainPos[0][2], 0);
+            InstanceMap::PlayerList const &PlayerList =((InstanceMap*)map)->GetPlayers();
+            for(InstanceMap::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
+            {
+                if((*i)->isAlive())
+                    DoTeleportPlayer(*i, JanalainPos[0][0]-5+rand()%10, JanalainPos[0][1]-5+rand()%10, JanalainPos[0][2], 0);
             }
             //m_creature->CastSpell(Temp, SPELL_SUMMON_PLAYERS, true); // core bug, spell does not work if too far
@@ -707,24 +706,24 @@
     newscript->Name="boss_janalai";
     newscript->GetAI = GetAI_boss_janalaiAI;
-    newscript->RegisterSelf();  
+    m_scripts[nrscripts++] = newscript;  
 
     newscript = new Script;
     newscript->Name="mob_janalai_firebomb";
     newscript->GetAI = GetAI_mob_jandalai_firebombAI;
-    newscript->RegisterSelf();  
+    m_scripts[nrscripts++] = newscript;  
 
     newscript = new Script;
     newscript->Name="mob_janalai_hatcher";
     newscript->GetAI = GetAI_mob_amanishi_hatcherAI;
-    newscript->RegisterSelf(); 
+    m_scripts[nrscripts++] = newscript; 
 
     newscript = new Script;
     newscript->Name="mob_janalai_hatchling";
     newscript->GetAI = GetAI_mob_hatchlingAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_janalai_egg";
     newscript->GetAI = GetAI_mob_eggAI;
-    newscript->RegisterSelf(); 
+    m_scripts[nrscripts++] = newscript; 
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulaman/zulaman.cpp (revision 272)
@@ -172,5 +172,5 @@
     newscript->Name="npc_forest_frog";
     newscript->GetAI = GetAI_npc_forest_frog;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -179,4 +179,4 @@
     newscript->pGossipHello = GossipHello_npc_zulaman_hostage;
     newscript->pGossipSelect = GossipSelect_npc_zulaman_hostage;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulaman/boss_halazzi.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulaman/boss_halazzi.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulaman/boss_halazzi.cpp (revision 272)
@@ -395,9 +395,9 @@
     newscript->Name="boss_halazzi";
     newscript->GetAI = GetAI_boss_halazziAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_halazzi_lynx";
     newscript->GetAI = GetAI_boss_spiritlynxAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulaman/boss_nalorakk.cpp (revision 272)
@@ -301,4 +301,4 @@
     newscript->Name="boss_nalorakk";
     newscript->GetAI = GetAI_boss_nalorakk;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/zulaman/boss_hexlord.cpp (revision 272)
@@ -372,5 +372,5 @@
         if(SiphonSoul_Timer < diff)
         {
-            Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0, 70, true);
+            Player* target = SelectRandomPlayer(50);
             Unit *trigger = DoSpawnCreature(MOB_TEMP_TRIGGER, 0, 0, 0, 0, TEMPSUMMON_TIMED_DESPAWN, 30000);
             if(!target || !trigger) EnterEvadeMode();
@@ -436,4 +436,24 @@
         m_creature->CastSpell(target, PlayerAbility[PlayerClass][random].spell, false);
     }
+
+    Player* SelectRandomPlayer(float range = 0.0f, bool alive = true)
+    {
+        Map *map = m_creature->GetMap();
+        if (!map->IsDungeon()) return NULL;
+
+        InstanceMap::PlayerList PlayerList = ((InstanceMap*)map)->GetPlayers();
+        InstanceMap::PlayerList::iterator i;
+        while(PlayerList.size())
+        {
+            i = PlayerList.begin();
+            advance(i, rand()%PlayerList.size());
+            if((range == 0.0f || m_creature->IsWithinDistInMap(*i, range))
+                && (!alive || (*i)->isAlive()))
+                return *i;
+            else
+                PlayerList.erase(i);
+        }
+        return NULL;
+    }
 };
 
@@ -869,44 +889,44 @@
     newscript->Name="boss_hexlord_malacrass";
     newscript->GetAI = GetAI_boss_hex_lord_malacrass;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_thurg";
     newscript->GetAI = GetAI_boss_thurg;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_gazakroth";
     newscript->GetAI = GetAI_boss_gazakroth;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_lord_raadan";
     newscript->GetAI = GetAI_boss_lord_raadan;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_darkheart";
     newscript->GetAI = GetAI_boss_darkheart;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_slither";
     newscript->GetAI = GetAI_boss_slither;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_fenstalker";
     newscript->GetAI = GetAI_boss_fenstalker;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_koragg";
     newscript->GetAI = GetAI_boss_koragg;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_alyson_antille";
     newscript->GetAI = GetAI_boss_alyson_antille;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulaman/instance_zulaman.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulaman/instance_zulaman.cpp (revision 270)
+++ trunk/src/bindings/scripts/scripts/zone/zulaman/instance_zulaman.cpp (revision 272)
@@ -140,26 +140,19 @@
     void OpenDoor(uint64 DoorGUID, bool open)
     {
-        if(GameObject *Door = instance->GetGameObjectInMap(DoorGUID))
-            Door->SetUInt32Value(GAMEOBJECT_STATE, open ? 0 : 1);
+        if(((InstanceMap*)instance)->GetPlayers().size())
+            if(Player* first = ((InstanceMap*)instance)->GetPlayers().front())
+                if(GameObject *Door = GameObject::GetGameObject(*first, DoorGUID))
+                    Door->SetUInt32Value(GAMEOBJECT_STATE, open ? 0 : 1);
     }
 
     void SummonHostage(uint8 num)
     {
-        if(!QuestMinute)
-            return;
-
-        Map::PlayerList const &PlayerList = instance->GetPlayers();
-        if (PlayerList.isEmpty())
-            return;
-
-        Map::PlayerList::const_iterator i = PlayerList.begin();
-        if(Player* i_pl = i->getSource())
-        {
-            if(Unit* Hostage = i_pl->SummonCreature(HostageInfo[num].npc, HostageInfo[num].x, HostageInfo[num].y, HostageInfo[num].z, HostageInfo[num].o, TEMPSUMMON_DEAD_DESPAWN, 0))
-            {
-                Hostage->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
-                Hostage->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
-            }
-        }
+        if(QuestMinute && ((InstanceMap*)instance)->GetPlayers().size())
+            if(Player* first = ((InstanceMap*)instance)->GetPlayers().front())
+                if(Unit* Hostage = first->SummonCreature(HostageInfo[num].npc, HostageInfo[num].x, HostageInfo[num].y, HostageInfo[num].z, HostageInfo[num].o, TEMPSUMMON_DEAD_DESPAWN, 0))
+                {
+                    Hostage->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
+                    Hostage->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
+                }
     }
 
@@ -177,5 +170,5 @@
         WorldPacket data(SMSG_UPDATE_WORLD_STATE, 8);
         data << field << value;
-        instance->SendToPlayers(&data);
+        ((InstanceMap*)instance)->SendToPlayers(&data);
     }
 
@@ -329,4 +322,4 @@
     newscript->Name = "instance_zulaman";
     newscript->GetInstanceData = GetInstanceData_instance_zulaman;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp (revision 270)
+++ trunk/src/bindings/scripts/scripts/zone/zulaman/boss_akilzon.cpp (revision 272)
@@ -170,5 +170,5 @@
         data << uint32(weather) << (float)grade << uint8(0);
 
-        map->SendToPlayers(&data);
+        ((InstanceMap*)map)->SendToPlayers(&data);
     }
 
@@ -462,9 +462,9 @@
     newscript->Name="boss_akilzon";
     newscript->GetAI = GetAI_boss_akilzon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_akilzon_eagle";
     newscript->GetAI = GetAI_mob_soaring_eagle;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/netherstorm/netherstorm.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/netherstorm/netherstorm.cpp (revision 271)
+++ trunk/src/bindings/scripts/scripts/zone/netherstorm/netherstorm.cpp (revision 272)
@@ -391,97 +391,4 @@
 
 /*######
-## mob_phase_hunter
-######*/
-
-#define SUMMONED_MOB        19595
-#define EMOTE_WEAK          "is very weak"
-
-// Spells
-#define SPELL_PHASE_SLIP    36574
-#define SPELL_MANA_BURN     13321
-
-struct TRINITY_DLL_DECL mob_phase_hunterAI : public ScriptedAI
-{
-
-    mob_phase_hunterAI(Creature *c) : ScriptedAI(c) {Reset();}
-    
-    bool Weak;
-    int WeakPercent;
-    uint32 PlayerGUID;
-    uint32 Health;
-    uint32 Level;
-    uint32 PhaseSlipVulnerabilityTimer;
-    uint32 ManaBurnTimer;
-
-    void Reset()
-    {
-        Weak = false;
-        WeakPercent = 25 + (rand()%16); // 25-40
-        PlayerGUID = 0;
-        ManaBurnTimer = 5000 + (rand()%3 * 1000); // 5-8 sec cd
-    }
-
-    void Aggro(Unit *who)
-    {
-        PlayerGUID = who->GetGUID();
-    }
-
-    void UpdateAI(const uint32 diff)
-    {
-
-        Player* target = NULL;
-        target = ((Player*)Unit::GetUnit((*m_creature), PlayerGUID));
-        
-        if(!target)
-            return;
-
-        if(m_creature->HasAuraType(SPELL_AURA_MOD_DECREASE_SPEED) || m_creature->hasUnitState(UNIT_STAT_ROOT)) // if the mob is rooted/slowed by spells eg.: Entangling Roots, Frost Nova, Hamstring, Crippling Poison, etc. => remove it
-            DoCast(m_creature, SPELL_PHASE_SLIP);
-        if(ManaBurnTimer < diff) // cast Mana Burn
-        {
-            if(target->GetCreateMana() > 0)
-            {
-                DoCast(target, SPELL_MANA_BURN);
-                ManaBurnTimer = 8000 + (rand()%10 * 1000); // 8-18 sec cd
-            }
-        }
-        else ManaBurnTimer -= diff;
-
-        if(!Weak && m_creature->GetHealth() < (m_creature->GetMaxHealth() / 100 * WeakPercent) && target->GetQuestStatus(10190) == QUEST_STATUS_INCOMPLETE) // start: support for quest 10190
-        {
-            DoTextEmote(EMOTE_WEAK, 0);
-            Weak = true;
-        }
-        if(Weak && m_creature->HasAura(34219, 0))
-        {
-            Health = m_creature->GetHealth(); // get the normal mob's data
-            Level = m_creature->getLevel();
-
-            m_creature->AttackStop(); // delete the normal mob
-            m_creature->DealDamage(m_creature, m_creature->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false);
-            m_creature->RemoveCorpse();
-            
-            Creature* DrainedPhaseHunter = NULL;
-            
-            if(!DrainedPhaseHunter)
-                DrainedPhaseHunter = m_creature->SummonCreature(SUMMONED_MOB, m_creature->GetPositionX(), m_creature->GetPositionY(), m_creature->GetPositionZ(), m_creature->GetOrientation(), TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 60000); // summon the mob
-            
-            if(DrainedPhaseHunter)
-            {
-                DrainedPhaseHunter->SetLevel(Level); // set the summoned mob's data
-                DrainedPhaseHunter->SetHealth(Health);
-                DrainedPhaseHunter->AI()->AttackStart(target);
-            }
-        } // end: support for quest 10190
-    }
-
-};
-
-CreatureAI* GetAI_mob_phase_hunter(Creature *_Creature)
-{
-    return new mob_phase_hunterAI (_Creature);
-}
-
-/*######
 ##
 ######*/
@@ -494,10 +401,10 @@
     newscript->Name="go_manaforge_control_console";
     newscript->pGOHello = &GOHello_go_manaforge_control_console;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_manaforge_control_console";
     newscript->GetAI = GetAI_npc_manaforge_control_console;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -505,5 +412,5 @@
     newscript->pGossipHello =   &GossipHello_npc_protectorate_nether_drake;
     newscript->pGossipSelect =  &GossipSelect_npc_protectorate_nether_drake;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -511,9 +418,4 @@
     newscript->pGossipHello =   &GossipHello_npc_veronia;
     newscript->pGossipSelect =  &GossipSelect_npc_veronia;
-    newscript->RegisterSelf();
-
-    newscript = new Script;
-    newscript->Name = "mob_phase_hunter";
-    newscript->GetAI = GetAI_mob_phase_hunter;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/isle_of_queldanas/isle_of_queldanas.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/isle_of_queldanas/isle_of_queldanas.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/isle_of_queldanas/isle_of_queldanas.cpp (revision 272)
@@ -141,10 +141,10 @@
     newscript->pGossipHello = &GossipHello_npc_ayren_cloudbreaker;
     newscript->pGossipSelect = &GossipSelect_npc_ayren_cloudbreaker;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_converted_sentry";
     newscript->GetAI = GetAI_npc_converted_sentry;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -152,4 +152,4 @@
     newscript->pGossipHello = &GossipHello_npc_unrestrained_dragonhawk;
     newscript->pGossipSelect = &GossipSelect_npc_unrestrained_dragonhawk;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/azuremyst_isle/azuremyst_isle.cpp (revision 272)
@@ -351,5 +351,5 @@
     newscript->Name="npc_draenei_survivor";
     newscript->GetAI = GetAI_npc_draenei_survivor;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -358,10 +358,10 @@
     newscript->pGossipHello =  &GossipHello_npc_engineer_spark_overgrind;
     newscript->pGossipSelect = &GossipSelect_npc_engineer_spark_overgrind;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_injured_draenei";
     newscript->GetAI = GetAI_npc_injured_draenei;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -369,4 +369,4 @@
     newscript->pGossipHello =  &GossipHello_npc_susurrus;
     newscript->pGossipSelect = &GossipSelect_npc_susurrus;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/uldaman/uldaman.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/uldaman/uldaman.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/uldaman/uldaman.cpp (revision 272)
@@ -178,5 +178,5 @@
     newscript->Name="mob_jadespine_basilisk";
     newscript->GetAI = GetAI_mob_jadespine_basilisk;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -184,4 +184,4 @@
     newscript->pGossipHello = &GossipHello_npc_lore_keeper_of_norgannon;
     newscript->pGossipSelect = &GossipSelect_npc_lore_keeper_of_norgannon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/uldaman/boss_ironaya.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/uldaman/boss_ironaya.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/uldaman/boss_ironaya.cpp (revision 272)
@@ -104,4 +104,4 @@
     newscript->Name="boss_ironaya";
     newscript->GetAI = GetAI_boss_ironaya;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/boss_nerubenkan.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/boss_nerubenkan.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/boss_nerubenkan.cpp (revision 272)
@@ -135,4 +135,4 @@
     newscript->Name="boss_nerubenkan";
     newscript->GetAI = GetAI_boss_nerubenkan;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/boss_magistrate_barthilas.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/boss_magistrate_barthilas.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/boss_magistrate_barthilas.cpp (revision 272)
@@ -111,4 +111,4 @@
     newscript->Name="boss_magistrate_barthilas";
     newscript->GetAI = GetAI_boss_magistrate_barthilas;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/boss_timmy_the_cruel.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/boss_timmy_the_cruel.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/boss_timmy_the_cruel.cpp (revision 272)
@@ -97,4 +97,4 @@
     newscript->Name="boss_timmy_the_cruel";
     newscript->GetAI = GetAI_boss_timmy_the_cruel;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/boss_cannon_master_willey.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/boss_cannon_master_willey.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/boss_cannon_master_willey.cpp (revision 272)
@@ -218,4 +218,4 @@
     newscript->Name="boss_cannon_master_willey";
     newscript->GetAI = GetAI_boss_cannon_master_willey;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/boss_dathrohan_balnazzar.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/boss_dathrohan_balnazzar.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/boss_dathrohan_balnazzar.cpp (revision 272)
@@ -313,4 +313,4 @@
     newscript->Name="boss_dathrohan_balnazzar";
     newscript->GetAI = GetAI_boss_dathrohan_balnazzar;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/stratholme.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/stratholme.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/stratholme.cpp (revision 272)
@@ -311,10 +311,10 @@
     newscript->Name="mob_freed_soul";
     newscript->GetAI = GetAI_mob_freed_soul;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_restless_soul";
     newscript->GetAI = GetAI_mob_restless_soul;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -322,14 +322,14 @@
     newscript->GetAI = GetAI_mobs_spectral_ghostly_citizen;
     newscript->pReceiveEmote = &ReciveEmote_mobs_spectral_ghostly_citizen;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_mindless_skeleton";
     newscript->GetAI = GetAI_mob_mindless_skeleton;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_thuzadin_acolyte";
     newscript->GetAI = GetAI_mob_thuzadin_acolyte;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/boss_order_of_silver_hand.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/boss_order_of_silver_hand.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/boss_order_of_silver_hand.cpp (revision 272)
@@ -158,4 +158,4 @@
     newscript->Name="boss_silver_hand_bosses";
     newscript->GetAI = GetAI_boss_silver_hand_bossesAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/boss_baroness_anastari.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/boss_baroness_anastari.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/boss_baroness_anastari.cpp (revision 272)
@@ -121,4 +121,4 @@
     newscript->Name="boss_baroness_anastari";
     newscript->GetAI = GetAI_boss_baroness_anastari;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/boss_postmaster_malown.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/boss_postmaster_malown.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/boss_postmaster_malown.cpp (revision 272)
@@ -141,4 +141,4 @@
     newscript->Name="boss_postmaster_malown";
     newscript->GetAI = GetAI_boss_postmaster_malown;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/boss_baron_rivendare.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/boss_baron_rivendare.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/boss_baron_rivendare.cpp (revision 272)
@@ -212,4 +212,4 @@
     newscript->Name="boss_baron_rivendare";
     newscript->GetAI = GetAI_boss_baron_rivendare;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/instance_stratholme.cpp (revision 272)
@@ -74,4 +74,4 @@
     newscript->Name = "instance_stratholme";
     newscript->GetInstanceData = GetInstanceData_instance_stratholme;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/boss_maleki_the_pallid.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/boss_maleki_the_pallid.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/boss_maleki_the_pallid.cpp (revision 272)
@@ -116,4 +116,4 @@
     newscript->Name="boss_maleki_the_pallid";
     newscript->GetAI = GetAI_boss_maleki_the_pallid;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/stratholme/boss_ramstein_the_gorger.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/stratholme/boss_ramstein_the_gorger.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/stratholme/boss_ramstein_the_gorger.cpp (revision 272)
@@ -89,4 +89,4 @@
     newscript->Name="boss_ramstein_the_gorger";
     newscript->GetAI = GetAI_boss_ramstein_the_gorger;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/azshara/boss_azuregos.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/azshara/boss_azuregos.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/azshara/boss_azuregos.cpp (revision 272)
@@ -150,4 +150,4 @@
     newscript->Name="boss_azuregos";
     newscript->GetAI = GetAI_boss_azuregos;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/azshara/azshara.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/azshara/azshara.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/azshara/azshara.cpp (revision 272)
@@ -493,5 +493,5 @@
     newscript->Name="mobs_spitelashes";
     newscript->GetAI = GetAI_mobs_spitelashes;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -499,5 +499,5 @@
     newscript->pGossipHello =  &GossipHello_npc_loramus_thalipedes;
     newscript->pGossipSelect = &GossipSelect_npc_loramus_thalipedes;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
 	newscript = new Script;
@@ -506,9 +506,9 @@
     newscript->pGossipHello =  &GossipHello_mob_rizzle_sprysprocket;
     newscript->pGossipSelect = &GossipSelect_mob_rizzle_sprysprocket;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_depth_charge";
     newscript->GetAI = GetAI_mob_depth_charge;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/boss_doctor_theolen_krastinov.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/boss_doctor_theolen_krastinov.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/boss_doctor_theolen_krastinov.cpp (revision 272)
@@ -105,4 +105,4 @@
     newscript->Name="boss_doctor_theolen_krastinov";
     newscript->GetAI = GetAI_boss_theolenkrastinov;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/boss_vectus.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/boss_vectus.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/boss_vectus.cpp (revision 272)
@@ -92,4 +92,4 @@
     newscript->Name="boss_vectus";
     newscript->GetAI = GetAI_boss_vectus;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/instance_scholomance.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/instance_scholomance.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/instance_scholomance.cpp (revision 272)
@@ -99,4 +99,4 @@
     newscript->Name = "instance_scholomance";
     newscript->GetInstanceData = GetInstanceData_instance_scholomance;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/boss_illucia_barov.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/boss_illucia_barov.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/boss_illucia_barov.cpp (revision 272)
@@ -113,4 +113,4 @@
     newscript->Name="boss_illucia_barov";
     newscript->GetAI = GetAI_boss_illuciabarov;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/boss_instructor_malicia.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/boss_instructor_malicia.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/boss_instructor_malicia.cpp (revision 272)
@@ -149,4 +149,4 @@
     newscript->Name="boss_instructor_malicia";
     newscript->GetAI = GetAI_boss_instructormalicia;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/boss_death_knight_darkreaver.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/boss_death_knight_darkreaver.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/boss_death_knight_darkreaver.cpp (revision 272)
@@ -56,4 +56,4 @@
     newscript->Name="boss_death_knight_darkreaver";
     newscript->GetAI = GetAI_boss_death_knight_darkreaver;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/boss_darkmaster_gandling.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/boss_darkmaster_gandling.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/boss_darkmaster_gandling.cpp (revision 272)
@@ -189,4 +189,4 @@
     newscript->Name="boss_darkmaster_gandling";
     newscript->GetAI = GetAI_boss_darkmaster_gandling;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/boss_lord_alexei_barov.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/boss_lord_alexei_barov.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/boss_lord_alexei_barov.cpp (revision 272)
@@ -95,4 +95,4 @@
     newscript->Name="boss_lord_alexei_barov";
     newscript->GetAI = GetAI_boss_lordalexeibarov;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/boss_kormok.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/boss_kormok.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/boss_kormok.cpp (revision 272)
@@ -152,4 +152,4 @@
     newscript->Name="boss_kormok";
     newscript->GetAI = GetAI_boss_kormok;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/boss_the_ravenian.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/boss_the_ravenian.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/boss_the_ravenian.cpp (revision 272)
@@ -115,4 +115,4 @@
     newscript->Name="boss_the_ravenian";
     newscript->GetAI = GetAI_boss_theravenian;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/boss_ras_frostwhisper.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/boss_ras_frostwhisper.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/boss_ras_frostwhisper.cpp (revision 272)
@@ -122,4 +122,4 @@
     newscript->Name="boss_boss_ras_frostwhisper";
     newscript->GetAI = GetAI_boss_rasfrost;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/boss_jandice_barov.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/boss_jandice_barov.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/boss_jandice_barov.cpp (revision 272)
@@ -213,9 +213,9 @@
     newscript->Name="boss_jandice_barov";
     newscript->GetAI = GetAI_boss_jandicebarov;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_illusionofjandicebarov";
     newscript->GetAI = GetAI_mob_illusionofjandicebarov;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/scholomance/boss_lorekeeper_polkelt.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/scholomance/boss_lorekeeper_polkelt.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/scholomance/boss_lorekeeper_polkelt.cpp (revision 272)
@@ -110,4 +110,4 @@
     newscript->Name="boss_lorekeeper_polkelt";
     newscript->GetAI = GetAI_boss_lorekeeperpolkelt;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/silverpine_forest/silverpine_forest.cpp (revision 272)
@@ -97,4 +97,4 @@
     newscript->pGossipSelect = &GossipSelect_npc_astor_hadren;
     newscript->GetAI = GetAI_npc_astor_hadren;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_noth.cpp (revision 272)
@@ -177,4 +177,4 @@
     newscript->Name="boss_noth";
     newscript->GetAI = GetAI_boss_noth;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_anubrekhan.cpp (revision 272)
@@ -209,4 +209,4 @@
     newscript->Name="boss_anubrekhan";
     newscript->GetAI = GetAI_boss_anubrekhan;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_loatheb.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_loatheb.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_loatheb.cpp (revision 272)
@@ -213,4 +213,4 @@
     newscript->Name="boss_loatheb";
     newscript->GetAI = GetAI_boss_loatheb;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_faerlina.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_faerlina.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_faerlina.cpp (revision 272)
@@ -198,4 +198,4 @@
     newscript->Name="boss_faerlina";
     newscript->GetAI = GetAI_boss_faerlina;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_highlord_mograine.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_highlord_mograine.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_highlord_mograine.cpp (revision 272)
@@ -175,4 +175,4 @@
     newscript->Name="boss_highlord_mograine";
     newscript->GetAI = GetAI_boss_highlord_mograine;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_gluth.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_gluth.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_gluth.cpp (revision 272)
@@ -171,4 +171,4 @@
     newscript->Name="boss_gluth";
     newscript->GetAI = GetAI_boss_gluth;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_patchwerk.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_patchwerk.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_patchwerk.cpp (revision 272)
@@ -157,4 +157,4 @@
     newscript->Name="boss_patchwerk";
     newscript->GetAI = GetAI_boss_patchwerk;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_thane_korthazz.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_thane_korthazz.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_thane_korthazz.cpp (revision 272)
@@ -144,4 +144,4 @@
     newscript->Name="boss_thane_korthazz";
     newscript->GetAI = GetAI_boss_thane_korthazz;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_kelthuzad.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_kelthuzad.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_kelthuzad.cpp (revision 272)
@@ -538,5 +538,5 @@
     newscript->Name="boss_kelthuzad";
     newscript->GetAI = GetAI_boss_kelthuzadAI;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
     */
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_lady_blaumeux.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_lady_blaumeux.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_lady_blaumeux.cpp (revision 272)
@@ -144,4 +144,4 @@
     newscript->Name="boss_lady_blaumeux";
     newscript->GetAI = GetAI_boss_lady_blaumeux;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_sir_zeliek.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_sir_zeliek.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_sir_zeliek.cpp (revision 272)
@@ -143,4 +143,4 @@
     newscript->Name="boss_sir_zeliek";
     newscript->GetAI = GetAI_boss_sir_zeliek;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_maexxna.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_maexxna.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_maexxna.cpp (revision 272)
@@ -238,9 +238,9 @@
     newscript->Name="boss_maexxna";
     newscript->GetAI = GetAI_boss_maexxna;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_webwrap";
     newscript->GetAI = GetAI_mob_webwrap;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_sapphiron.cpp (revision 272)
@@ -196,4 +196,4 @@
     newscript->Name="boss_sapphiron";
     newscript->GetAI = GetAI_boss_sapphiron;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_razuvious.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_razuvious.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/naxxramas/boss_razuvious.cpp (revision 272)
@@ -164,4 +164,4 @@
     newscript->Name="boss_razuvious";
     newscript->GetAI = GetAI_boss_razuvious;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/magisters_terrace/instance_magisters_terrace.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/magisters_terrace/instance_magisters_terrace.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/magisters_terrace/instance_magisters_terrace.cpp (revision 272)
@@ -250,4 +250,4 @@
     newscript->Name = "instance_magisters_terrace";
     newscript->GetInstanceData = GetInstanceData_instance_magisters_terrace;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_felblood_kaelthas.cpp (revision 272)
@@ -232,15 +232,15 @@
         m_creature->Relocate(KaelLocations[0][0], KaelLocations[0][1], LOCATION_Z, 0);
 		Map *map = m_creature->GetMap();
-        Map::PlayerList const &PlayerList = map->GetPlayers();
-		Map::PlayerList::const_iterator i;
+        InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
+		InstanceMap::PlayerList::const_iterator i;
 		for (i = PlayerList.begin(); i != PlayerList.end(); ++i)
 		{
-			if (Player* i_pl = i->getSource())
-			    if(i_pl->isAlive())
-			    {
-				    i_pl->CastSpell(i_pl, SPELL_TELEPORT_CENTER, true);
-				    m_creature->GetNearPoint(m_creature,x,y,z,5,5,0);
-				    i_pl->TeleportTo(m_creature->GetMapId(),x,y,LOCATION_Z,i_pl->GetOrientation());
-			    }
+			//if(!(*i)->isGameMaster())
+			if((*i) && (*i)->isAlive())
+			{
+				(*i)->CastSpell((*i), SPELL_TELEPORT_CENTER, true);
+				m_creature->GetNearPoint(m_creature,x,y,z,5,5,0);
+				(*i)->TeleportTo(m_creature->GetMapId(),x,y,LOCATION_Z,(*i)->GetOrientation());
+			}
         }
         DoCast(m_creature, SPELL_TELEPORT_CENTER, true);
@@ -250,12 +250,11 @@
     {
 		Map *map = m_creature->GetMap();
-        Map::PlayerList const &PlayerList = map->GetPlayers();
-		Map::PlayerList::const_iterator i;
+        InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
+		InstanceMap::PlayerList::const_iterator i;
 		for (i = PlayerList.begin(); i != PlayerList.end(); ++i)
-		{
-            if (Player* i_pl = i->getSource())
-			    if(i_pl->isAlive())
+		{            
+			if((*i) && (*i)->isAlive())
                 // Knockback into the air
-                    i_pl->CastSpell(i_pl, SPELL_GRAVITY_LAPSE_DOT, true, 0, 0, m_creature->GetGUID());
+                (*i)->CastSpell((*i), SPELL_GRAVITY_LAPSE_DOT, true, 0, 0, m_creature->GetGUID());
         }
     }
@@ -264,22 +263,19 @@
     {
 		Map *map = m_creature->GetMap();
-		Map::PlayerList const &PlayerList = map->GetPlayers();
-		Map::PlayerList::const_iterator i;
+		InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
+		InstanceMap::PlayerList::const_iterator i;
 		for (i = PlayerList.begin(); i != PlayerList.end(); ++i)
-		{
-            if (Player* i_pl = i->getSource())
+		{ 
+			if((*i) && (*i)->isAlive())
             {
-			    if(i_pl->isAlive())
-                {
-                    // Also needs an exception in spell system.
-                    i_pl->CastSpell(i_pl, SPELL_GRAVITY_LAPSE_FLY, true, 0, 0, m_creature->GetGUID());
-                    // Use packet hack
-                    WorldPacket data(12);
-                    data.SetOpcode(SMSG_MOVE_SET_CAN_FLY);
-                    data.append(i_pl->GetPackGUID());
-                    data << uint32(0);
-                    i_pl->SendMessageToSet(&data, true);
-				    i_pl->SetSpeed(MOVE_FLY, 2.0f);
-                }
+                // Also needs an exception in spell system.
+                (*i)->CastSpell((*i), SPELL_GRAVITY_LAPSE_FLY, true, 0, 0, m_creature->GetGUID());
+                // Use packet hack
+                WorldPacket data(12);
+                data.SetOpcode(SMSG_MOVE_SET_CAN_FLY);
+                data.append((*i)->GetPackGUID());
+                data << uint32(0);
+                (*i)->SendMessageToSet(&data, true);
+				(*i)->SetSpeed(MOVE_FLY, 2.0f);
             }
         }
@@ -289,17 +285,17 @@
     {
 		Map *map = m_creature->GetMap();
-        Map::PlayerList const &PlayerList = map->GetPlayers();
-		Map::PlayerList::const_iterator i;
+        InstanceMap::PlayerList const &PlayerList = ((InstanceMap*)map)->GetPlayers();
+		InstanceMap::PlayerList::const_iterator i;
 		for (i = PlayerList.begin(); i != PlayerList.end(); ++i)
 		{ 
-            if(Player* i_pl = i->getSource())
+            if((*i))
             {
-                i_pl->RemoveAurasDueToSpell(SPELL_GRAVITY_LAPSE_FLY);
-                i_pl->RemoveAurasDueToSpell(SPELL_GRAVITY_LAPSE_DOT);
+                (*i)->RemoveAurasDueToSpell(SPELL_GRAVITY_LAPSE_FLY);
+                (*i)->RemoveAurasDueToSpell(SPELL_GRAVITY_LAPSE_DOT);
                 WorldPacket data(12);
                 data.SetOpcode(SMSG_MOVE_UNSET_CAN_FLY);
-                data.append(i_pl->GetPackGUID());
+                data.append((*i)->GetPackGUID());
                 data << uint32(0);
-                i_pl->SendMessageToSet(&data, true);
+                (*i)->SendMessageToSet(&data, true);
             }
         }
@@ -762,34 +758,34 @@
     newscript->Name = "boss_felblood_kaelthas";
     newscript->GetAI = GetAI_boss_felblood_kaelthas;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name = "mob_arcane_sphere";
     newscript->GetAI = GetAI_mob_arcane_sphere;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_felkael_phoenix";
     newscript->GetAI = GetAI_mob_felkael_phoenix;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_felkael_phoenix_egg";
     newscript->GetAI = GetAI_mob_felkael_phoenix_egg;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_felkael_flamestrike";
     newscript->GetAI = GetAI_mob_felkael_flamestrike;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
 	newscript = new Script;
     newscript->Name="go_kael_orb";
     newscript->pGOHello = &GOHello_go_kael_orb;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
 	newscript = new Script;
     newscript->Name="go_movie_orb";
     newscript->pGOHello = &GOHello_go_movie_orb;
-    newscript->RegisterSelf();
+    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 260)
+++ trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_selin_fireheart.cpp (revision 272)
@@ -404,9 +404,9 @@
     newscript->Name="boss_selin_fireheart";
     newscript->GetAI = GetAI_boss_selin_fireheart;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_fel_crystal";
     newscript->GetAI = GetAI_mob_fel_crystal;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_vexallus.cpp (revision 272)
@@ -239,9 +239,9 @@
     newscript->Name="boss_vexallus";
     newscript->GetAI = GetAI_boss_vexallus;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="mob_pure_energy";
     newscript->GetAI = GetAI_mob_pure_energy;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/magisters_terrace/boss_priestess_delrissa.cpp (revision 272)
@@ -1356,59 +1356,59 @@
     newscript->Name="boss_priestess_delrissa";
     newscript->GetAI = GetAI_boss_priestess_delrissa;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_kagani_nightstrike";
     newscript->GetAI = GetAI_boss_kagani_nightstrike;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_ellris_duskhallow";
     newscript->GetAI = GetAI_ellris_duskhallow;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_eramas_brightblaze";
     newscript->GetAI = GetAI_eramas_brightblaze;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_yazzai";
     newscript->GetAI = GetAI_yazzai;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_warlord_salaris";
     newscript->GetAI = GetAI_warlord_salaris;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_garaxxas";
     newscript->GetAI = GetAI_garaxxas;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_apoko";
     newscript->GetAI = GetAI_apoko;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="boss_zelfan";
     newscript->GetAI = GetAI_zelfan;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     /*newscript = new Script;
     newscript->Name="mob_high_explosive_sheep";
     newscript->GetAI = GetAI_mob_high_explosive_sheep;
-    newscript->RegisterSelf();*/
+    m_scripts[nrscripts++] = newscript;*/
 
     /*newscript = new Script;
     newscript->Name="mob_fizzle";
     newscript->GetAI = GetAI_mob_fizzle;
-    newscript->RegisterSelf();*/
+    m_scripts[nrscripts++] = newscript;*/
 
     /*newscript = new Script;
     newscript->Name="mob_sliver";
     newscript->GetAI = GetAI_mob_sliver;
-    newscript->RegisterSelf();*/
+    m_scripts[nrscripts++] = newscript;*/
 }
Index: trunk/src/bindings/scripts/scripts/zone/silithus/silithus.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/silithus/silithus.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/silithus/silithus.cpp (revision 272)
@@ -146,4 +146,4 @@
     newscript->pGossipHello =   &GossipHello_npcs_rutgar_and_frankal;
     newscript->pGossipSelect =  &GossipSelect_npcs_rutgar_and_frankal;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/maraudon/boss_landslide.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/maraudon/boss_landslide.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/maraudon/boss_landslide.cpp (revision 272)
@@ -91,4 +91,4 @@
     newscript->Name="boss_landslide";
     newscript->GetAI = GetAI_boss_landslide;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/maraudon/boss_noxxion.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/maraudon/boss_noxxion.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/maraudon/boss_noxxion.cpp (revision 272)
@@ -146,4 +146,4 @@
     newscript->Name="boss_noxxion";
     newscript->GetAI = GetAI_boss_noxxion;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/maraudon/boss_princess_theradras.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/maraudon/boss_princess_theradras.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/maraudon/boss_princess_theradras.cpp (revision 272)
@@ -105,4 +105,4 @@
     newscript->Name="boss_princess_theradras";
     newscript->GetAI = GetAI_boss_ptheradras;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/maraudon/boss_celebras_the_cursed.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/maraudon/boss_celebras_the_cursed.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/maraudon/boss_celebras_the_cursed.cpp (revision 272)
@@ -94,4 +94,4 @@
     newscript->Name="celebras_the_cursed";
     newscript->GetAI = GetAI_celebras_the_cursed;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/hellfire_peninsula/boss_doomlord_kazzak.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/hellfire_peninsula/boss_doomlord_kazzak.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/hellfire_peninsula/boss_doomlord_kazzak.cpp (revision 272)
@@ -138,4 +138,4 @@
     newscript->Name="boss_doomlord_kazzak";
     newscript->GetAI = GetAI_boss_doomlordkazzak;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp (revision 271)
+++ trunk/src/bindings/scripts/scripts/zone/hellfire_peninsula/hellfire_peninsula.cpp (revision 272)
@@ -18,5 +18,5 @@
 SDName: Hellfire_Peninsula
 SD%Complete: 100
-SDComment: Quest support: 9375, 10129, 10146, 10162, 10163, 10340, 10346, 10347, 10382 (Special flight paths)
+SDComment: Quest support: 10129, 10146, 10162, 10163, 10340, 10346, 10347, 10382 (Special flight paths)
 SDCategory: Hellfire Peninsula
 EndScriptData */
@@ -26,9 +26,7 @@
 npc_gryphoneer_windbellow
 npc_wing_commander_brack
-npc_wounded_blood_elf
 EndContentData */
 
 #include "precompiled.h"
-#include "../../npc/npc_escortAI.h"
 
 /*######
@@ -163,149 +161,4 @@
 
 /*######
-## npc_wounded_blood_elf
-######*/
-
-#define QUEST_THE_ROAD_TO_FALCON_WATCH 9375
-#define SAY1      "Thank you for agreeing to help. Now, let's get out of here $N."
-#define SAY2      "Over there! They're following us!"
-#define SAY3      "Allow me a moment to rest. The journey taxes what little strength I have."
-#define SAY4      "Did you hear something?"
-#define SAY5      "Falcon Watch, at last! Now, where's my... Oh no! My pack, it's missing! Where has -"
-#define SAYAGGRO  "You won't keep me from getting to Falcon Watch!"
-
-struct TRINITY_DLL_DECL npc_wounded_blood_elfAI : public npc_escortAI
-{
-    npc_wounded_blood_elfAI(Creature *c) : npc_escortAI(c) {Reset();}
-
-    void WaypointReached(uint32 i)
-    {
-        Unit* player = Unit::GetUnit((*m_creature), PlayerGUID);
-
-        if (!player)
-            return;
-
-        switch (i)
-        {
-
-        case 0:
-            DoSay(SAY1, LANG_UNIVERSAL, player);
-            // Change faction, so mobs can attack
-            m_creature->setFaction(1610);
-            break;
-
-        case 9:
-            DoSay(SAY2, LANG_UNIVERSAL, player);
-            // Spawn two Haal'eshi Talonguard
-            {
-                Creature* temp1 = m_creature->SummonCreature(16967, m_creature->GetPositionX()-15, m_creature->GetPositionY()-15, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
-                if (temp1) temp1->AI()->AttackStart(m_creature);
-                Creature* temp2 = m_creature->SummonCreature(16967, m_creature->GetPositionX()-17, m_creature->GetPositionY()-17, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
-                if (temp2) temp2->AI()->AttackStart(m_creature);
-            }
-            break;
-
-        case 13:
-            DoSay(SAY3, LANG_UNIVERSAL, player);
-            // NPC "should" kneel
-            m_creature->HandleEmoteCommand(EMOTE_STATE_KNEEL);
-            break;
-
-        case 14:
-            DoSay(SAY4, LANG_UNIVERSAL, player);
-            // Spawn two Haal'eshi Windwalker
-            {
-                Creature* temp3 = m_creature->SummonCreature(16966, m_creature->GetPositionX()-15, m_creature->GetPositionY()-15, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
-                if (temp3) temp3->AI()->AttackStart(m_creature);
-                Creature* temp4 = m_creature->SummonCreature(16966, m_creature->GetPositionX()-17, m_creature->GetPositionY()-17, m_creature->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 3000);
-                if (temp4) temp4->AI()->AttackStart(m_creature);
-            }
-            break;
-
-        case 27:
-            DoSay(SAY5, LANG_UNIVERSAL, player);
-            // Set faction back to normal
-            m_creature->setFaction(1604);
-            // Award quest credit
-            if( PlayerGUID )
-            {
-                Unit* player = Unit::GetUnit((*m_creature), PlayerGUID);
-                if( player && player->GetTypeId() == TYPEID_PLAYER )
-                    ((Player*)player)->GroupEventHappens(9375,m_creature);
-            }
-            break;
-        }
-    }
-
-    void Aggro(Unit* who)
-    {
-        DoSay(SAYAGGRO, LANG_UNIVERSAL, who);
-    }
-
-    void Reset() { }
-
-    void JustDied(Unit* killer)
-        // If NPC dies, Quest fail
-    {
-        if (PlayerGUID)
-        {
-            Unit* player = Unit::GetUnit((*m_creature), PlayerGUID);
-            if (player)
-                ((Player*)player)->FailQuest(QUEST_THE_ROAD_TO_FALCON_WATCH);
-        }
-    }
-
-    void UpdateAI(const uint32 diff)
-    {
-        npc_escortAI::UpdateAI(diff);
-    }
-};
-
-bool QuestAccept_wounded_blood_elf(Player* player, Creature* creature, Quest const* quest)
-// Begin the escort quest
-{
-    if (quest->GetQuestId() == QUEST_THE_ROAD_TO_FALCON_WATCH)
-    {
-        ((npc_escortAI*)(creature->AI()))->Start(true, true, false, player->GetGUID());
-    }
-    return true;
-}
-
-CreatureAI* GetAI_npc_wounded_blood_elf(Creature *_Creature)
-{
-    npc_wounded_blood_elfAI* thisAI = new npc_wounded_blood_elfAI(_Creature);
-
-    thisAI->AddWaypoint(0, -1137.72, 4272.10, 14.04, 3000);
-    thisAI->AddWaypoint(1, -1141.34, 4232.42, 14.63);
-    thisAI->AddWaypoint(2, -1133.47, 4220.88, 11.78);
-    thisAI->AddWaypoint(3, -1126.18, 4213.26, 13.51);
-    thisAI->AddWaypoint(4, -1100.12, 4204.32, 16.41);
-    thisAI->AddWaypoint(5, -1063.68, 4197.92, 15.51);
-    thisAI->AddWaypoint(6, -1027.28, 4194.36, 15.52);
-    thisAI->AddWaypoint(7, -995.68, 4189.59, 19.84);
-    thisAI->AddWaypoint(8, -970.90, 4188.60, 24.61);
-    thisAI->AddWaypoint(9, -961.93, 4193.34, 26.11, 80000); // Summon 1
-    thisAI->AddWaypoint(10, -935.52, 4210.99, 31.98);
-    thisAI->AddWaypoint(11, -913.42, 4218.27, 37.29);
-    thisAI->AddWaypoint(12, -896.53, 4207.73, 43.23);
-    thisAI->AddWaypoint(13, -868.49, 4194.77, 46.75, 17000); // Kneel and Rest Here
-    thisAI->AddWaypoint(14, -852.83, 4198.29, 47.28, 80000); // Summon 2
-    thisAI->AddWaypoint(15, -819.85, 4200.50, 46.37);
-    thisAI->AddWaypoint(16, -791.92, 4201.96, 44.19);
-    thisAI->AddWaypoint(17, -774.42, 4202.46, 47.41);
-    thisAI->AddWaypoint(18, -762.90, 4202.17, 48.81);
-    thisAI->AddWaypoint(19, -728.25, 4195.35, 50.68);
-    thisAI->AddWaypoint(20, -713.58, 4192.07, 53.98);
-    thisAI->AddWaypoint(21, -703.09, 4189.74, 56.96);
-    thisAI->AddWaypoint(22, -693.70, 4185.43, 57.06);
-    thisAI->AddWaypoint(23, -686.38, 4159.81, 60.26);
-    thisAI->AddWaypoint(24, -679.88, 4147.04, 64.20);
-    thisAI->AddWaypoint(25, -656.74, 4147.72, 64.11);
-    thisAI->AddWaypoint(26, -652.22, 4137.50, 64.58);
-    thisAI->AddWaypoint(27, -649.99, 4136.38, 64.63, 20000); // Award Quest Credit
-
-    return (CreatureAI*)thisAI;
-}
-
-/*######
 ##
 ######*/
@@ -319,5 +172,5 @@
     newscript->pGossipHello =   &GossipHello_npc_wing_commander_dabiree;
     newscript->pGossipSelect =  &GossipSelect_npc_wing_commander_dabiree;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -325,5 +178,5 @@
     newscript->pGossipHello =   &GossipHello_npc_gryphoneer_windbellow;
     newscript->pGossipSelect =  &GossipSelect_npc_gryphoneer_windbellow;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
@@ -331,10 +184,4 @@
     newscript->pGossipHello =   &GossipHello_npc_wing_commander_brack;
     newscript->pGossipSelect =  &GossipSelect_npc_wing_commander_brack;
-    newscript->RegisterSelf();
-	
-    newscript = new Script;
-    newscript->Name="npc_wounded_blood_elf";
-    newscript->GetAI = &GetAI_npc_wounded_blood_elf;
-    newscript->pQuestAccept = &QuestAccept_wounded_blood_elf;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/mulgore/mulgore.cpp (revision 272)
@@ -61,4 +61,4 @@
     newscript->pGossipHello          = &GossipHello_npc_skorn_whitecloud;
     newscript->pGossipSelect         = &GossipSelect_npc_skorn_whitecloud;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/zone/feralas/feralas.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/zone/feralas/feralas.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/zone/feralas/feralas.cpp (revision 272)
@@ -77,9 +77,9 @@
     newscript->pGossipHello = &GossipHello_npc_gregan_brewspewer;
     newscript->pGossipSelect = &GossipSelect_npc_gregan_brewspewer;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="npc_screecher_spirit";
     newscript->pGossipHello = &GossipHello_npc_screecher_spirit;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/areatrigger/areatrigger_scripts.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/areatrigger/areatrigger_scripts.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/areatrigger/areatrigger_scripts.cpp (revision 272)
@@ -41,4 +41,4 @@
     newscript->Name="at_test";
     newscript->pAreaTrigger = ATtest;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/scripts/item/item_scripts.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/item/item_scripts.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/item/item_scripts.cpp (revision 272)
@@ -456,94 +456,94 @@
     newscript->Name="item_area_52_special";
     newscript->pItemUse = ItemUse_item_area_52_special;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_arcane_charges";
     newscript->pItemUse = ItemUse_item_arcane_charges;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_attuned_crystal_cores";
     newscript->pItemUse = ItemUse_item_attuned_crystal_cores;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_blackwhelp_net";
     newscript->pItemUse = ItemUse_item_blackwhelp_net;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_disciplinary_rod";
     newscript->pItemUse = ItemUse_item_disciplinary_rod;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_draenei_fishing_net";
     newscript->pItemUse = ItemUse_item_draenei_fishing_net;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_nether_wraith_beacon";
     newscript->pItemUse = ItemUse_item_nether_wraith_beacon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_flying_machine";
     newscript->pItemUse = ItemUse_item_flying_machine;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_gor_dreks_ointment";
     newscript->pItemUse = ItemUse_item_gor_dreks_ointment;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_muiseks_vessel";
     newscript->pItemUse = ItemUse_item_muiseks_vessel;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_razorthorn_flayer_gland";
     newscript->pItemUse = ItemUse_item_razorthorn_flayer_gland;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_tame_beast_rods";
     newscript->pItemUse = ItemUse_item_tame_beast_rods;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_protovoltaic_magneto_collector";
     newscript->pItemUse = ItemUse_item_protovoltaic_magneto_collector;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_soul_cannon";
     newscript->pItemUse = ItemUse_item_soul_cannon;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_sparrowhawk_net";
     newscript->pItemUse = ItemUse_item_sparrowhawk_net;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_voodoo_charm";
     newscript->pItemUse = ItemUse_item_voodoo_charm;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_vorenthals_presence";
     newscript->pItemUse = ItemUse_item_vorenthals_presence;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_yehkinyas_bramble";
     newscript->pItemUse = ItemUse_item_yehkinyas_bramble;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 
     newscript = new Script;
     newscript->Name="item_zezzaks_shard";
     newscript->pItemUse = ItemUse_item_zezzak_shard;
-    newscript->RegisterSelf();
-}
+    m_scripts[nrscripts++] = newscript;
+}
Index: trunk/src/bindings/scripts/scripts/item/item_test.cpp
===================================================================
--- trunk/src/bindings/scripts/scripts/item/item_test.cpp (revision 260)
+++ trunk/src/bindings/scripts/scripts/item/item_test.cpp (revision 272)
@@ -39,4 +39,4 @@
     newscript->Name="item_test";
     newscript->pItemUse = ItemUse_item_test;
-    newscript->RegisterSelf();
+    m_scripts[nrscripts++] = newscript;
 }
Index: trunk/src/bindings/scripts/ScriptMgr.cpp
===================================================================
--- trunk/src/bindings/scripts/ScriptMgr.cpp (revision 260)
+++ trunk/src/bindings/scripts/ScriptMgr.cpp (revision 272)
@@ -18,6 +18,5 @@
 
 //*** Global data ***
-int num_db_scripts;
-int num_sc_scripts;
+int nrscripts;
 Script *m_scripts[MAX_SCRIPTS];
 
@@ -48,4 +47,5 @@
 // Text Maps
 UNORDERED_MAP<int32, StringTextData> TextMap;
+
 
 //*** End Global data ***
@@ -1181,14 +1181,13 @@
 TRINITY_DLL_EXPORT
 void ScriptsFree()
-{
+{   
     // Free Spell Summary
     delete []SpellSummary;
 
     // Free resources before library unload
-    for(int i=0;i<num_db_scripts;i++)
+    for(int i=0;i<nrscripts;i++)
         delete m_scripts[i];
 
-    num_db_scripts = 0;
-    num_sc_scripts = 0;
+    nrscripts = 0;
 }
 
@@ -1241,6 +1240,4 @@
         LoadDatabase();
 
-    num_db_scripts = GetScriptNames().size();
-
     outstring_log("TSCR: Loading C++ scripts");
     barGoLink bar(1);
@@ -1248,4 +1245,5 @@
     outstring_log("");
 
+    nrscripts = 0;
     for(int i=0;i<MAX_SCRIPTS;i++)
         m_scripts[i]=NULL;
@@ -1778,5 +1776,6 @@
     // -------------------
 
-    outstring_log(">> Loaded %i C++ Scripts (of %i ScriptNames defined in Mangos database)", num_sc_scripts, num_db_scripts);
+    outstring_log("TSCR: Loaded %u C++ Scripts", nrscripts);
+    outstring_log("");
 }
 
@@ -1850,13 +1849,21 @@
 //*** Functions used internally ***
 
-void Script::RegisterSelf()
-{
-    int id = GetScriptId(Name.c_str());
-    if (id != 0)
-    {
-        m_scripts[id] = this;
-        ++num_sc_scripts;
-    } else
-        debug_log("SD2: RegisterSelf, but script named %s does not have ScriptName assigned in database.",(this)->Name.c_str());
+TRINITY_DLL_EXPORT
+char const* ScriptsVersion()
+{
+	return "Default Trinity scripting library";
+}
+
+Script* GetScriptByName(std::string Name)
+{
+    if (Name.empty())
+        return NULL;
+
+    for(int i=0;i<MAX_SCRIPTS;i++)
+    {
+        if (m_scripts[i] && m_scripts[i]->Name == Name)
+            return m_scripts[i];
+    }
+    return NULL;
 }
 
@@ -1865,12 +1872,7 @@
 
 TRINITY_DLL_EXPORT
-char const* ScriptsVersion()
-{
-	return "Default Trinity scripting library";
-}
-TRINITY_DLL_EXPORT
 bool GossipHello ( Player * player, Creature *_Creature )
 {
-    Script *tmpscript = m_scripts[_Creature->GetScriptId()];
+    Script *tmpscript = GetScriptByName(_Creature->GetScriptName());
     if (!tmpscript || !tmpscript->pGossipHello) return false;
 
@@ -1884,5 +1886,5 @@
     debug_log("TSCR: Gossip selection, sender: %d, action: %d",sender, action);
 
-    Script *tmpscript = m_scripts[_Creature->GetScriptId()];
+    Script *tmpscript = GetScriptByName(_Creature->GetScriptName());
     if (!tmpscript || !tmpscript->pGossipSelect) return false;
 
@@ -1896,5 +1898,5 @@
     debug_log("TSCR: Gossip selection with code, sender: %d, action: %d",sender, action);
 
-    Script *tmpscript = m_scripts[_Creature->GetScriptId()];
+    Script *tmpscript = GetScriptByName(_Creature->GetScriptName());
     if (!tmpscript || !tmpscript->pGossipSelectWithCode) return false;
 
@@ -1906,5 +1908,5 @@
 bool QuestAccept( Player *player, Creature *_Creature, Quest const *_Quest )
 {
-    Script *tmpscript = m_scripts[_Creature->GetScriptId()];
+    Script *tmpscript = GetScriptByName(_Creature->GetScriptName());
     if (!tmpscript || !tmpscript->pQuestAccept) return false;
 
@@ -1916,5 +1918,5 @@
 bool QuestSelect( Player *player, Creature *_Creature, Quest const *_Quest )
 {
-    Script *tmpscript = m_scripts[_Creature->GetScriptId()];
+    Script *tmpscript = GetScriptByName(_Creature->GetScriptName());
     if (!tmpscript || !tmpscript->pQuestSelect) return false;
 
@@ -1926,5 +1928,5 @@
 bool QuestComplete( Player *player, Creature *_Creature, Quest const *_Quest )
 {
-    Script *tmpscript = m_scripts[_Creature->GetScriptId()];
+    Script *tmpscript = GetScriptByName(_Creature->GetScriptName());
     if (!tmpscript || !tmpscript->pQuestComplete) return false;
 
@@ -1936,5 +1938,5 @@
 bool ChooseReward( Player *player, Creature *_Creature, Quest const *_Quest, uint32 opt )
 {
-    Script *tmpscript = m_scripts[_Creature->GetScriptId()];
+    Script *tmpscript = GetScriptByName(_Creature->GetScriptName());
     if (!tmpscript || !tmpscript->pChooseReward) return false;
 
@@ -1946,5 +1948,5 @@
 uint32 NPCDialogStatus( Player *player, Creature *_Creature )
 {
-    Script *tmpscript = m_scripts[_Creature->GetScriptId()];
+    Script *tmpscript = GetScriptByName(_Creature->GetScriptName());
     if (!tmpscript || !tmpscript->pNPCDialogStatus) return 100;
 
@@ -1956,6 +1958,6 @@
 uint32 GODialogStatus( Player *player, GameObject *_GO )
 {
-    Script *tmpscript = m_scripts[_GO->GetGOInfo()->ScriptId];
-    if (!tmpscript || !tmpscript->pGODialogStatus) return 100;
+    Script *tmpscript = GetScriptByName(_GO->GetGOInfo()->ScriptName);
+    if(!tmpscript || !tmpscript->pGODialogStatus) return 100;
 
     player->PlayerTalkClass->ClearMenus();
@@ -1966,5 +1968,5 @@
 bool ItemHello( Player *player, Item *_Item, Quest const *_Quest )
 {
-    Script *tmpscript = m_scripts[_Item->GetProto()->ScriptId];
+    Script *tmpscript = GetScriptByName(_Item->GetProto()->ScriptName);
     if (!tmpscript || !tmpscript->pItemHello) return false;
 
@@ -1976,5 +1978,5 @@
 bool ItemQuestAccept( Player *player, Item *_Item, Quest const *_Quest )
 {
-    Script *tmpscript = m_scripts[_Item->GetProto()->ScriptId];
+    Script *tmpscript = GetScriptByName(_Item->GetProto()->ScriptName);
     if (!tmpscript || !tmpscript->pItemQuestAccept) return false;
 
@@ -1986,5 +1988,5 @@
 bool GOHello( Player *player, GameObject *_GO )
 {
-    Script *tmpscript = m_scripts[_GO->GetGOInfo()->ScriptId];
+    Script *tmpscript = GetScriptByName(_GO->GetGOInfo()->ScriptName);
     if (!tmpscript || !tmpscript->pGOHello) return false;
 
@@ -1996,5 +1998,5 @@
 bool GOQuestAccept( Player *player, GameObject *_GO, Quest const *_Quest )
 {
-    Script *tmpscript = m_scripts[_GO->GetGOInfo()->ScriptId];
+    Script *tmpscript = GetScriptByName(_GO->GetGOInfo()->ScriptName);
     if (!tmpscript || !tmpscript->pGOQuestAccept) return false;
 
@@ -2006,5 +2008,5 @@
 bool GOChooseReward( Player *player, GameObject *_GO, Quest const *_Quest, uint32 opt )
 {
-    Script *tmpscript = m_scripts[_GO->GetGOInfo()->ScriptId];
+    Script *tmpscript = GetScriptByName(_GO->GetGOInfo()->ScriptName);
     if (!tmpscript || !tmpscript->pGOChooseReward) return false;
 
@@ -2016,5 +2018,7 @@
 bool AreaTrigger( Player *player, AreaTriggerEntry * atEntry)
 {
-    Script *tmpscript = m_scripts[GetAreaTriggerScriptId(atEntry->id)];
+    Script *tmpscript = NULL;
+
+    tmpscript = GetScriptByName(GetAreaTriggerScriptNameById(atEntry->id));
     if (!tmpscript || !tmpscript->pAreaTrigger) return false;
 
@@ -2025,7 +2029,7 @@
 CreatureAI* GetAI(Creature *_Creature)
 {
-    Script *tmpscript = m_scripts[_Creature->GetScriptId()];
+    Script *tmpscript = GetScriptByName(_Creature->GetScriptName());
+
     if (!tmpscript || !tmpscript->GetAI) return NULL;
-
     return tmpscript->GetAI(_Creature);
 }
@@ -2034,5 +2038,5 @@
 bool ItemUse( Player *player, Item* _Item, SpellCastTargets const& targets)
 {
-    Script *tmpscript = m_scripts[_Item->GetProto()->ScriptId];
+    Script *tmpscript = GetScriptByName(_Item->GetProto()->ScriptName);
     if (!tmpscript || !tmpscript->pItemUse) return false;
 
@@ -2043,5 +2047,5 @@
 bool ReceiveEmote( Player *player, Creature *_Creature, uint32 emote )
 {
-    Script *tmpscript = m_scripts[_Creature->GetScriptId()];
+    Script *tmpscript = GetScriptByName(_Creature->GetScriptName());
     if (!tmpscript || !tmpscript->pReceiveEmote) return false;
 
@@ -2052,8 +2056,10 @@
 InstanceData* CreateInstanceData(Map *map)
 {
-    if (!map->IsDungeon()) return NULL;
-
-    Script *tmpscript = m_scripts[((InstanceMap*)map)->GetScriptId()];
-    if (!tmpscript || !tmpscript->GetInstanceData) return NULL;
+    Script *tmpscript = NULL;
+
+    if (!map->IsDungeon()) return false;
+
+    tmpscript = GetScriptByName(((InstanceMap*)map)->GetScript());
+    if (!tmpscript || !tmpscript->GetInstanceData) return false;
 
     return tmpscript->GetInstanceData(map);
