Index: binaries/data/mods/public/gui/session/input.js
===================================================================
--- binaries/data/mods/public/gui/session/input.js	(revision 13813)
+++ binaries/data/mods/public/gui/session/input.js	(working copy)
@@ -1615,7 +1615,7 @@
 	var entLimit = undefined;
 	var entCount = undefined;
 	var canBeAddedCount = undefined;
-	if (entCategory && playerState.entityLimits[entCategory])
+	if (entCategory && playerState.entityLimits[entCategory] != null)
 	{
 		entLimit = playerState.entityLimits[entCategory];
 		entCount = playerState.entityCounts[entCategory];
Index: binaries/data/mods/public/simulation/components/BuildRestrictions.js
===================================================================
--- binaries/data/mods/public/simulation/components/BuildRestrictions.js	(revision 13813)
+++ binaries/data/mods/public/simulation/components/BuildRestrictions.js	(working copy)
@@ -54,6 +54,7 @@
 			"<value>Apadana</value>" +
 			"<value>Embassy</value>" +
 			"<value>Monument</value>" +
+			"<value>Pillar</value>" +
 		"</choice>" +
 	"</element>" +
 	"<optional>" +
Index: binaries/data/mods/public/simulation/components/EntityLimits.js
===================================================================
--- binaries/data/mods/public/simulation/components/EntityLimits.js	(revision 13813)
+++ binaries/data/mods/public/simulation/components/EntityLimits.js	(working copy)
@@ -23,12 +23,7 @@
 		"<zeroOrMore>" +
 			"<element a:help='Specifies a category of building/unit on which to apply this limit. See BuildRestrictions/TrainingRestrictions for list of categories.'>" +
 				"<anyName />" +
-				"<choice>" +
-					"<text />" +
-					"<element name='LimitPerCivCentre' a:help='Specifies that this limit is per number of civil centres.'>" +
-						"<data type='nonNegativeInteger'/>" +
-					"</element>" +
-				"</choice>" +
+				"<data type='integer'/>" +
 			"</element>" +
 		"</zeroOrMore>" +
 	"</element>";
@@ -46,11 +41,26 @@
 	this.count = {};
 	for (var category in this.template.Limits)
 	{
-		this.limit[category] = this.template.Limits[category];
+		this.limit[category] = +this.template.Limits[category];
 		this.count[category] = 0;
 	}
 };
 
