<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://modiki.civfanatics.com/index.php?action=history&amp;feed=atom&amp;title=GameEvents.CityCanConstruct_%28Civ5_API%29</id>
	<title>GameEvents.CityCanConstruct (Civ5 API) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://modiki.civfanatics.com/index.php?action=history&amp;feed=atom&amp;title=GameEvents.CityCanConstruct_%28Civ5_API%29"/>
	<link rel="alternate" type="text/html" href="https://modiki.civfanatics.com/index.php?title=GameEvents.CityCanConstruct_(Civ5_API)&amp;action=history"/>
	<updated>2026-06-26T08:13:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://modiki.civfanatics.com/index.php?title=GameEvents.CityCanConstruct_(Civ5_API)&amp;diff=11341&amp;oldid=prev</id>
		<title>DonQuich: Bot update</title>
		<link rel="alternate" type="text/html" href="https://modiki.civfanatics.com/index.php?title=GameEvents.CityCanConstruct_(Civ5_API)&amp;diff=11341&amp;oldid=prev"/>
		<updated>2012-09-19T20:26:55Z</updated>

		<summary type="html">&lt;p&gt;Bot update&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Civ5 API Beta Banner}}&lt;br /&gt;
&amp;#039;&amp;#039;This page is a part of the [[Lua and UI Reference (Civ5)]].&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TypeInfos5|Function.png|This function is a member of {{Type5|GameEvents}}.&amp;lt;br/&amp;gt;&lt;br /&gt;
This is a static method, invoke it with a dot.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Similar to CanDeclareWar, this allows provision of critera for the ability to construct a particular building (including Wonders, presumably) in a particular city. Based on the behaviour in the 1066 scenario, it seems that returns of false lead to the building not appearing in the list of buildings available to construct, rather than being greyed out, but this hasn&amp;#039;t been specifically checked. It makes some sense, though, as there&amp;#039;s no way to provide a tooltip to explain the greying out under this mechanism.&lt;br /&gt;
As with CanDeclareWar, it&amp;#039;s unclear whether multiple listeners&amp;#039; returns are combined with AND or OR; either seems possible according to the detailed explanation of how these events are handled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;#039;&amp;#039;&amp;#039;void&amp;#039;&amp;#039;&amp;#039; GameEvents.CityCanConstruct&amp;lt;b&amp;gt;(&amp;lt;/b&amp;gt;{{Type5|PlayerID}} player, {{Type5|CityID}} city, {{Type5|BuildingType}} buildingType&amp;lt;b&amp;gt;)&amp;lt;/b&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Event Type&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:Unknown&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:{|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; style=&amp;quot;padding-right:6px;&amp;quot;|player:&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;| &amp;#039;&amp;#039;the index identifying the player who might or might not be able to construct&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; style=&amp;quot;padding-right:6px;&amp;quot;|city:&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;| &amp;#039;&amp;#039;the index identifying the city that might or might not be able to construct&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; style=&amp;quot;padding-right:6px;&amp;quot;|buildingType:&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;| &amp;#039;&amp;#039;the ID of the building that might or might not be able to be constructed&amp;#039;&amp;#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Source code samples=&lt;br /&gt;
{{PseudoH4|TurnsRemaining.lua - DLC_04 DLC}}&lt;br /&gt;
:&amp;lt;code&amp;gt;DLC/DLC_04/Scenarios/1066Scenario/TurnsRemaining.lua&amp;lt;/code&amp;gt;&lt;br /&gt;
:{{CodeBegin5}}&lt;br /&gt;
{{CodeLine5|0080}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;GameEvents.CityCanConstruct.Add(function(iPlayer, iCity, iBuildingType)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0082}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;local iEngland = -1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0083}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;local iLondonX = 43;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0084}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;local iLondonY = 17;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0086}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;for iPlayer = 0, 3, 1 do&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0088}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   local pPlayer = Players[iPlayer];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0089}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   local playerStartPlot = pPlayer:GetStartingPlot();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0091}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   -- London?&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0092}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   if (playerStartPlot:GetX() == iLondonX and playerStartPlot:GetY() == iLondonY) then&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0093}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   iEngland = iPlayer;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0096}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   break;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0099}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0100}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0102}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   local pPlayer = Players[iPlayer];&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0103}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   local pCity = pPlayer:GetCityByID(iCity);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0105}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   -- Shire Courts&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0106}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   if (iBuildingType == GameInfo.Buildings[&amp;quot;BUILDING_COURTHOUSE&amp;quot;].ID) then&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0108}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   -- Only 8+ tiles from London&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0109}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   if (Map.PlotDistance(pCity:GetX(), pCity:GetY(), iLondonX, iLondonY) &amp;lt; 8) then&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0110}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   return false;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0111}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0113}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   -- Only in originally Anglo-Saxon cities&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0114}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   if (pCity:GetOriginalOwner() ~= iEngland) then&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0115}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   return false;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0116}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0118}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0120}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   -- Domesday Book (only in London)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0121}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   if (iBuildingType == GameInfo.Buildings[&amp;quot;BUILDING_NATIONAL_COLLEGE&amp;quot;].ID) then&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0123}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   if (pCity:GetX() ~= iLondonX or pCity:GetY() ~= iLondonY) then&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0124}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   return false;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeLine5|0125}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0127}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   end&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0129}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   return true;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeBreak5}}&lt;br /&gt;
{{CodeLine5|0132}}&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;   end);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{{CodeEnd5}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Civ5 API Footer}}&lt;br /&gt;
[[Category:Civ5 Methods and Functions|CityCanConstruct]]&lt;br /&gt;
[[Category:Civ5 Cities API|CityCanConstruct]]&lt;br /&gt;
[[Category:Civ5 City Production API|CityCanConstruct]]&lt;/div&gt;</summary>
		<author><name>DonQuich</name></author>
	</entry>
</feed>