Index: trunk/src/game/Object.cpp
===================================================================
--- trunk/src/game/Object.cpp (revision 123)
+++ trunk/src/game/Object.cpp (revision 138)
@@ -1483,4 +1483,7 @@
         ((Creature*)this)->AI()->JustSummoned(pCreature);
 
+    if(pCreature->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER && pCreature->m_spells[0])
+        pCreature->CastSpell(pCreature, pCreature->m_spells[0], true, 0, 0, GetGUID());
+
     //return the creature therewith the summoner has access to it
     return pCreature;
Index: trunk/src/game/Unit.cpp
===================================================================
--- trunk/src/game/Unit.cpp (revision 136)
+++ trunk/src/game/Unit.cpp (revision 138)
@@ -8572,5 +8572,8 @@
         {
             // Units far than max visible distance for creature or not in our map are not visible too
-            if (!IsWithinDistInMap(u,World::GetMaxVisibleDistanceForCreature()+(inVisibleList ? World::GetVisibleUnitGreyDistance() : 0.0f)))
+            // Active unit should always be visibile
+            if (!IsWithinDistInMap(u, u->isActive() 
+                ? (MAX_VISIBILITY_DISTANCE - (inVisibleList ? 0.0f : World::GetVisibleUnitGreyDistance()))
+                : (World::GetMaxVisibleDistanceForCreature() + (inVisibleList ? World::GetVisibleUnitGreyDistance() : 0.0f))))
                 return false;
         }
Index: trunk/src/game/World.cpp
===================================================================
--- trunk/src/game/World.cpp (revision 122)
+++ trunk/src/game/World.cpp (revision 138)
@@ -1097,4 +1097,7 @@
     spellmgr.LoadSpellExtraAttr();
 
+    sLog.outString( "Loading linked spells..." );
+    spellmgr.LoadSpellLinked();
+
     sLog.outString( "Loading player Create Info & Level Stats..." );
     objmgr.LoadPlayerInfo();
Index: trunk/src/game/Spell.cpp
===================================================================
--- trunk/src/game/Spell.cpp (revision 131)
+++ trunk/src/game/Spell.cpp (revision 138)
@@ -927,5 +927,5 @@
     {
         if(spell_triggered > 0)
-            m_caster->CastSpell(unit, spell_triggered, true);
+            unit->CastSpell(unit, spell_triggered, true/*, 0, 0, m_caster->GetGUID()*/);
         else
             unit->RemoveAurasDueToSpell(-spell_triggered);
Index: trunk/sql/updates/146_world.sql
===================================================================
--- trunk/sql/updates/146_world.sql (revision 138)
+++ trunk/sql/updates/146_world.sql (revision 138)
@@ -0,0 +1,120 @@
+update creature_template set spell1 = 40836, flags_extra = 128, scriptname = '' where entry = 23336;
+
+DROP TABLE IF EXISTS `spell_linked_spell`;
+CREATE TABLE `spell_linked_spell` (
+  `spell_trigger` int(10) NOT NULL,
+  `spell_effect` int(10) NOT NULL default '0',
+  `type` smallint(3) unsigned NOT NULL default '0',
+  `comment` text NOT NULL default '',
+  PRIMARY KEY (`spell_trigger`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (44008, 45265, 1, 'Static Disruption Visual');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (42052, 40118, 0, 'Volcanic Geyser Visual');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (-41914, 41915, 0, 'Summon Parasitic Shadowfiend\r\n');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (46021, 44852, 1, 'Spectral Realm Aura');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (-46021, 44867, 0, 'Spectral Exhaustion');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (-30410, 44032, 0, 'Manticron Cube Mind Exhaustion');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (-45934, 7, 0, 'Dark Fiend Suicide');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (45661, 45665, 1, 'Encapsulate\r\n');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (40604, 40616, 1, 'Fel Rage Aura');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (40616, 41625, 1, 'Fel Rage Aura');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (41292, 42017, 1, 'Aura of Suffering');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (-41292, -42017, 0, 'Aura of Suffering');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (45347, -45348, 1, 'Remove Flame Touched');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (45348, -45347, 1, 'Remove Dark Touched');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (45248, 45347, 1, 'Apply Dark Touched');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (45329, 45347, 1, 'Apply Dark Touched');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (45256, 45347, 1, 'Apply Dark Touched');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (45270, 45347, 1, 'Apply Dark Touched');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (45342, 45348, 1, 'Apply Flame Touched');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (46771, 45348, 1, 'Apply Flame Touched');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (45271, 45347, 1, 'Apply Dark Touched');
+
+INSERT INTO spell_linked_spell
+   (`spell_trigger`, `spell_effect`, `type`, `comment`)
+VALUES
+   (45246, 45348, 1, 'Apply Flame Touched');