+EntityLimits.prototype.IncreaseLimit = function(category, value)
+{
+	if (!this.limit[category])
+		this.limit[category] = 0;
+	this.limit[category] += value;
+};
+
+EntityLimits.prototype.DecreaseLimit = function(category, value)
+{
+	if (!this.limit[category])
+		this.limit[category] = 0;
+	this.limit[category] -= value;
+
+};
+
 EntityLimits.prototype.IncreaseCount = function(category, value)
 {
 	if (this.count[category] !== undefined)
@@ -92,25 +102,8 @@
 	if (this.count[category] === undefined || this.limit[category] === undefined)
 		return true;
 	
-	// Rather than complicating the schema unecessarily, just handle special cases here
-	if (this.limit[category].LimitPerCivCentre !== undefined)
+	if (this.count[category] + count > this.limit[category])
 	{
-		if (this.count[category] >= this.count["CivilCentre"] * this.limit[category].LimitPerCivCentre)
-		{
-			var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player);
-			var notification = {
-				"player": cmpPlayer.GetPlayerID(),
-				"message": category + " " + limitType + " limit of " +
-					this.limit[category].LimitPerCivCentre + " per civil centre reached"
-			};
-			var cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);
-			cmpGUIInterface.PushNotification(notification);
-			
-			return false;
-		}
-	}
-	else if (this.count[category] + count > this.limit[category])
-	{
 		var cmpPlayer = Engine.QueryInterface(this.entity, IID_Player);
 		var notification = {
 			"player": cmpPlayer.GetPlayerID(),
Index: binaries/data/mods/public/simulation/components/EntityLimitsChanger.js
===================================================================
--- binaries/data/mods/public/simulation/components/EntityLimitsChanger.js	(revision 0)
+++ binaries/data/mods/public/simulation/components/EntityLimitsChanger.js	(working copy)
@@ -0,0 +1,58 @@
+function EntityLimitsChanger() {}
+
+EntityLimitsChanger.prototype.Schema =
+	"<oneOrMore>" +
+		"<element a:help='Take as name the name of the category, and as value the number you want to increase the limit with.'>" +
+			"<anyName/>" +
+			"<data type='integer'/>" +
+		"</element>" +
+	"</oneOrMore>";
+
+EntityLimitsChanger.prototype.init = function()
+{
+};
+
+EntityLimitsChanger.prototype.OnOwnershipChanged = function(msg)
+{
+	if (!this.changes)
+	{
+		this.changes = {};
+		for (var cat in this.template)
+			this.changes[cat] = ApplyTechModificationsToEntity("EntityLimitsChanger/Value", +this.template[cat], this.entity);
+	}
+
+	if (msg.from > -1)
+	{
+		var cmpEntityLimits = QueryPlayerIDInterface(msg.from, IID_EntityLimits);
+		if (cmpEntityLimits)
+			for (var cat in this.changes)
+				cmpEntityLimits.DecreaseLimit(cat, this.changes[cat]);
+	}
+
+	if (msg.to > -1)
+	{
+		var cmpEntityLimits = QueryPlayerIDInterface(msg.to, IID_EntityLimits);
+		if (cmpEntityLimits)
+			for (var cat in this.changes)
+				cmpEntityLimits.IncreaseLimit(cat, this.changes[cat]);
+	}
+}
+
+EntityLimitsChanger.prototype.OnTechnologyModification = function(msg)
+{
+	if (msg.component != "EntityLimitsChanger")
+		return;
+
+	var cmpEntityLimits = Engine.QueryOwnerInterface(this.entity, IID_EntityLimits);
+	if (!cmpEntityLimits)
+		return;
+
+	for (var cat in this.changes)
+	{
+		cmpEntityLimits.DecreaseLimit(cat, this.changes[cat]);
+		this.changes[cat] = ApplyTechModificationsToEntity("EntityLimitsChanger/Value", +this.template[cat], this.entity);
+		cmpEntityLimits.IncreaseLimit(cat, this.changes[cat]);
+	}
+};
+
+Engine.RegisterComponentType(IID_EntityLimitsChanger, "EntityLimitsChanger", EntityLimitsChanger);
Index: binaries/data/mods/public/simulation/components/TrainingRestrictions.js
===================================================================
--- binaries/data/mods/public/simulation/components/TrainingRestrictions.js	(revision 13813)
+++ binaries/data/mods/public/simulation/components/TrainingRestrictions.js	(working copy)
@@ -11,6 +11,7 @@
 		"<choice>" +
 			"<value>Hero</value>" +
 			"<value>FemaleCitizen</value>" +
+			"<value>WarDog</value>" +
 		"</choice>" +
 	"</element>";
 
Index: binaries/data/mods/public/simulation/components/interfaces/EntityLimitsChanger.js
===================================================================
--- binaries/data/mods/public/simulation/components/interfaces/EntityLimitsChanger.js	(revision 0)
+++ binaries/data/mods/public/simulation/components/interfaces/EntityLimitsChanger.js	(working copy)
@@ -0,0 +1 @@
+Engine.RegisterInterface("EntityLimitsChanger");
Index: binaries/data/mods/public/simulation/templates/special/player.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/special/player.xml	(revision 13813)
+++ binaries/data/mods/public/simulation/templates/special/player.xml	(working copy)
@@ -3,7 +3,6 @@
   <EntityLimits>
     <LimitMultiplier>1.0</LimitMultiplier>
     <Limits>
-      <CivilCentre/>
       <DefenseTower>25</DefenseTower>
       <Fortress>10</Fortress>
       <Wonder>1</Wonder>
@@ -11,6 +10,8 @@
       <Apadana>1</Apadana>
       <Embassy>2</Embassy>
       <Monument>5</Monument>
+      <Pillar>0</Pillar>
+      <WarDog>0</WarDog>
     </Limits>
   </EntityLimits>
   <Player/>
Index: binaries/data/mods/public/simulation/templates/structures/brit_kennel.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/structures/brit_kennel.xml	(revision 13813)
+++ binaries/data/mods/public/simulation/templates/structures/brit_kennel.xml	(working copy)
@@ -18,6 +18,9 @@
       <stone>50</stone>
     </Resources>
   </Cost>
+  <EntityLimitsChanger>
+    <WarDog>10</WarDog>
+  </EntityLimitsChanger>
   <Footprint>
     <Square width="8.0" depth="7.0"/>
     <Height>5.0</Height>
@@ -31,7 +34,7 @@
     <Civ>brit</Civ>
     <GenericName>Special Building</GenericName>
     <SpecificName>Kennel</SpecificName>
-    <Tooltip>Train Celtic war dogs.</Tooltip>
+    <Tooltip>Train Celtic war dogs. One kennel can only house 10 dogs.</Tooltip>
     <Icon>structures/kennel.png</Icon>
     <RequiredTechnology>phase_town</RequiredTechnology>
   </Identity>
Index: binaries/data/mods/public/simulation/templates/structures/celt_kennel.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/structures/celt_kennel.xml	(revision 13813)
+++ binaries/data/mods/public/simulation/templates/structures/celt_kennel.xml	(working copy)
@@ -18,6 +18,9 @@
       <stone>50</stone>
     </Resources>
   </Cost>
+  <EntityLimitsChanger>
+    <WarDog>10</WarDog>
+  </EntityLimitsChanger>
   <Footprint>
     <Square width="8.0" depth="7.0"/>
     <Height>5.0</Height>
@@ -31,7 +34,7 @@
     <Civ>celt</Civ>
     <GenericName>Special Building</GenericName>
     <SpecificName>Kennel</SpecificName>
-    <Tooltip>Train Celtic war dogs.</Tooltip>
+    <Tooltip>Train Celtic war dogs. One kennel can only house 10 dogs.</Tooltip>
     <Icon>structures/kennel.png</Icon>
     <RequiredTechnology>phase_town</RequiredTechnology>
   </Identity>
Index: binaries/data/mods/public/simulation/templates/structures/maur_pillar_ashoka.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/structures/maur_pillar_ashoka.xml	(revision 13813)
+++ binaries/data/mods/public/simulation/templates/structures/maur_pillar_ashoka.xml	(working copy)
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Entity parent="template_structure_special">
+  <BuildRestrictions>
+    <Category>Pillar</Category>
+  </BuildRestrictions>
   <Cost>
     <BuildTime>80</BuildTime>
     <Resources>
@@ -23,7 +26,7 @@
 	<GenericName>Edict Pillar of Ashoka</GenericName>
     <SpecificName>Śāsana Stambha Aśokā</SpecificName>
     <Icon>structures/monument.png</Icon>
-    <Tooltip>.</Tooltip>
+    <Tooltip>The famous pillar of Ashoka. Can only be build when the hero Ashoka is alive. Currently a useless structure.</Tooltip>
     <History>.</History>
   </Identity>
   <Obstruction>
Index: binaries/data/mods/public/simulation/templates/template_unit_dog.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_dog.xml	(revision 13813)
+++ binaries/data/mods/public/simulation/templates/template_unit_dog.xml	(working copy)
@@ -59,7 +59,7 @@
   </Attack>
   <Cost>
     <BuildTime>10</BuildTime>
-    <Population>1</Population>
+    <Population>0</Population>
     <Resources>
       <food>100</food>
       <wood>0</wood>
@@ -119,6 +119,9 @@
   <StatusBars>
     <HeightOffset>6.5</HeightOffset>
   </StatusBars>
+  <TrainingRestrictions>
+    <Category>WarDog</Category>
+  </TrainingRestrictions>
   <UnitMotion>
     <WalkSpeed>13.0</WalkSpeed>
     <Run>
Index: binaries/data/mods/public/simulation/templates/units/maur_hero_ashoka.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/maur_hero_ashoka.xml	(revision 13813)
+++ binaries/data/mods/public/simulation/templates/units/maur_hero_ashoka.xml	(working copy)
@@ -12,12 +12,6 @@
       <MinRange>12.0</MinRange>
     </Ranged>
   </Attack>
-  <Builder>
-    <Rate>1.0</Rate>
-    <Entities datatype="tokens">
-      structures/maur_pillar_ashoka
-    </Entities>
-  </Builder>
   <Cost>
     <Population>4</Population>
     <BuildTime>50</BuildTime>
@@ -27,6 +21,9 @@
       <metal>100</metal>
     </Resources>
   </Cost>
+  <EntityLimitsChanger>
+    <Pillar>5</Pillar>
+  </EntityLimitsChanger>
   <Footprint replace="">
     <Square width="6.0" depth="12.0"/>
     <Height>5.0</Height>
Index: binaries/data/mods/public/simulation/templates/units/maur_infantry_archer_b.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/maur_infantry_archer_b.xml	(revision 13813)
+++ binaries/data/mods/public/simulation/templates/units/maur_infantry_archer_b.xml	(working copy)
@@ -9,6 +9,7 @@
   <Builder>
     <Entities datatype="tokens">
       structures/maur_elephant_stables
+      structures/maur_pillar_ashoka
       structures/{civ}_wonder
     </Entities>
   </Builder>
Index: binaries/data/mods/public/simulation/templates/units/maur_infantry_spearman_b.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/maur_infantry_spearman_b.xml	(revision 13813)
+++ binaries/data/mods/public/simulation/templates/units/maur_infantry_spearman_b.xml	(working copy)
@@ -4,6 +4,7 @@
     <Rate>1.0</Rate>
     <Entities datatype="tokens">
       structures/maur_elephant_stables
+      structures/maur_pillar_ashoka
       structures/{civ}_wonder
     </Entities>
   </Builder>
Index: binaries/data/mods/public/simulation/templates/units/maur_infantry_swordsman_b.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/maur_infantry_swordsman_b.xml	(revision 13813)
+++ binaries/data/mods/public/simulation/templates/units/maur_infantry_swordsman_b.xml	(working copy)
@@ -11,6 +11,7 @@
   <Builder>
     <Entities datatype="tokens">
       structures/maur_elephant_stables
+      structures/maur_pillar_ashoka
       structures/{civ}_wonder
     </Entities>
   </Builder>
