Index: binaries/data/mods/public/simulation/components/EntityLimits.js
===================================================================
--- binaries/data/mods/public/simulation/components/EntityLimits.js	(révision 15875)
+++ binaries/data/mods/public/simulation/components/EntityLimits.js	(copie de travail)
@@ -13,9 +13,12 @@
 		"</Limits>" +
 		"<LimitChangers>" +
 			"<Monument>" +
-				"<CivCentre>2</CivCentre>" +
+				"<CivilCentre>2</CivilCentre>" +
 			"</Monument>" +
 		"</LimitChangers>" +
+		"<LimitRemovers>" +
+			"<CivilCentre>town_phase</CivilCentre>" +
+		"</LimitRemovers>" +
 	"</a:example>" +
 	"<element name='Limits'>" +
 		"<zeroOrMore>" +
@@ -37,6 +40,14 @@
 				"</zeroOrMore>" +
 			"</element>" +
 		"</zeroOrMore>" +
+	"</element>" +
+	"<element name='LimitRemovers'>" +
+		"<zeroOrMore>" +
+			"<element a:help='Specifies a category of building/unit on which to apply this limit. See BuildRestrictions/TrainingRestrictions for possible categories'>" +
+				"<anyName />" +
+				"<text/>" +
+			"</element>" +
+		"</zeroOrMore>" +
 	"</element>";
 
 
@@ -52,15 +63,19 @@
 	this.limit = {};
 	this.count = {};
 	this.changers = {};
+	this.removers = {};
 	for (var category in this.template.Limits)
 	{
 		this.limit[category] = +this.template.Limits[category];
 		this.count[category] = 0;
-		if (!(category in this.template.LimitChangers))
-			continue;
-		this.changers[category] = {};
-		for (var c in this.template.LimitChangers[category])
-			this.changers[category][c] = +this.template.LimitChangers[category][c];
+		if (category in this.template.LimitChangers)
+		{
+			this.changers[category] = {};
+			for (var c in this.template.LimitChangers[category])
+				this.changers[category][c] = +this.template.LimitChangers[category][c];
+		}
+		if (category in this.template.LimitRemovers)
+			this.removers[category] = this.template.LimitRemovers[category];
 	}
 };
 
@@ -178,4 +193,11 @@
 				this.ChangeLimit(category, modifier * this.changers[category][c]);
 };
 
+EntityLimits.prototype.RemoveLimits = function(tech)
+{
+	for (var category in this.removers)
+		if (this.removers[category] === tech)
+			this.limit[category] = undefined;
+};
+
 Engine.RegisterComponentType(IID_EntityLimits, "EntityLimits", EntityLimits);
Index: binaries/data/mods/public/simulation/components/TechnologyManager.js
===================================================================
--- binaries/data/mods/public/simulation/components/TechnologyManager.js	(révision 15875)
+++ binaries/data/mods/public/simulation/components/TechnologyManager.js	(copie de travail)
@@ -346,6 +346,11 @@
 	var cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);
 	var ents = cmpRangeManager.GetEntitiesByPlayer(playerID);
 
+	// Change the EntityLimit if any
+	var cmpPlayerEntityLimits = QueryPlayerIDInterface(playerID, IID_EntityLimits);
+	if (cmpPlayerEntityLimits)
+		cmpPlayerEntityLimits.RemoveLimits(tech);
+
 	// Call the related trigger event 
 	var cmpTrigger = Engine.QueryInterface(SYSTEM_ENTITY, IID_Trigger);
 	cmpTrigger.CallEvent("ResearchFinished", {"player": playerID, "tech": tech});
Index: binaries/data/mods/public/simulation/templates/special/player.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/special/player.xml	(révision 15875)
+++ binaries/data/mods/public/simulation/templates/special/player.xml	(copie de travail)
@@ -15,6 +15,7 @@
   </BattleDetection>
   <EntityLimits>
     <Limits>
+      <CivilCentre>1</CivilCentre>
       <DefenseTower>30</DefenseTower>
       <Fortress>10</Fortress>
       <Wonder>1</Wonder>
@@ -41,6 +42,9 @@
         <PtolemyIV>4</PtolemyIV>
       </Juggernaut>
     </LimitChangers>
+    <LimitRemovers>
+      <CivilCentre>phase_town</CivilCentre>
+    </LimitRemovers>
   </EntityLimits>
   <Player/>
   <StatisticsTracker/>
Index: binaries/data/mods/public/simulation/templates/structures/ptol_military_colony.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/structures/ptol_military_colony.xml	(révision 15875)
+++ binaries/data/mods/public/simulation/templates/structures/ptol_military_colony.xml	(copie de travail)
@@ -34,7 +34,6 @@
 - Train settler-soldiers of various nationalities.
 - Min. distance from other Military Colonies: 100 meters.</Tooltip>
     <Icon>structures/military_settlement.png</Icon>
-    <RequiredTechnology>phase_town</RequiredTechnology>
   </Identity>
   <Obstruction>
     <Static width="23.0" depth="23.0"/>
Index: binaries/data/mods/public/simulation/templates/structures/sele_military_colony.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/structures/sele_military_colony.xml	(révision 15875)
+++ binaries/data/mods/public/simulation/templates/structures/sele_military_colony.xml	(copie de travail)
@@ -34,7 +34,6 @@
 - Train settler-soldiers of various nationalities.
 - Min. distance from other Military Colonies: 120 meters.</Tooltip>
     <Icon>structures/military_settlement.png</Icon>
-    <RequiredTechnology>phase_town</RequiredTechnology>
   </Identity>
   <Obstruction>
     <Static width="23.0" depth="23.0"/>
Index: binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml	(révision 15875)
+++ binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml	(copie de travail)
@@ -70,7 +70,6 @@
     </Classes>
     <VisibleClasses datatype="tokens">CivilCentre</VisibleClasses>
     <Icon>structures/civic_centre.png</Icon>
-    <RequiredTechnology>phase_town</RequiredTechnology>
   </Identity>
   <Loot>
     <xp>200</xp>
