Index: src/cheat.c
===================================================================
--- src/cheat.c	(revision 3551)
+++ src/cheat.c	(working copy)
@@ -69,6 +69,7 @@
 	{"tileinfo", kf_TileInfo}, // output debug info about a tile
 	{"showfps", kf_ToggleFPS},	//displays your average FPS
 	{"showsamples", kf_ToggleSamples}, //displays the # of Sound samples in Queue & List
+	{"showorders", kf_ToggleOrders}, //displays unit order/action state.
 	{"end of list",NULL}
 };
 
Index: src/display.c
===================================================================
--- src/display.c	(revision 3551)
+++ src/display.c	(working copy)
@@ -81,7 +81,9 @@
 
 #define POSSIBLE_SELECTIONS		13
 #define POSSIBLE_TARGETS		23
-
+extern char DROIDDOING[512];
+extern const char *DROID_ACTION_NAME[];
+extern const char *DROID_ORDER_NAME[];
 UDWORD	arnMPointers[POSSIBLE_TARGETS][POSSIBLE_SELECTIONS] =
 {
 // empty terrain tile
@@ -1677,6 +1679,7 @@
 {
 	if(psDroid->player != selectedPlayer)
 	{
+		memset(DROIDDOING, 0x0 , sizeof(DROIDDOING)); // take over the other players droid by debug menu.
 		/* We've clicked on somebody else's droid */
 //		addConsoleMessage("Clicked on another player's droid",DEFAULT_JUSTIFY);
 		orderSelectedObjAdd(selectedPlayer, (BASE_OBJECT*)psDroid, ctrlShiftDown());
@@ -1794,10 +1797,10 @@
 		if (getDebugMappingStatus()) // cheating on, so output debug info
 		{
 			CONPRINTF(ConsoleString, (ConsoleString,
-			          "%s - Damage %d%% - ID %d - experience %f, %s - order %d - action %d - sensor range %hu power %hu - ECM %u",
+			          "%s - Damage %d%% - ID %d - experience %f, %s - order %d [%s] - action %d [%s] - sensor range %hu power %hu - ECM %u",
 			          droidGetName(psDroid), 100 - PERCENT(psDroid->body, psDroid->originalBody), psDroid->id,
-			          psDroid->experience, getDroidLevelName(psDroid), psDroid->order, psDroid->action, psDroid->sensorRange,
-			          psDroid->sensorPower, psDroid->ECMMod));
+			          psDroid->experience, getDroidLevelName(psDroid), psDroid->order,DROID_ORDER_NAME[psDroid->order], psDroid->action,
+					  DROID_ACTION_NAME[psDroid->action], psDroid->sensorRange,psDroid->sensorPower, psDroid->ECMMod));
 			FeedbackClickedOn();
 		}
 		else
@@ -2561,6 +2564,7 @@
 			{
 				clearSelection();
 				intObjectSelected(NULL);
+				memset(DROIDDOING, 0x0 , sizeof(DROIDDOING));
 			}
 		}
 	}
Index: src/display3d.c
===================================================================
--- src/display3d.c	(revision 3551)
+++ src/display3d.c	(working copy)
@@ -212,8 +212,9 @@
 
 bool showFPS = false;       // default OFF, turn ON via console command 'showfps'
 bool showSAMPLES = false;   // default OFF, turn ON via console command 'showsamples'
+bool showORDERS = false;	// default OFF, turn ON via console command 'showorders'
 UDWORD geoOffset;
-
+char DROIDDOING[512];		// tells us what droid is doing.
 static int averageCentreTerrainHeight;
 
 static UDWORD	lastTargetAssignation = 0;
@@ -374,6 +375,13 @@
 
 		iV_DrawText(fps, pie_GetVideoBufferWidth() - width, pie_GetVideoBufferHeight() - height);
 	}
+	if (showORDERS)
+	{ // Not sure best placement for this text.
+		unsigned int width, height;				//unused for now.
+		width = iV_GetTextWidth(DROIDDOING);
+		height = iV_GetTextHeight(DROIDDOING);
+		iV_DrawText(DROIDDOING, 0, pie_GetVideoBufferHeight() );
+	}
 	if(getDebugMappingStatus() && !demoGetStatus() && !gamePaused())
 	{
 		iV_DrawText( "DEBUG ", RET_X + 134, 440 + E_H );
Index: src/display3d.h
===================================================================
--- src/display3d.h	(revision 3551)
+++ src/display3d.h	(working copy)
@@ -43,6 +43,7 @@
 
 extern bool showFPS;
 extern bool showSAMPLES;
+extern bool showORDERS;
 
 extern void	setViewAngle(SDWORD angle);
 extern UDWORD getViewDistance(void);
Index: src/keybind.c
===================================================================
--- src/keybind.c	(revision 3551)
+++ src/keybind.c	(working copy)
@@ -378,6 +378,13 @@
 
 	CONPRINTF(ConsoleString, (ConsoleString, "Sound Samples displayed is %s", showSAMPLES ? "Enabled" : "Disabled"));
 }
