Index: binaries/data/mods/public/gui/session/diplomacy_window.xml
===================================================================
--- binaries/data/mods/public/gui/session/diplomacy_window.xml	(révision 17802)
+++ binaries/data/mods/public/gui/session/diplomacy_window.xml	(copie de travail)
@@ -46,31 +46,34 @@
 				<object name="diplomacyPlayerCiv[n]" size="150 0 250 100%" type="text" style="chatPanel" ghost="true"/>
 				<object name="diplomacyPlayerTeam[n]" size="250 0 300 100%" type="text" style="chatPanel" ghost="true"/>
 				<object name="diplomacyPlayerTheirs[n]" size="300 0 360 100%" type="text" style="chatPanel" ghost="true"/>
 
 				<!-- Diplomatic stance - selection -->
-				<object name="diplomacyPlayerAlly[n]" size="100%-180 0 100%-160 100%" type="button" style="StoneButton" hidden="true"/>
-				<object name="diplomacyPlayerNeutral[n]" size="100%-160 0 100%-140 100%" type="button" style="StoneButton" hidden="true"/>
-				<object name="diplomacyPlayerEnemy[n]" size="100%-140 0 100%-120 100%" type="button" style="StoneButton" hidden="true"/>
+				<object name="diplomacyPlayerAlly[n]" size="100%-200 0 100%-180 100%" type="button" style="StoneButton" hidden="true"/>
+				<object name="diplomacyPlayerNeutral[n]" size="100%-180 0 100%-160 100%" type="button" style="StoneButton" hidden="true"/>
+				<object name="diplomacyPlayerEnemy[n]" size="100%-160 0 100%-140 100%" type="button" style="StoneButton" hidden="true"/>
 
 				<!-- Tribute -->
-				<object name="diplomacyPlayerTributeFood[n]" size="100%-110 0 100%-90 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
+				<object name="diplomacyPlayerTributeFood[n]" size="100%-130 0 100%-110 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
 					<object name="diplomacyPlayerTributeFoodImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/food.png" ghost="true"/>
 				</object>
-				<object name="diplomacyPlayerTributeWood[n]" size="100%-90 0 100%-70 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
+				<object name="diplomacyPlayerTributeWood[n]" size="100%-110 0 100%-90 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
 					<object name="diplomacyPlayerTributeWoodImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/wood.png" ghost="true"/>
 				</object>
-				<object name="diplomacyPlayerTributeStone[n]" size="100%-70 0 100%-50 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
+				<object name="diplomacyPlayerTributeStone[n]" size="100%-90 0 100%-70 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
 					<object name="diplomacyPlayerTributeStoneImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/stone.png" ghost="true"/>
 				</object>
-				<object name="diplomacyPlayerTributeMetal[n]" size="100%-50 0 100%-30 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
+				<object name="diplomacyPlayerTributeMetal[n]" size="100%-70 0 100%-50 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
 					<object name="diplomacyPlayerTributeMetalImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/metal.png" ghost="true"/>
 				</object>
-
+				<object name="diplomacyPlayerTributeEntities[n]" size="100%-50 0 100%-30 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
+					<object name="diplomacyPlayerTributeEntitiesImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/resources/population.png" ghost="true"/>
+				</object>
 				<object name="diplomacyAttackRequest[n]" size="100%-20 0 100% 100%" type="button" style="iconButton" tooltip_style="sessionToolTipBold" hidden="true">
 					<object name="diplomacyAttackRequestImage[n]" type="image" size="0 0 100% 100%" sprite="stretched:session/icons/attack-request.png" ghost="true"/>
 				</object>
+
 			</object>
 		</repeat>
 	</object>
 	
 	<object name="diplomacyCeasefireCounter" size="32 100%-90 100%-32 100%-62" type="text" style="chatPanel" ghost="true"></object>
Index: binaries/data/mods/public/gui/session/menu.js
===================================================================
--- binaries/data/mods/public/gui/session/menu.js	(révision 17802)
+++ binaries/data/mods/public/gui/session/menu.js	(copie de travail)
@@ -348,19 +348,31 @@ function openDiplomacy()
 			button.enabled = controlsPlayer(g_ViewedPlayer);
 			button.hidden = false;
 			button.tooltip = formatTributeTooltip(g_Players[i], resource, 100);
 		}
 
+		//Give Entities
+		{
+		let button = Engine.GetGUIObjectByName("diplomacyPlayerTributeEntities["+(i-1)+"]");
+		button.hidden = false;
+		button.enabled = controlsPlayer(g_ViewedPlayer);
+		button.tooltip = translate("Give selected structures");
+		button.onpress = (function(i){ return function() {
+			Engine.PostNetworkCommand({ "type": "give", "to": i, "entities": g_Selection.toList() });
+			}; } )(i);
+		}
+
 		// Attack Request
+		{
 		let button = Engine.GetGUIObjectByName("diplomacyAttackRequest["+(i-1)+"]");
 		button.hidden = isCeasefireActive || !g_Players[i].isEnemy[g_ViewedPlayer];
 		button.enabled = controlsPlayer(g_ViewedPlayer);
 		button.tooltip = translate("Request your allies to attack this enemy");
 		button.onpress = (function(i) { return function() {
 			Engine.PostNetworkCommand({ "type": "attack-request", "source": g_ViewedPlayer, "target": i });
 		}; })(i);
-
+		}
 		// Skip our own teams on teams locked
 		if (g_Players[g_ViewedPlayer].teamsLocked && g_Players[g_ViewedPlayer].team != -1 && g_Players[g_ViewedPlayer].team == g_Players[i].team)
 			continue;
 
 		// Diplomacy settings
Index: binaries/data/mods/public/simulation/helpers/Commands.js
===================================================================
--- binaries/data/mods/public/simulation/helpers/Commands.js	(révision 17802)
+++ binaries/data/mods/public/simulation/helpers/Commands.js	(copie de travail)
@@ -101,10 +101,30 @@ var g_Commands = {
 	"tribute": function(player, cmd, data)
 	{
 		data.cmpPlayer.TributeResource(cmd.player, cmd.amounts);
 	},
 
+	"give" : function(player, cmd, data)
+	{
+		let cmpPlayer = QueryPlayerIDInterface(player);
+		let cmpPlayerTo = QueryPlayerIDInterface(cmd.to);
+		if (!cmpPlayer || !cmpPlayerTo)
+			return;
+		if (cmpPlayerTo.state != "active" || cmpPlayer.state != "active")
+			return;
+		for (let ent of cmd.entities)
+		{
+			let cmpCapturable = Engine.QueryInterface(ent, IID_Capturable);
+			if (!cmpCapturable)
+				return
+			let cmpOwnership = Engine.QueryInterface(ent, IID_Ownership);
+			if (!cmpOwnership || cmpOwnership.GetOwner() != player)
+				return;
+			cmpOwnership.SetOwner(cmd.to);
+		}
+	},
+
 	"control-all": function(player, cmd, data)
 	{
 		var cmpGuiInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
 		cmpGuiInterface.PushNotification({
 			"type": "aichat",
