Index: /trunk/src/game/Object.cpp
===================================================================
--- /trunk/src/game/Object.cpp (revision 44)
+++ /trunk/src/game/Object.cpp (revision 52)
@@ -1436,4 +1436,27 @@
 }
 
+GameObject* WorldObject::SummonGameObject(uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime)
+{
+    if(!IsInWorld())
+        return NULL;
+    Map * map = GetMap();
+    if(!map)
+        return NULL;
+    GameObjectInfo const* goinfo = objmgr.GetGameObjectInfo(entry);
+    if(!goinfo)
+    {
+        sLog.outErrorDb("Gameobject template %u not found in database!", entry);
+        return NULL;
+    }
+    GameObject *go = new GameObject();
+    if(!go->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT),entry,map,x,y,z,ang,rotation0,rotation1,rotation2,rotation3,100,1))
+        return NULL;
+    go->SetRespawnTime(respawnTime);
+    go->SetSpawnedByDefault(false); // do not save respawn time
+    map->Add(go);
+
+    return go;
+}
+
 void WorldObject::GetNearPoint2D(float &x, float &y, float distance2d, float absAngle ) const
 {
Index: /trunk/src/game/GameObject.h
===================================================================
--- /trunk/src/game/GameObject.h (revision 44)
+++ /trunk/src/game/GameObject.h (revision 52)
@@ -495,4 +495,5 @@
         }
         bool isSpawnedByDefault() const { return m_spawnedByDefault; }
+        void SetSpawnedByDefault(bool b) { m_spawnedByDefault = b; }
         uint32 GetRespawnDelay() const { return m_respawnDelayTime; }
         void Refresh();
Index: /trunk/src/game/Object.h
===================================================================
--- /trunk/src/game/Object.h (revision 44)
+++ /trunk/src/game/Object.h (revision 52)
@@ -92,4 +92,5 @@
 class UpdateMask;
 class InstanceData;
+class GameObject;
 
 typedef HM_NAMESPACE::hash_map<Player*, UpdateData> UpdateDataMapType;
@@ -446,5 +447,5 @@
         Map const* GetBaseMap() const;
         Creature* SummonCreature(uint32 id, float x, float y, float z, float ang,TempSummonType spwtype,uint32 despwtime);
-
+        GameObject* SummonGameObject(uint32 entry, float x, float y, float z, float ang, float rotation0, float rotation1, float rotation2, float rotation3, uint32 respawnTime);
     protected:
         explicit WorldObject();
