diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml
index aaf41b68b4c0565c6de7fccde819c4843c66c3f1..6ccf89eabec6c76ac4e370f6dd1ffcca7dcaa4a2 100644
--- a/indra/newview/app_settings/settings.xml
+++ b/indra/newview/app_settings/settings.xml
@@ -3710,7 +3710,7 @@
         <key>Type</key>
         <string>F32</string>
         <key>Value</key>
-        <real>40.0</real>
+        <real>300.0</real>
     </map>
     <key>FindLandArea</key>
     <map>
diff --git a/indra/newview/llcompilequeue.cpp b/indra/newview/llcompilequeue.cpp
index de7bc1e3c5e124c90dcb8d3e1fcceb1f3445788f..7721e6729089c65036cb7b1d7a29bfc189e12775 100644
--- a/indra/newview/llcompilequeue.cpp
+++ b/indra/newview/llcompilequeue.cpp
@@ -207,9 +207,10 @@ void LLFloaterScriptQueue::onCloseBtn(void* user_data)
 	self->closeFloater();
 }
 
-void LLFloaterScriptQueue::addObject(const LLUUID& id)
+void LLFloaterScriptQueue::addObject(const LLUUID& id, std::string name)
 {
-	mObjectIDs.insert(id);
+    ObjectData obj = { id, name };
+    mObjectList.push_back(obj);
 }
 
 BOOL LLFloaterScriptQueue::start()
@@ -218,7 +219,7 @@ BOOL LLFloaterScriptQueue::start()
 
 	LLStringUtil::format_map_t args;
 	args["[START]"] = mStartString;
-	args["[COUNT]"] = llformat ("%d", mObjectIDs.size());
+	args["[COUNT]"] = llformat ("%d", mObjectList.size());
 	buffer = getString ("Starting", args);
 	
 	getChild<LLScrollListCtrl>("queue output")->addSimpleElement(buffer, ADD_BOTTOM);
@@ -241,7 +242,7 @@ void LLFloaterScriptQueue::addStringMessage(const std::string &message)
 
 BOOL LLFloaterScriptQueue::isDone() const
 {
-	return (mCurrentObjectID.isNull() && (mObjectIDs.size() == 0));
+	return (mCurrentObjectID.isNull() && (mObjectList.size() == 0));
 }
 
 ///----------------------------------------------------------------------------
@@ -339,7 +340,7 @@ void LLFloaterCompileQueue::processExperienceIdResults(LLSD result, LLUUID paren
     LLCoros::instance().launch("ScriptQueueCompile", boost::bind(LLFloaterScriptQueue::objectScriptProcessingQueueCoro,
         queue->mStartString,
         hFloater,
-        queue->mObjectIDs,
+        queue->mObjectList,
         fn));
 
 }
