diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 7543752f888973903e99da835f365c01d7c0ac3e..ad9e9fa271f38282cd212c0c1a95b1f869da674f 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -9973,6 +9973,109 @@ class BDCheckGodStatus : public view_listener_t
 	}
 };
 
+//BD - Tools - Scripts
+// static
+void script_recompile(bool mono)
+{
+	// [RLVa:KB] - Checked: 2010-04-19 (RLVa-1.2.0f) | Modified: RLVa-1.0.5a
+			// We'll allow resetting the scripts of objects on a non-attachable attach point since they wouldn't be able to circumvent anything
+	if ((rlv_handler_t::isEnabled()) && (gRlvAttachmentLocks.hasLockedAttachmentPoint(RLV_LOCK_REMOVE)))
+	{
+		LLObjectSelectionHandle hSel = LLSelectMgr::getInstance()->getSelection();
+		RlvSelectHasLockedAttach f;
+		if ((hSel->isAttachment()) && (hSel->getFirstNode(&f) != NULL))
+			return;
+	}
+	// [/RLVa:KB]
+
+	std::string name = "compile_queue";
+	std::string msg = "Recompile";
+	std::string title = LLTrans::getString("CompileQueueTitle");
+	LLUUID id; id.generate();
+
+	LLFloaterScriptQueue* queue = LLFloaterReg::getTypedInstance<LLFloaterScriptQueue>(name, LLSD(id));
+	if (queue)
+	{
+		queue->setMono(mono);
+		if (queue_actions(queue, msg))
+		{
+			queue->setTitle(title);
+		}
+	}
+	return;
+}
+
+void script_reset()
+{
+	// [RLVa:KB] - Checked: 2010-04-19 (RLVa-1.2.0f) | Modified: RLVa-1.0.5a
+			// We'll allow resetting the scripts of objects on a non-attachable attach point since they wouldn't be able to circumvent anything
+	if ((rlv_handler_t::isEnabled()) && (gRlvAttachmentLocks.hasLockedAttachmentPoint(RLV_LOCK_REMOVE)))
+	{
+		LLObjectSelectionHandle hSel = LLSelectMgr::getInstance()->getSelection();
+		RlvSelectHasLockedAttach f;
+		if ((hSel->isAttachment()) && (hSel->getFirstNode(&f) != NULL))
+			return;
+	}
+	// [/RLVa:KB]
+
+	bool mono = false;
+	std::string name = "reset_queue";
+	std::string msg = "Reset";
+	std::string title = LLTrans::getString("ResetQueueTitle");
+	LLUUID id; id.generate();
+
+	LLFloaterScriptQueue* queue = LLFloaterReg::getTypedInstance<LLFloaterScriptQueue>(name, LLSD(id));
+	if (queue)
+	{
+		queue->setMono(mono);
+		if (queue_actions(queue, msg))
+		{
+			queue->setTitle(title);
+		}
+	}
+	return;
+}
+
+void script_set_running(bool running)
+{
+	// [RLVa:KB] - Checked: 2010-04-19 (RLVa-1.2.0f) | Modified: RLVa-1.0.5a
+			// We'll allow resetting the scripts of objects on a non-attachable attach point since they wouldn't be able to circumvent anything
+	if ((rlv_handler_t::isEnabled()) && (gRlvAttachmentLocks.hasLockedAttachmentPoint(RLV_LOCK_REMOVE)))
+	{
+		LLObjectSelectionHandle hSel = LLSelectMgr::getInstance()->getSelection();
+		RlvSelectHasLockedAttach f;
+		if ((hSel->isAttachment()) && (hSel->getFirstNode(&f) != NULL))
+			return;
+	}
+	// [/RLVa:KB]
+
+	std::string name, msg, title;
+	if (running)
+	{
+		name = "start_queue";
+		msg = "SetRunning";
+		title = LLTrans::getString("RunQueueTitle");
+	}
+	else
+	{
+		name = "stop_queue";
+		msg = "SetRunningNot";
+		title = LLTrans::getString("NotRunQueueTitle");
+	}
+	LLUUID id; id.generate();
+
+	LLFloaterScriptQueue* queue = LLFloaterReg::getTypedInstance<LLFloaterScriptQueue>(name, LLSD(id));
+	if (queue)
+	{
+		queue->setMono(false);
+		if (queue_actions(queue, msg))
+		{
+			queue->setTitle(title);
+		}
+	}
+	return;
+}
+
 
 void initialize_edit_menu()
 {
@@ -10557,6 +10660,13 @@ void initialize_menus()
 //	//BD - God/Dev check
 	view_listener_t::addMenu(new BDCheckGodStatus(), "Dragon.EnableCheckGod");
 
+//	//BD - Tools - Scripts
+	commit.add("Tools.RecompileMono", boost::bind(&script_recompile, true));
+	commit.add("Tools.RecompileLSL", boost::bind(&script_recompile, false));
+	commit.add("Tools.ResetScripts", boost::bind(&script_reset));
+	commit.add("Tools.SetRunning", boost::bind(&script_set_running, true));
+	commit.add("Tools.SetStopped", boost::bind(&script_set_running, false));
+
 //	//BD - Functions
 	commit.add("Dragon.CameraLock", boost::bind(&handle_camera_lock));
 	commit.add("Dragon.Default", boost::bind(&BDFunctions::resetToDefault, _1));
diff --git a/indra/newview/skins/default/xui/en/floater_tools.xml b/indra/newview/skins/default/xui/en/floater_tools.xml
index 16692efcd51a715a1e2f9cf159a6e048ca54891f..ba577d112683ea2236e4ab5ef59bef2b3044179c 100644
--- a/indra/newview/skins/default/xui/en/floater_tools.xml
+++ b/indra/newview/skins/default/xui/en/floater_tools.xml
@@ -475,7 +475,7 @@
      layout="topleft"
      left_pad="1"
      name="unlink_btn"
-     width="69">
+     width="68">
 	  <button.commit_callback
 	     function="BuildTool.UnlinkObjects"/>
 	</button>
@@ -2974,7 +2974,7 @@ the light into a projected light )
              left="6"
              name="contents_inventory"
              top_pad="3"
