Note 1: I did not test A LOT of the following information, so please feel free to post corrections - I will try to incorporate them. I would love to add (or have someone add) this information in a Wiki. Sooooo, feel free to let me know about one that actually gets used.
Note 2: I will only type out the start tag for each command, always properly end each command by adding a / in the beginning of the closing tag, as in: <ImprovementTypes> and </ImprovementTypes>.
Some tags are 'containers' meaning they accept/require several commands with their own individual tags within. I will try to mark each of these tags by marking them Container in the description. An example of a container tag would be <Prereq>. Usage as follows:
<Prereq>
<Type>Allegiance</Type>
<Attribute>Kingdom</Attribute>
</Prereq>
Note 3Unless I'm sadly mistaken (and if I am, tell me, so I can burn in shame ... and fix my mistakes) integer numbers are full numbers (e.g.: 1 or 2) and real numbers have fractions (e.g.: 1.3 or 0.5). I will refer to this several times.
Improvement Basics:
<ImprovementTypes> Container. These tags need to be at beginning and end of each file containing one or more improvements
<ImprovementType InternalName="NAME"> Container. These tags are required at beginning and end of each individual improvement
<TileDesign> The internal name of the tile you created in the tile editor. This is not the name of the 'Improvement', but only of the purely graphical tile you created.
<ConstructionTileDesign> This is the internal name of the tile to be displayed while the improvement is under construction. See <TileDesign>.
Improvement Names and Descriptions:
<DisplayName> This determines the visible in-game name of your improvement
<Description> Visible in-game description
<LongDescription> Visible detail description
Requirements and Terrain Types
<RequiresCity> This can be either set to True or False
<ReqCityLevel> Only used if <RequiresCity> is true. Can be set to a value between 1-5
<RequiresResource> Requires control of the named resource (might be useful with shards (K_Fire__Shrine, K_Earth_Shrine, etc., I'd assume empire variants are F_Fire_Shrine and F_Earth_Shrine)
<RequiredImprovement> Accepts internal names of improvements. If the named improvement is not present, the improvement containing this tag cannot be built.
<IgnoreDuplicateImpLimit> When set to True this lets you build multiples of your improvement per city.
<AllowedPerCity> Might be able to restrict the amounts of possible repeat improvements, when you set improvements to non-unique (per above command)
<AllowedPerGame> Accepts any number as parameter. When set to 1, this allows only one improvement of this type in game at any point in time, essentially making it a 'World Wonder'.
<AllowedPerFaction> Accepts any number as parameter. When set to 1, this allows only one improvement of this type in your kingdom, essentially making it a 'National Wonder'.
<Prereq> Container. This lets you add prerequisites that have to be met in order to build the improvement.
- <Type> Could be set to: Allegiance, Tech,
- <Attribute> Context-sensitive to <Type>, if Type is Allegiance, Attribute could be either Kingdom or Empire, if Type is Tech, you supply the internal name of a technology (e.g. Arcane_Research_Amarian)
- <Value> Not sure of the use of this, but I saw it used sometimes along with the Tech type (Value was set at 0)
<SupportedTerrainType> Can be set to City, Land, Beach
Influence/Zone of Control
<ZOCMinRadius> Adds an influence/zone of control radius to your city. This tag determines the minimum radius. Accepts an integer value.
<ZOCMaxRadius> Adds an influence/zone of control radius to your city. This tag determines the maximum radius. Accepts an integer value.
<ZOCRadiusTurnsBeforeUpdate> Determines the number of turns before the control radius increases.
Construction Cost
<LaborToBuild> Accepts a real number, but I believe it only utilizes the number before the dot. Floor seems to be 1 (I tried 0.0, but it still took 1 turn to build)
There are several ways to add a construction cost, e.g.:
<GameModifier> Container. This is the container in which you add the improvements resource costs.
- <ModType> Accepts several values, in this case, use: ConstructionResourceCost
- <Attribute> Accepts Gold, Materials, Rations, Metal (Rations refers to food)
- <Value> Accepts any NEGATIVE integer value. Make sure to make them negative, otherwise you GET resources for building this.
- <PerTurn> I'm not sure if this is a permanent upkeep cost, or a per turn cost, until the total cost specified in <Value> is reached. Accepts real numbers
Resource Production
Enough for now, adding more later.