@@ -393,7 +394,9 @@ bool LLFloaterCompileQueue::processScript(LLHandle<LLFloaterCompileQueue> hfloat
 
         if (result.has("timeout") && result["timeout"].asBoolean())
         {
-            std::string buffer = "Timeout: " + inventory->getName();
+            LLStringUtil::format_map_t args;
+            args["[OBJECT_NAME]"] = inventory->getName();
+            std::string buffer = that->getString("Timeout", args);
             that->addStringMessage(buffer);
             return true;
         }
@@ -443,7 +446,9 @@ bool LLFloaterCompileQueue::processScript(LLHandle<LLFloaterCompileQueue> hfloat
     {
         if (result.has("timeout") && result["timeout"].asBoolean())
         {
-            std::string buffer = "Timeout: " + inventory->getName();
+            LLStringUtil::format_map_t args;
+            args["[OBJECT_NAME]"] = inventory->getName();
+            std::string buffer = that->getString("Timeout", args);
             that->addStringMessage(buffer);
             return true;
         }
@@ -497,7 +502,9 @@ bool LLFloaterCompileQueue::processScript(LLHandle<LLFloaterCompileQueue> hfloat
     {
         if (result.has("timeout") && result["timeout"].asBoolean())
         {
-            std::string buffer = "Timeout: " + inventory->getName();
+            LLStringUtil::format_map_t args;
+            args["[OBJECT_NAME]"] = inventory->getName();
+            std::string buffer = that->getString("Timeout", args);
             that->addStringMessage(buffer);
             return true;
         }
@@ -601,7 +608,7 @@ bool LLFloaterResetQueue::startQueue()
     LLCoros::instance().launch("ScriptResetQueue", boost::bind(LLFloaterScriptQueue::objectScriptProcessingQueueCoro,
         mStartString,
         getDerivedHandle<LLFloaterScriptQueue>(),
-        mObjectIDs,
+        mObjectList,
         fn));
 
     return true;
@@ -655,7 +662,7 @@ bool LLFloaterRunQueue::startQueue()
     LLCoros::instance().launch("ScriptRunQueue", boost::bind(LLFloaterScriptQueue::objectScriptProcessingQueueCoro,
         mStartString,
         hFloater,
-        mObjectIDs,
+        mObjectList,
         fn));
 
     return true;
@@ -710,7 +717,7 @@ bool LLFloaterNotRunQueue::startQueue()
     LLCoros::instance().launch("ScriptQueueNotRun", boost::bind(LLFloaterScriptQueue::objectScriptProcessingQueueCoro,
         mStartString,
         hFloater,
-        mObjectIDs,
+        mObjectList,
         fn));
 
     return true;
@@ -730,7 +737,7 @@ void ObjectInventoryFetcher::inventoryChanged(LLViewerObject* object,
 }
 
 void LLFloaterScriptQueue::objectScriptProcessingQueueCoro(std::string action, LLHandle<LLFloaterScriptQueue> hfloater,
-    uuid_list_t objectList, fnQueueAction_t func)
+    object_data_list_t objectList, fnQueueAction_t func)
 {
     LLCoros::set_consuming(true);
     LLFloaterScriptQueue * floater(NULL);
@@ -744,12 +751,13 @@ void LLFloaterScriptQueue::objectScriptProcessingQueueCoro(std::string action, L
 //         .with("[COUNT]", LLSD::Integer(objectList.size())));
 //     floater = NULL;
 
-    for (uuid_list_t::iterator itObj(objectList.begin()); (itObj != objectList.end()); ++itObj)
+    for (object_data_list_t::iterator itObj(objectList.begin()); (itObj != objectList.end()); ++itObj)
     {
         bool firstForObject = true;
-        LL_INFOS("SCRIPTQ") << "Next object in queue with ID=" << (*itObj).asString() << LL_ENDL;
+        LLUUID object_id = (*itObj).mObjectId;
+        LL_INFOS("SCRIPTQ") << "Next object in queue with ID=" << object_id.asString() << LL_ENDL;
 
-        LLPointer<LLViewerObject> obj = gObjectList.findObject(*itObj);
+        LLPointer<LLViewerObject> obj = gObjectList.findObject(object_id);
         LLInventoryObject::object_list_t inventory;
         if (obj)
         {
@@ -757,13 +765,31 @@ void LLFloaterScriptQueue::objectScriptProcessingQueueCoro(std::string action, L
 
             fetcher->fetchInventory();
 
+            floater = hfloater.get();
+            if (floater)
+            {
+                LLStringUtil::format_map_t args;
+                args["[OBJECT_NAME]"] = (*itObj).mObjectName;
+                floater->addStringMessage(floater->getString("LoadingObjInv", args));
+            }
+
             LLSD result = llcoro::suspendUntilEventOnWithTimeout(maildrop, fetch_timeout,
                 LLSD().with("timeout", LLSD::Boolean(true)));
 
             if (result.has("timeout") && result["timeout"].asBoolean())
             {
-                LL_WARNS("SCRIPTQ") << "Unable to retrieve inventory for object " << (*itObj).asString() <<
+                LL_WARNS("SCRIPTQ") << "Unable to retrieve inventory for object " << object_id.asString() <<
                     ". Skipping to next object." << LL_ENDL;
+
+                // floater could have been closed
+                floater = hfloater.get();
+                if (floater)
+                {
+                    LLStringUtil::format_map_t args;
+                    args["[OBJECT_NAME]"] = (*itObj).mObjectName;
+                    floater->addStringMessage(floater->getString("Timeout", args));
+                }
+
                 continue;
             }
 
@@ -771,7 +797,7 @@ void LLFloaterScriptQueue::objectScriptProcessingQueueCoro(std::string action, L
         }
         else
         {
-            LL_WARNS("SCRIPTQ") << "Unable to retrieve object with ID of " << (*itObj) <<
+            LL_WARNS("SCRIPTQ") << "Unable to retrieve object with ID of " << object_id <<
                 ". Skipping to next." << LL_ENDL;
             continue;
         }
diff --git a/indra/newview/llcompilequeue.h b/indra/newview/llcompilequeue.h
index 271ac5e05d9a3343d759dff0044d5aadb5e0ec6b..1b3d8f83a0bb0f3a3ab24fc315ff18270cb6963d 100644
--- a/indra/newview/llcompilequeue.h
+++ b/indra/newview/llcompilequeue.h
@@ -61,7 +61,7 @@ class LLFloaterScriptQueue : public LLFloater/*, public LLVOInventoryListener*/
 	void setMono(bool mono) { mMono = mono; }
 	
 	// addObject() accepts an object id.
-	void addObject(const LLUUID& id);
+	void addObject(const LLUUID& id, std::string name);
 
 	// start() returns TRUE if the queue has started, otherwise FALSE.
 	BOOL start();
@@ -87,7 +87,14 @@ class LLFloaterScriptQueue : public LLFloater/*, public LLVOInventoryListener*/
 	LLButton* mCloseBtn;
 
 	// Object Queue
-    uuid_list_t     mObjectIDs;
+	struct ObjectData
+	{
+		LLUUID mObjectId;
+		std::string mObjectName;
+	};
+	typedef std::vector<ObjectData> object_data_list_t;
+
+	object_data_list_t mObjectList;
 	LLUUID mCurrentObjectID;
 	bool mDone;
 
@@ -95,7 +102,7 @@ class LLFloaterScriptQueue : public LLFloater/*, public LLVOInventoryListener*/
 	bool mMono;
 
     typedef boost::function<bool(const LLPointer<LLViewerObject> &, LLInventoryObject*, LLEventPump &)>   fnQueueAction_t;
-    static void objectScriptProcessingQueueCoro(std::string action, LLHandle<LLFloaterScriptQueue> hfloater, uuid_list_t objectList, fnQueueAction_t func);
+    static void objectScriptProcessingQueueCoro(std::string action, LLHandle<LLFloaterScriptQueue> hfloater, object_data_list_t objectList, fnQueueAction_t func);
 
 };
 
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 99a9ed1d75a2d7fbd93be5fa0f443167d6de1246..f5b06fbd19519da7d340d73c6231acb8e417eea9 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -6986,20 +6986,25 @@ class LLAvatarCall : public view_listener_t
 
 namespace
 {
-	struct QueueObjects : public LLSelectedObjectFunctor
+	struct QueueObjects : public LLSelectedNodeFunctor
 	{
 		BOOL scripted;
 		BOOL modifiable;
 		LLFloaterScriptQueue* mQueue;
 		QueueObjects(LLFloaterScriptQueue* q) : mQueue(q), scripted(FALSE), modifiable(FALSE) {}
-		virtual bool apply(LLViewerObject* obj)
+		virtual bool apply(LLSelectNode* node)
 		{
+			LLViewerObject* obj = node->getObject();
+			if (!obj)
+			{
+				return true;
+			}
 			scripted = obj->flagScripted();
 			modifiable = obj->permModify();
 
 			if( scripted && modifiable )
 			{
-				mQueue->addObject(obj->getID());
+				mQueue->addObject(obj->getID(), node->mName);
 				return false;
 			}
 			else
@@ -7015,7 +7020,7 @@ void queue_actions(LLFloaterScriptQueue* q, const std::string& msg)
 	QueueObjects func(q);
 	LLSelectMgr *mgr = LLSelectMgr::getInstance();
 	LLObjectSelectionHandle selectHandle = mgr->getSelection();
-	bool fail = selectHandle->applyToObjects(&func);
+	bool fail = selectHandle->applyToNodes(&func);
 	if(fail)
 	{
 		if ( !func.scripted )
diff --git a/indra/newview/skins/default/xui/en/floater_script_queue.xml b/indra/newview/skins/default/xui/en/floater_script_queue.xml
index f4aca7bb3dd3339743154385ffc690b13e19ed9b..0982683a7f51769eb10a02c997425f99003053a5 100644
--- a/indra/newview/skins/default/xui/en/floater_script_queue.xml
+++ b/indra/newview/skins/default/xui/en/floater_script_queue.xml
@@ -29,6 +29,14 @@
      name="NotRunning">
         Not running
     </floater.string>
+    <floater.string
+     name="Timeout">
+        Timeout: [OBJECT_NAME]
+    </floater.string>
+    <floater.string
+     name="LoadingObjInv">
+        Loading inventory for: [OBJECT_NAME]
+    </floater.string>
     <button
      follows="right|bottom"
      height="24"