Index: /trunk/src/game/SpellEffects.cpp
===================================================================
--- /trunk/src/game/SpellEffects.cpp (revision 272)
+++ /trunk/src/game/SpellEffects.cpp (revision 274)
@@ -3137,4 +3137,5 @@
         case SUMMON_TYPE_POSESSED:
         case SUMMON_TYPE_POSESSED2:
+        case SUMMON_TYPE_POSESSED3:
             EffectSummonPossessed(i);
             break;
@@ -3161,5 +3162,4 @@
             break;
         case SUMMON_TYPE_UNKNOWN1:
-        case SUMMON_TYPE_UNKNOWN2:
         case SUMMON_TYPE_UNKNOWN3:
         case SUMMON_TYPE_UNKNOWN4:
Index: /trunk/src/game/SpellHandler.cpp
===================================================================
--- /trunk/src/game/SpellHandler.cpp (revision 272)
+++ /trunk/src/game/SpellHandler.cpp (revision 274)
@@ -34,4 +34,5 @@
 #include "ScriptCalls.h"
 #include "Totem.h"
+#include "TemporarySummon.h"
 
 void WorldSession::HandleUseItemOpcode(WorldPacket& recvPacket)
@@ -371,4 +372,12 @@
                 return;
             }
+            else if (spellInfo->Effect[i] == SPELL_EFFECT_SUMMON && 
+                (spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED || 
+                 spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED2 || 
+                 spellInfo->EffectMiscValueB[i] == SUMMON_TYPE_POSESSED3))
+            {
+                // Possession is removed in the UnSummon function
+                ((TemporarySummon*)caster->GetCharm())->UnSummon();
+            }
         }
     }
Index: /trunk/src/game/SpellAuras.cpp
===================================================================
--- /trunk/src/game/SpellAuras.cpp (revision 272)
+++ /trunk/src/game/SpellAuras.cpp (revision 274)
@@ -50,5 +50,4 @@
 #include "GridNotifiersImpl.h"
 #include "CellImpl.h"
-#include "TemporarySummon.h"
 
 #define NULL_AURA_SLOT 0xFF
@@ -2015,11 +2014,4 @@
             return;
         }
-
-        // Eye of Kilrogg, unsummon eye when aura is gone
-        if(GetId() == 126 && caster->GetTypeId() == TYPEID_PLAYER && caster->GetCharm())
-        {
-            ((TemporarySummon*)caster->GetCharm())->UnSummon();
-            return;
-        }
     }
 
Index: /trunk/src/game/SharedDefines.h
===================================================================
--- /trunk/src/game/SharedDefines.h (revision 272)
+++ /trunk/src/game/SharedDefines.h (revision 274)
@@ -2070,5 +2070,5 @@
     SUMMON_TYPE_CRITTER3    = 307,
     SUMMON_TYPE_UNKNOWN5    = 409,
-    SUMMON_TYPE_UNKNOWN2    = 427,
+    SUMMON_TYPE_POSESSED3   = 427,
     SUMMON_TYPE_POSESSED2   = 428
 };
Index: /trunk/src/game/Spell.cpp
===================================================================
--- /trunk/src/game/Spell.cpp (revision 273)
+++ /trunk/src/game/Spell.cpp (revision 274)
@@ -3864,4 +3864,5 @@
                     case SUMMON_TYPE_POSESSED:
                     case SUMMON_TYPE_POSESSED2:
+                    case SUMMON_TYPE_POSESSED3:
                     case SUMMON_TYPE_DEMON:
                     case SUMMON_TYPE_SUMMON:
