diff --git a/indra/newview/lltoolpie.cpp b/indra/newview/lltoolpie.cpp
index 9004db09303e30805ae0bbecb9e9137e1daf1d7d..ae3fc94cd608d88720c56b46329c0b65b7fea345 100644
--- a/indra/newview/lltoolpie.cpp
+++ b/indra/newview/lltoolpie.cpp
@@ -666,8 +666,20 @@ bool LLToolPie::walkToClickedLocation()
         mPick.mPosGlobal = gAgent.getPositionGlobal() + LLVector3d(LLViewerCamera::instance().getAtAxis()) * SELF_CLICK_WALK_DISTANCE;
     }
 
-    if ((mPick.mPickType == LLPickInfo::PICK_LAND && !mPick.mPosGlobal.isExactlyZero()) ||
-        (mPick.mObjectID.notNull() && !mPick.mPosGlobal.isExactlyZero()))
+//    if ((mPick.mPickType == LLPickInfo::PICK_LAND && !mPick.mPosGlobal.isExactlyZero()) ||
+//        (mPick.mObjectID.notNull() && !mPick.mPosGlobal.isExactlyZero()))
+// [RLVa:KB] - Checked: RLVa-2.0.0
+	bool fValidPick = ((mPick.mPickType == LLPickInfo::PICK_LAND && !mPick.mPosGlobal.isExactlyZero()) ||
+		(mPick.mObjectID.notNull() && !mPick.mPosGlobal.isExactlyZero()));
+
+	if ( (fValidPick) && (RlvActions::isRlvEnabled()) && (!RlvActions::canTeleportToLocal(mPick.mPosGlobal)) )
+	{
+		RlvUtil::notifyBlocked(RlvStringKeys::Blocked::AutoPilot);
+		fValidPick = false;
+	}
+
+	if (fValidPick)
+// [/RLVa:KB]
     {
         gAgentCamera.setFocusOnAvatar(TRUE, TRUE);
 
diff --git a/indra/newview/llviewerinput.cpp b/indra/newview/llviewerinput.cpp
index c0eaa88f543a7e6d8660e237ddd890f6378057c8..760d3dd7e0a11f7f797c10f7f73af61dccc6813c 100644
--- a/indra/newview/llviewerinput.cpp
+++ b/indra/newview/llviewerinput.cpp
@@ -104,14 +104,18 @@ bool agent_push_down( EKeystate s )
 
 static void agent_check_temporary_run(LLAgent::EDoubleTapRunMode mode)
 {
-	if (gAgent.mDoubleTapRunMode == mode &&
-		gAgent.getRunning() &&
-		!gAgent.getAlwaysRun())
-	{
-		// Turn off temporary running.
-		gAgent.clearRunning();
-		gAgent.sendWalkRun(gAgent.getRunning());
-	}
+// [RLVa:KB] - Checked: 2011-05-11 (RLVa-1.3.0i) | Added: RLVa-1.3.0i
+	if ( (gAgent.mDoubleTapRunMode == mode) && (gAgent.getTempRun()) )
+		gAgent.clearTempRun();
+// [/RLVa:KB]
+//	if (gAgent.mDoubleTapRunMode == mode &&
+//		gAgent.getRunning() &&
+//		!gAgent.getAlwaysRun())
+//	{
+//		// Turn off temporary running.
+//		gAgent.clearRunning();
+//		gAgent.sendWalkRun(gAgent.getRunning());
+//	}
 }
 
 static void agent_handle_doubletap_run(EKeystate s, LLAgent::EDoubleTapRunMode mode)
@@ -131,8 +135,11 @@ static void agent_handle_doubletap_run(EKeystate s, LLAgent::EDoubleTapRunMode m
 		{
 			// Same walk-key was pushed again quickly; this is a
 			// double-tap so engage temporary running.
-			gAgent.setRunning();
-			gAgent.sendWalkRun(gAgent.getRunning());
+//			gAgent.setRunning();
+//			gAgent.sendWalkRun(gAgent.getRunning());
+// [RLVa:KB] - Checked: 2011-05-11 (RLVa-1.3.0i) | Added: RLVa-1.3.0i
+			gAgent.setTempRun();
+// [/RLVa:KB]
 		}
 
 		// Pressing any walk-key resets the double-tap timer
@@ -662,16 +669,22 @@ bool run_forward(EKeystate s)
         }
         if (!gAgent.getRunning())
         {
-            gAgent.setRunning();
-            gAgent.sendWalkRun(true);
+// [RLVa:KB] - @temprun
+			gAgent.setTempRun();
+// [/RLVa:KB]
+//            gAgent.setRunning();
+//            gAgent.sendWalkRun(true);
         }
     }
     else if(KEYSTATE_UP == s)
     {
         if (gAgent.mDoubleTapRunMode == LLAgent::DOUBLETAP_FORWARD)
             gAgent.mDoubleTapRunMode = LLAgent::DOUBLETAP_NONE;
-        gAgent.clearRunning();
-        gAgent.sendWalkRun(false);
+// [RLVa:KB] - @temprun
+		gAgent.clearTempRun();
+// [/RLVa:KB]
+//        gAgent.clearRunning();
+//        gAgent.sendWalkRun(false);
     }
     agent_push_forward(s);
     return true;
