Index: Commands.js
===================================================================
--- Commands.js	(revision 11361)
+++ Commands.js	(working copy)
@@ -121,9 +121,22 @@
 		// Verify that the building can be controlled by the player
 		if (CanControlUnit(cmd.entity, player, controlAllUnits))
 		{
-			var queue = Engine.QueryInterface(cmd.entity, IID_TrainingQueue);
-			if (queue)
-				queue.AddBatch(cmd.template, +cmd.count, cmd.metadata);
+			if (cmd.entities == undefined)
+			{
+				var queue = Engine.QueryInterface(cmd.entity, IID_TrainingQueue);
+				if (queue)
+					queue.AddBatch(cmd.template, +cmd.count, cmd.metadata);
+			}
+			else
+			{
+				for each (var ent in cmd.entities)
+				{
+					var queue = Engine.QueryInterface(ent, IID_TrainingQueue);
+					//check if queue exists and also check if building can train the unit. We don't want barracks train ships.
+					if ((queue)&&(queue.GetEntitiesList().indexOf(cmd.template) !== -1))
+						queue.AddBatch(cmd.template, +cmd.count, cmd.metadata);
+				}
+			}
 		}
 		else if (g_DebugCommands)
 		{
@@ -409,16 +422,19 @@
 		{
 			var cmpUnitAI = Engine.QueryInterface(ent, IID_UnitAI);
 			if (cmpUnitAI)
-				cmpUnitAI.SetupTradeRoute(cmd.target);
+				cmpUnitAI.SetupTradeRoute(cmd.target, undefined);
 		}
 		break;
 
 	case "select-trading-goods":
-		var cmpTrader = Engine.QueryInterface(cmd.trader, IID_Trader);
-		if (cmpTrader)
-			cmpTrader.SetPreferredGoods(cmd.preferredGoods);
+		for each (var ent in cmd.entities)
+		{
+			var cmpTrader = Engine.QueryInterface(ent, IID_Trader);
+			if (cmpTrader)
+				cmpTrader.SetPreferredGoods(cmd.preferredGoods);
+		}
 		break;
-
+		
 	case "barter":
 		var cmpBarter = Engine.QueryInterface(SYSTEM_ENTITY, IID_Barter);
 		cmpBarter.ExchangeResources(playerEnt, cmd.sell, cmd.buy, cmd.amount);