+void kf_ToggleOrders(void) //Displays orders & action of currently selected unit.
+{
+	// Toggle the boolean value of showFPS
+	showORDERS = !showORDERS;
+
+	CONPRINTF(ConsoleString, (ConsoleString, "Unit Order/Action displayed is %s", showORDERS ? "Enabled" : "Disabled"));
+}
 /* Writes out the frame rate */
 void	kf_FrameRate( void )
 {
Index: src/keybind.h
===================================================================
--- src/keybind.h	(revision 3551)
+++ src/keybind.h	(working copy)
@@ -26,6 +26,7 @@
 extern void	kf_BuildInfo( void );
 extern void	kf_ToggleFPS(void);		//FPS counter NOT same as kf_Framerate! -Q
 extern void kf_ToggleSamples(void);	//displays # of sound samples in Q/list.
+extern void kf_ToggleOrders(void);	//displays unit's Order/action state.
 extern void	kf_FrameRate( void );
 extern void	kf_ShowNumObjects( void );
 extern void	kf_ToggleRadar( void );
Index: src/order.c
===================================================================
--- src/order.c	(revision 3551)
+++ src/order.c	(working copy)
@@ -104,7 +104,103 @@
 static BOOL bOrderEffectDisplayed = FALSE;
 
 //////////////////////////////////////////////////////////////////
+extern char DROIDDOING[512];
 
+//===================================
+const char *DROID_ORDER_NAME [] =
+{
+	"DORDER_NONE",				// no order set
+	"DORDER_STOP",				// stop the current order
+	"DORDER_MOVE",				// 2 - move to a location
+	"DORDER_ATTACK",				// attack an enemy
+	"DORDER_BUILD",				// 4 - build a structure
+	"DORDER_HELPBUILD",			// help to build a structure
+	"DORDER_LINEBUILD",			// 6 - build a number of structures in a row (walls + bridges)
+	"DORDER_DEMOLISH",			// demolish a structure
+	"DORDER_REPAIR",				// 8 - repair a structure
+	"DORDER_OBSERVE",				// keep a target in sensor view
+	"DORDER_FIRESUPPORT",			// 10 - attack whatever the linked sensor droid attacks
+	"DORDER_RETREAT",				// return to the players retreat position
+	"DORDER_DESTRUCT",			// 12 - self destruct
+	"DORDER_RTB",					// return to base
+	"DORDER_RTR",					// 14 - return to repair at any repair facility
+	"DORDER_RUN",					// run away after moral failure
+	"DORDER_EMBARK",				// 16 - board a transporter
+	"DORDER_DISEMBARK",			// get off a transporter
+	"DORDER_ATTACKTARGET",		// 18 - a suggestion to attack something
+								// i.e. the target was chosen because the droid could see it
+	"DORDER_COMMAND",				// a command droid issuing orders to it's group
+	"DORDER_BUILDMODULE",			// 20 - build a module (power, research or factory)
+	"DORDER_RECYCLE",				// return to factory to be recycled
+	"DORDER_TRANSPORTOUT",		// 22 - offworld transporter order
+	"DORDER_TRANSPORTIN",			// onworld transporter order
+	"DORDER_TRANSPORTRETURN",		// 24 - transporter return after unloading
+	"DORDER_GUARD",				// guard a structure
+	"DORDER_DROIDREPAIR",			// 26 - repair a droid
+	"DORDER_RESTORE",				// restore resistance points for a structure
+	"DORDER_SCOUT",				// 28 - same as move, but stop if an enemy is seen
+	"DORDER_RUNBURN",				// run away on fire
+	"DORDER_CLEARWRECK",			// 30 - constructor droid to clear up building wreckage
+	"DORDER_PATROL",				// move between two way points
+	"DORDER_REARM",				// 32 - order a vtol to rearming pad
+	"DORDER_MOVE_ATTACKWALL",		// move to a location taking out a blocking wall on the way
+	"DORDER_SCOUT_ATTACKWALL",	// 34 - scout to a location taking out a blocking wall on the way
+	"DORDER_RECOVER",				// pick up an artifact
+	"DORDER_LEAVEMAP",			// 36 - vtol flying off the map
+	"DORDER_RTR_SPECIFIED",		// return to repair at a specified repair center
+	"DORDER_UNDEFINED",
+	"DORDER_UNDEFINED2",
+	"DORDER_CIRCLE"				// circles target location and engage
+};
+//---------------
+const char *DROID_ACTION_NAME[] =
+{
+	"DACTION_NONE",					// not doing anything
+	"DACTION_MOVE",					// 1 moving to a location
+	"DACTION_BUILD",					// building a structure
+	"DACTION_BUILD_FOUNDATION",		// 3 building a foundation for a structure
+	"DACTION_DEMOLISH",				// demolishing a structure
+	"DACTION_REPAIR",					// 5 repairing a structure
+	"DACTION_ATTACK",					// attacking something
+	"DACTION_OBSERVE",				// 7 observing something
+	"DACTION_FIRESUPPORT",			// attacking something visible by a sensor droid
+	"DACTION_SULK",					// 9 refuse to do anything aggresive for a fixed time
+	"DACTION_DESTRUCT",				// self destruct
+	"DACTION_TRANSPORTOUT",			// 11 move transporter offworld
+	"DACTION_TRANSPORTWAITTOFLYIN",	// wait for timer to move reinforcements in
+	"DACTION_TRANSPORTIN",			// 13 move transporter onworld
+	"DACTION_DROIDREPAIR",			// repairing a droid
+	"DACTION_RESTORE",				// 15 restore resistance points of a structure
+	"DACTION_CLEARWRECK",				// clearing building wreckage
+	"DACTION_MOVEFIRE",				// 17
+	"DACTION_MOVETOBUILD",			// moving to a new building location
+	"DACTION_MOVETODEMOLISH",			// 19 moving to a new demolition location
+	"DACTION_MOVETOREPAIR",			// moving to a new repair location
+	"DACTION_BUILDWANDER",			// 21 moving around while building
+	"DACTION_FOUNDATION_WANDER",		// moving around while building the foundation
+	"DACTION_MOVETOATTACK",			// 23 moving to a target to attack
+	"DACTION_ROTATETOATTACK",			// rotating to a target to attack
+	"DACTION_MOVETOOBSERVE",			// 25 moving to be able to see a target
+	"DACTION_WAITFORREPAIR",			// waiting to be repaired by a facility
+	"DACTION_MOVETOREPAIRPOINT",		// 27 move to repair facility repair point
+	"DACTION_WAITDURINGREPAIR",		// waiting to be repaired by a facility
+	"DACTION_MOVETODROIDREPAIR",		// 29 moving to a new location next to droid to be repaired
+	"DACTION_MOVETORESTORE",			// moving to a low resistance structure
+	"DACTION_MOVETOCLEAR",			// 31 moving to a building wreck location
+	"DACTION_MOVETOREARM",			// (32)moving to a rearming pad - VTOLS
+	"DACTION_WAITFORREARM",			// (33)waiting for rearm - VTOLS
+	"DACTION_MOVETOREARMPOINT",		// (34)move to rearm point - VTOLS - this actually moves them onto the pad
+	"DACTION_WAITDURINGREARM",		// (35)waiting during rearm process- VTOLS
+	"DACTION_VTOLATTACK",				// (36) a VTOL droid doing attack runs
+	"DACTION_CLEARREARMPAD",			// (37) a VTOL droid being told to get off a rearm pad
+	"DACTION_RETURNTOPOS",			// (38) used by scout/patrol order when returning to route
+	"DACTION_FIRESUPPORT_RETREAT",	// (39) used by firesupport order when sensor retreats
+	"ACTION UNKNOWN",
+	"DACTION_CIRCLE"				// (41) circling while engaging
+};
+
+
+//===================================
 //////////////////////////////////////////////////////////////////
 
 //call this *AFTER* every mission so it gets reset
@@ -1241,6 +1337,12 @@
 		psDroid->order = DORDER_REARM;
 		setDroidTarget(psDroid, psDroid->psActionTarget[0]);
 	}
+
+	if(psDroid->selected)
+	{	// Tell us what the droid is doing.
+		sprintf(DROIDDOING,"%.12s, order(%d):%s action(%d):%s",droidGetName(psDroid),psDroid->order,
+		 DROID_ORDER_NAME[psDroid->order],psDroid->action,DROID_ACTION_NAME[psDroid->action]);
+	}
 }
 
 
