Index: /trunk/src/game/Object.cpp
===================================================================
--- /trunk/src/game/Object.cpp (revision 58)
+++ /trunk/src/game/Object.cpp (revision 81)
@@ -595,4 +595,18 @@
                     *data << (m_uint32Values[ index ] & ~UNIT_FLAG_NOT_SELECTABLE);
                 }
+                // use modelid_a if not gm, _h if gm for CREATURE_FLAG_EXTRA_TRIGGER creatures
+                else if(index == UNIT_FIELD_DISPLAYID && GetTypeId() == TYPEID_UNIT)
+                {
+                    const CreatureInfo* cinfo = ((Creature*)this)->GetCreatureInfo();
+                    if(cinfo->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER)
+                    {
+                        if(target->isGameMaster())
+                            *data << cinfo->DisplayID_A;
+                        else
+                            *data << cinfo->DisplayID_H;
+                    }
+                    else
+                        *data << m_uint32Values[ index ];
+                }
                 // hide lootable animation for unallowed players
                 else if(index == UNIT_DYNAMIC_FLAGS && GetTypeId() == TYPEID_UNIT)
Index: /trunk/src/game/Creature.h
===================================================================
--- /trunk/src/game/Creature.h (revision 44)
+++ /trunk/src/game/Creature.h (revision 81)
@@ -125,4 +125,5 @@
     CREATURE_FLAG_EXTRA_NO_CRUSH        = 0x00000020,       // creature can't do crush attacks
     CREATURE_FLAG_EXTRA_NO_XP_AT_KILL   = 0x00000040,       // creature kill not provide XP
+    CREATURE_FLAG_EXTRA_TRIGGER         = 0x00000080,       // trigger creature
     CREATURE_FLAG_EXTRA_WORLDEVENT      = 0x00004000,       // custom flag for world event creatures (left room for merging)
 };
Index: /trunk/src/game/CreatureAISelector.cpp
===================================================================
--- /trunk/src/game/CreatureAISelector.cpp (revision 44)
+++ /trunk/src/game/CreatureAISelector.cpp (revision 81)
@@ -61,4 +61,6 @@
             else if(creature->isTotem())
                 ai_factory = ai_registry.GetRegistryItem("TotemAI");
+            else if(creature->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER)
+                ai_factory = ai_registry.GetRegistryItem("NullCreatureAI");
         }
 
Index: /trunk/src/game/Unit.cpp
===================================================================
--- /trunk/src/game/Unit.cpp (revision 74)
+++ /trunk/src/game/Unit.cpp (revision 81)
@@ -8458,4 +8458,7 @@
         return false;
 
+    if(GetTypeId()==TYPEID_UNIT && (((Creature *)this)->GetCreatureInfo()->flags_extra & CREATURE_FLAG_EXTRA_TRIGGER))
+        return false;
+
     return isAlive() && !hasUnitState(UNIT_STAT_DIED)&& !isInFlight() /*&& !isStealth()*/;
 }