-             width="278" />
+             width="280" />
             <button
              follows="left|top"
              height="25"
@@ -2987,7 +2987,7 @@ the light into a projected light )
              left="5"
              name="button new script"
              top_pad="5"
-             width="140" />
+             width="123" />
             <button
              follows="left|top"
              height="25"
@@ -2998,7 +2998,22 @@ the light into a projected light )
              layout="topleft"
              left_pad="1"
              name="button permissions"
-             width="139" />
+             width="124" />
+            <menu_button
+       follows="top|left"
+       menu_filename="menu_tools_scripts.xml"
+       menu_position="topright"
+       tool_tip="Show additional options"
+       height="25"
+       image_hover_unselected="Toolbar_Middle_Over"
+       image_overlay="OptionsMenu_Off"
+       image_selected="Toolbar_Middle_Selected"
+       image_unselected="Toolbar_Middle_Off"
+       layout="topleft"
+       left_pad="1"
+       name="options_gear_btn"
+       top_delta="0"
+       width="31"/>
 		</panel>
 	</tab_container>
 	<panel
diff --git a/indra/newview/skins/default/xui/en/menu_tools_scripts.xml b/indra/newview/skins/default/xui/en/menu_tools_scripts.xml
new file mode 100644
index 0000000000000000000000000000000000000000..738aac81aa873ef0b1405aee5265afaa209c2814
--- /dev/null
+++ b/indra/newview/skins/default/xui/en/menu_tools_scripts.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<toggleable_menu
+ layout="topleft"
+ name="Scripts">
+          <menu_item_call
+          label="Recompile Scripts (Mono)"
+          name="Mono">
+          <menu_item_call.on_click
+          function="Tools.RecompileMono" />
+          </menu_item_call>
+          <menu_item_call
+          label="Recompile Scripts (LSL)"
+          name="LSL">
+          <menu_item_call.on_click
+          function="Tools.RecompileLSL"/>
+          </menu_item_call>
+          <menu_item_call
+          label="Reset Scripts"
+          name="Reset Scripts">
+          <menu_item_call.on_click
+          function="Tools.ResetScripts" />
+          </menu_item_call>
+          <menu_item_call
+          label="Set Scripts to Running"
+          name="Set Scripts to Running">
+          <menu_item_call.on_click
+          function="Tools.SetRunning" />
+          </menu_item_call>
+          <menu_item_call
+          label="Set Scripts to Not Running"
+          name="Set Scripts to Not Running">
+          <menu_item_call.on_click
+          function="Tools.SetStopped" />
+          </menu_item_call>
+</toggleable_menu>
\ No newline at end of file