@@ -687,16 +700,22 @@ bool run_backward(EKeystate s)
         }
         if (!gAgent.getRunning())
         {
-            gAgent.setRunning();
-            gAgent.sendWalkRun(true);
+// [RLVa:KB] - @temprun
+			gAgent.setTempRun();
+// [/RLVa:KB]
+//            gAgent.setRunning();
+//            gAgent.sendWalkRun(true);
         }
     }
     else if (KEYSTATE_UP == s)
     {
         if (gAgent.mDoubleTapRunMode == LLAgent::DOUBLETAP_BACKWARD)
             gAgent.mDoubleTapRunMode = LLAgent::DOUBLETAP_NONE;
-        gAgent.clearRunning();
-        gAgent.sendWalkRun(false);
+// [RLVa:KB] - @temprun
+		gAgent.clearTempRun();
+// [/RLVa:KB]
+//        gAgent.clearRunning();
+//        gAgent.sendWalkRun(false);
     }
     agent_push_backward(s);
     return true;
@@ -712,16 +731,22 @@ bool run_left(EKeystate s)
         }
         if (!gAgent.getRunning())
         {
-            gAgent.setRunning();
-            gAgent.sendWalkRun(true);
+// [RLVa:KB] - @temprun
+			gAgent.setTempRun();
+// [/RLVa:KB]
+//            gAgent.setRunning();
+//            gAgent.sendWalkRun(true);
         }
     }
     else if (KEYSTATE_UP == s)
     {
         if (gAgent.mDoubleTapRunMode == LLAgent::DOUBLETAP_SLIDELEFT)
             gAgent.mDoubleTapRunMode = LLAgent::DOUBLETAP_NONE;
-        gAgent.clearRunning();
-        gAgent.sendWalkRun(false);
+// [RLVa:KB] - @temprun
+		gAgent.clearTempRun();
+// [/RLVa:KB]
+//        gAgent.clearRunning();
+//        gAgent.sendWalkRun(false);
     }
     agent_slide_left(s);
     return true;
@@ -737,16 +762,22 @@ bool run_right(EKeystate s)
         }
         if (!gAgent.getRunning())
         {
-            gAgent.setRunning();
-            gAgent.sendWalkRun(true);
+// [RLVa:KB] - @temprun
+			gAgent.setTempRun();
+// [/RLVa:KB]
+//            gAgent.setRunning();
+//            gAgent.sendWalkRun(true);
         }
     }
     else if (KEYSTATE_UP == s)
     {
         if (gAgent.mDoubleTapRunMode == LLAgent::DOUBLETAP_SLIDERIGHT)
             gAgent.mDoubleTapRunMode = LLAgent::DOUBLETAP_NONE;
-        gAgent.clearRunning();
-        gAgent.sendWalkRun(false);
+// [RLVa:KB] - @temprun
+		gAgent.clearTempRun();
+// [/RLVa:KB]
+//        gAgent.clearRunning();
+//        gAgent.sendWalkRun(false);
     }
     agent_slide_right(s);
     return true;
@@ -758,15 +789,21 @@ bool toggle_run(EKeystate s)
     bool run = gAgent.getAlwaysRun();
     if (run)
     {
-        gAgent.clearAlwaysRun();
-        gAgent.clearRunning();
+// [RLVa:KB] - @alwaysrun
+		gAgent.clearAlwaysRun();
+// [/RLVa:KB]
+//        gAgent.clearAlwaysRun();
+//        gAgent.clearRunning();
     }
     else
     {
-        gAgent.setAlwaysRun();
-        gAgent.setRunning();
+// [RLVa:KB] - @alwaysrun
+		gAgent.setAlwaysRun();
+// [/RLVa:KB]
+//        gAgent.setAlwaysRun();
+//        gAgent.setRunning();
     }
-    gAgent.sendWalkRun(!run);
+//    gAgent.sendWalkRun(!run);
 	return true;
 }