From 387bf672f3b96c77d4f3857394550a03ab8cf26a Mon Sep 17 00:00:00 2001
From: Martin Reddy <lynx@lindenlab.com>
Date: Wed, 16 Sep 2009 12:59:13 +0000
Subject: [PATCH] DEV-31898: merging the fix for this bug into viewer-2.0.0-3
 so that it will be available in our next public release. The server part of
 the fix missed 1.30, but should (hopefully) get into 1.32.

Original fix was reviewed by soft and kelly.
---
 indra/llcommon/indra_constants.h               | 1 +
 indra/llcommon/lllslconstants.h                | 1 +
 indra/lscript/lscript_compile/indra.l          | 1 +
 indra/newview/app_settings/keywords.ini        | 1 +
 indra/newview/llviewermessage.cpp              | 4 ++++
 indra/newview/skins/default/xui/en/strings.xml | 2 +-
 6 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/indra/llcommon/indra_constants.h b/indra/llcommon/indra_constants.h
index c0b0d72d9bd..4836d41fb31 100644
--- a/indra/llcommon/indra_constants.h
+++ b/indra/llcommon/indra_constants.h
@@ -286,6 +286,7 @@ const U8 UPD_UNIFORM 		= 0x10;	// used with UPD_SCALE
 // Agent Update Flags (U8)
 const U8 AU_FLAGS_NONE      		= 0x00;
 const U8 AU_FLAGS_HIDETITLE      	= 0x01;
+const U8 AU_FLAGS_CLIENT_AUTOPILOT	= 0x02;
 
 // start location constants
 const U32 START_LOCATION_ID_LAST 		= 0;
diff --git a/indra/llcommon/lllslconstants.h b/indra/llcommon/lllslconstants.h
index 7cd854febd0..a626e3f0855 100644
--- a/indra/llcommon/lllslconstants.h
+++ b/indra/llcommon/lllslconstants.h
@@ -48,6 +48,7 @@ const U32 AGENT_TYPING		= 0x0200;
 const U32 AGENT_CROUCHING	= 0x0400;
 const U32 AGENT_BUSY		= 0x0800;
 const U32 AGENT_ALWAYS_RUN	= 0x1000;
+const U32 AGENT_AUTOPILOT	= 0x2000;
 
 const S32 LSL_REMOTE_DATA_CHANNEL		= 1;
 const S32 LSL_REMOTE_DATA_REQUEST		= 2;
diff --git a/indra/lscript/lscript_compile/indra.l b/indra/lscript/lscript_compile/indra.l
index ac524326fcd..9cc2841e8c9 100644
--- a/indra/lscript/lscript_compile/indra.l
+++ b/indra/lscript/lscript_compile/indra.l
@@ -150,6 +150,7 @@ extern "C" { int yyerror(const char *fmt, ...); }
 "AGENT_CROUCHING"		{ count(); yylval.ival = AGENT_CROUCHING; return(INTEGER_CONSTANT); }
 "AGENT_BUSY"			{ count(); yylval.ival = AGENT_BUSY; return(INTEGER_CONSTANT); }
 "AGENT_ALWAYS_RUN"		{ count(); yylval.ival = AGENT_ALWAYS_RUN; return(INTEGER_CONSTANT); }
+"AGENT_AUTOPILOT"		{ count(); yylval.ival = AGENT_AUTOPILOT; return(INTEGER_CONSTANT); }
 
 "CAMERA_PITCH"				{ count(); yylval.ival = FOLLOWCAM_PITCH; return(INTEGER_CONSTANT); }
 "CAMERA_FOCUS_OFFSET"		{ count(); yylval.ival = FOLLOWCAM_FOCUS_OFFSET; return (INTEGER_CONSTANT); }
diff --git a/indra/newview/app_settings/keywords.ini b/indra/newview/app_settings/keywords.ini
index cd7b533e7a7..eaf5213985d 100644
--- a/indra/newview/app_settings/keywords.ini
+++ b/indra/newview/app_settings/keywords.ini
@@ -108,6 +108,7 @@ AGENT_TYPING		Returned by llGetAgentInfo if the Agent is typing
 AGENT_CROUCHING		Returned by llGetAgentInfo if the Agent is crouching
 AGENT_BUSY			Returned by llGetAgentInfo if the Agent is busy
 AGENT_ALWAYS_RUN	Returned by llGetAgentInfo if the Agent has 'Always Run' enabled
+AGENT_AUTOPILOT		Returned by llGetAgentInfo if the Agent is under autopilot control
 
 PSYS_PART_FLAGS
 PSYS_PART_START_COLOR
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 177c987bc09..7e2183f1f39 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -3111,6 +3111,10 @@ void send_agent_update(BOOL force_send, BOOL send_reliable)
 	{
 		flags |= AU_FLAGS_HIDETITLE;
 	}
+	if (gAgent.getAutoPilot())
+	{
+		flags |= AU_FLAGS_CLIENT_AUTOPILOT;
+	}
 
 	flag_change = last_flags ^ flags;
 
diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml
index 4206b87c2b3..530c3816c83 100644
--- a/indra/newview/skins/default/xui/en/strings.xml
+++ b/indra/newview/skins/default/xui/en/strings.xml
@@ -1137,7 +1137,7 @@ Checks to see whether the border hit by dir from pos is the edge of the world (h
 	<string name="LSLTipText_llGetAgentInfo">
 integer llGetAgentInfo(key id)
 Gets information about agent ID.
-Returns AGENT_FLYING, AGENT_ATTACHMENTS, AGENT_SCRIPTED, AGENT_SITTING, AGENT_ON_OBJECT, AGENT_MOUSELOOK, AGENT_AWAY, AGENT_BUSY, AGENT_TYPING, AGENT_CROUCHING, AGENT_ALWAYS_RUN, AGENT_WALKING and/or AGENT_IN_AIR.
+Returns AGENT_FLYING, AGENT_ATTACHMENTS, AGENT_SCRIPTED, AGENT_SITTING, AGENT_ON_OBJECT, AGENT_MOUSELOOK, AGENT_AWAY, AGENT_BUSY, AGENT_TYPING, AGENT_CROUCHING, AGENT_ALWAYS_RUN, AGENT_WALKING, AGENT_IN_AIR and/or AGENT_AUTOPILOT.
 	</string>
 	<string name="LSLTipText_llAdjustSoundVolume">
 llAdjustSoundVolume(float volume)
-- 
GitLab