This tag defines the regions on your map; their names, borders, and position on the images. You need one for each region on your map. A region is a point on a map at which troops are placed. Some optional subtags provide additional control.
For each territory you'll also need to specify <name>, <borders> and <coordinates>. Borders is a list of <border> tags containing exact names of other territories that can be assaulted from this one (and consequently, can be reinforced once conquered). Coordinates is a list of the X and Y coordinates (in pixels) where the armies should be printed on the small and large maps. At its most basic version, this tag contains only the <name> of the region, the list of <borders>, and where the <coordinates> where the troop count should be printed.
TerName: The name given to this territory. AdjName: The name of an adjacent territory (TerName can assault AdjName) SXCoord: The value of the X Coordinate, in pixels, for the small map. SYCoord: The value of the Y Coordinate, in pixels, for the small map. LXCoord: The value of the X Coordinate, in pixels, for the large map. LYCoord: The value of the Y Coordinate, in pixels, for the large map.
Notes: The tag can be expanded with optional subtags, If you are looking for a more extensive use of the <territories> tag, you can find some info here (Autodeploy and Decay), here(Starting Neutrals and Killer Neutrals), here(One Way and Ranged Attacks), here (Bombardaments) and here(Conditional Borders).
Location: It goes after the <continents> tag and before the closing </map> tag.
Examples: Berlin region on the Germany map. It borders with Schwerin and Potsdam. The code for this region looks this way:
Set 2+ <reinforcement> tags: The map Conquer Man adjusts territories applying the Diminishing Returns Law meaning that the more territories a player has, the more he needs to add to get the next reinforcement, following the table:
1-30 occupied territories: One army for every 3 territories.
31-60 occupied territories: One army for every 4 territories.
61-100 occupied territories: One army for every 5 territories.
101-151 occupied territories: One army for every 6 territories.
Capped Reinforcements: The Hive map sets a maximum for territories reinforcement. After the 36th territory, players do not get additional reinforcements on this basis. It is achieved by setting a divisor number higher than the number of territories in the last segment.
4.2 -Starting Positions: Underlying Neutrals and Advanced Usage
We have defined here the very basic use of <positions> tag. Now we are going to learn how to use the Starting Positions more in depth, but first, a few rules:
Starting Positions are always divided evenly among the players.
If you have more players than positions, then starting positions are ignored.
When not assigned, a position is handed out as a standard region, so an eventual underlying neutral will apply.
Only territories can be used as starting positions <components>
There's no limit with the number of starting positions on a map.
Starting Positions can contain different number of <components>
You should keep in mind the above rules when you use the starting positions or the map will work in a different way than how expected.
This chapter is for the comprehension of an advanced usage of Starting Positions, if you're looking instead for the basic use of this feature, please take a look here.
Define the starting amount of troops with positions: We know that the default number of troops given on a territory is 3. There could be a case in which we want to give more than 3 troops on a territory that is coded as starting position. To achieve this we need to use the start="" identifier within the <territory> tag placed into a <position>
Look at this example: City Mogul is a map that tries to minimize the luck factor by creating inflation in the number of armies. Bonuses and neutrals are much higher than is usual on an average map. This in turn required the mapmaker to also increase the number of starting armies per player by using the <positions> tag. This map also has starting positions with more than one territory.
Limit the number of positions for each player: We said that starting positions are always divided evenly between players. But there's a way to have more control on the number of starting positions that are given out at the start. If we want to control the maximum number of positions (NOTE: not the number of components) that is given to each player, we can use the max="" options into the <positions> tag. But look at this example for better understanding: Kings Court map has 8 starting positions. And although games on this map will start with two positions for each player for 3- and 4-player games, the XML prevents 1v1 games from starting with 4 positions (8 divided by 2) by setting the maximum number of positions to 2.
Underlying Neutrals: After the starting positions have been divided among the players as evenly as possible, the components of the remaining positions are treated like standard regions and given out using the standard formula: (NumRegions / NumPlayers, where, in the case of a 1v1 game, NumPlayers is set to three, setting up the "neutral player" with at least as many territories as the actual players). But if we do not want to put the remaindered territories into the starting drop we're able to do that using the underlying neutrals
An underlying neutral is nothing more than a territory coded to start as a neutral one. If you don't know how to code a territory as neutral please read here. Instead, if you already know how to use neutrals, just let me explain the trick:
When the game starts, starting Positions are evaluated before the territory tags. So the game engine divides the number of starting positions evenly between the players. For this example let us consider the case where there is a remainder. We said that remaindered territories are given out using the standard formula, so such territories are no longer seen as part of a starting position but rather just like normal <territories> tags. So before dividing them among the players, the game engine will check if some of them are coded as neutrals. If this is the case, the game will give the territories a neutral value instead of putting them into the starting pot. In fact neutrals have a priority on normal territories.
Confused? Let's use some code to show you that is not so hard to do! The map New World provides a good example of how to use the <positions> tag to create a Conquest map (a map in which all the territories start as neutral except for the starting players positions):
Let's make it so that France is not assigned with starting positions and we don't want it to be given out as a normal territory due to the autodeploy bonus (+4) We need just to add the <neutral> tag into the territory:
If we have a map in which numbers are perfect for, let say, 8 players but not for 3 players, we can decide to work on numbers using starting positions. Obviously we need to use a system that has influence only on a specific number of player and not on the whole cases.
Do this is simple, we need just to code less positions than players. For games in which players are more than positions, those positions will be ignored. But look at the example:
Thyseneal has starting positions, but only for games with 5 players or less. This is to prevent a player from unfairly getting a bonus right from the start.
We have described here the <continents> tag. Now we are going to learn how to mix some continents together to create more variety in your maps.
Nested Continents: We know that a continent is a group of regions. Usally the structure of bonuses based on zones (continents) is pretty simple and clear. But in some cases we need to create a series of continents where the components of one is a subset of (or even identical to) the components of another. Confused? Ok, look at this example:
This is a continent taken from the Cyprus map. With this bonus you need to hold at least 5 turkish territories to receive +1 troop.
It looks exactly like a standard bonus with the exception of the <required> tag. If you add this tag, your bonus will not given only when a player holds the whole list of territories, but instead when he holds at least the number of territories equal to the number written into the <required> tag, obviously, among those territories listed in the continent.
Now, we are going to add a second continent, this time +2 for 10 turkish territories:
With the above code when a player holds 10 regions, he will receive +1 troops for holding 5 turkish territories and +2 for holding 10 turkish territories, for a total of +3 troops. But we want to give 5 territories bonus only if the player doesn't hold 10 territories. How to make this possible? Look at the final code:
We added the <overrides> tag. The bonus listed within this tag, as <override>, is not given when the player hold this continent. So, using our example, when a player holds 10 Turkish Territories, the +2 bonus overrides the +1 bonus for 5 Turkish Territories, and the total amount of bonus troops given is +2 (and not +3 like with the previous code).
If you have ever used nested continents for one of your map, you certainly have experienced how long that continents list can be and how many overrides you had to use to give out bonuses correctly. This issue can be circumvented using a different way to code your bonuses: Collections. Essentially, it's a more flexible way to write a continent or a series of continents without having to create a long chain.
With the above code a player will receive 1 additional armies if he holds at least 2 components, 3 additional armies if he holds 3 components and 6 armies if he holds 4 components. So with collections you can specify multiple bonuses along with the number of components required to achieve each bonus.
There some important aspects to consider while using Bonus Collections:
Add the <required> tag after having listed all the components is mandatory, otherwise the collection feature won't work properly. The value of the required tag must be the lower bonus of the collection.
If you achieve several bonuses they get added together;
Components can be a <territory> as well a <continent>;
They are NOT mandatory. The standard way to code continents still works.
Only <territory> components can have additional options. Refer to the dedicated section of this guide for details;
Even if Collections are a series of bonuses, you can specify only a single name for a Bonus Collection. The <name> tag must be unique.
To perform some nice tricks we need to introduce 3 options that we can specify for the <territory> tags listed within the <components>. The 3 options that can be used to specify a particular type of component, are:
The mandatory type can be used to give a bonus to a player only if the mandatory component is held. To specify that a territory is a mandatory component, you need to add type="mandatory" into the opening territory tag: <territory type="mandatory">
Let me explain the above code. In the first part we can see that you will receive 2 troops if you hold at least 5 territories within those listed as components, 5 if you hold 8 and 10 if you hold 10. But these additional troops are given to you only if you hold the mandatory one (country 1 in the example). In fact if you hold 9 countries (from country 2 to country 9) but you don't hold the mandatory one (country 1) you will NOT qualify for the bonus and you will receive nothing. It's simple, If you don't hold the mandatory territory you don't hold the continent. The mandatory type need not be unique, so you can have more than a single mandatory territory for a bonus.
IMPORTANT The mandatory type can be used ONLY with <territory> components. Do NOT use it with<continent>
The blocker type identify a particular type of component. If you hold a blocker component you do NOT hold the continent. To specify the blocker type for a territory you need to add type="blocker" into the opening territory tag: <territory type="blocker">
With the above code, if the player holds country 1 (it doesn't matter how many other territories he has) he doesn't hold the continent at all and that means if it was a subcontinent he doesn't hold that either, like in the example into the following spoiler:
The multiplier type identifies another particular type of component. To set a component as multiplier, first we need to add type="multiplier" to the opening <territory> tag and immediately after the type we need to specify a factor, which must be a number.
In the above example, when the player holds the multiplier country the bonus is multiplied by the factor specified, in this case, 1.5.
There are a few things to keep in mind:
The factor value can have decimals
When the multiplier is applied, the final bonus value is always rounded to the nearest integer.
The factor value can be 0
IMPORTANT The multiplier type can be used ONLY with <territory> components. Do NOT use it with<continent>
Now that we've looked at all component options, we can notice that there are two ways to define a territory that you don't want to hold - either make it a blocker or make it a multiplier with factor of zero. What's the difference? Like we said before, if you have a blocker, then you don't hold the continent at all and that means if it is a subcontinent you don't hold that either. Instead, if you have a multiplier with factor=0, then even though you don't get any bonus, you technically hold the continent, so if it is a subcontinent you still hold it as a component.
Autodeploy and Decay are two different systems to use the same tag. If we want to apply a specific bonus to a single territory, we can use the <bonus> tag. It goes always after the <coordinates> tag and it must be a number. When the number is positive we will have an autodeploy, instead if the number is negative we have a decay. It's important to remember that in both cases the bonus value is added, or subtracted, to the amount of troops held by that specific territory. In any case, a territory can NOT have less than 1 troop on it. Therefore, once there is only one troop on a territory, a decay has no effect.
A couple of examples:
In the Feudal War map, each castle is an autodepoly. Five additional troops are deployed automatically on a castle each turn, if you hold it.
Instead, the Dust Bowl map has several decay territories in the central part to simulate drought. If you hold on of these regions you will receive a negative bonus directly on the region. For example, if you hold Sterling, you will lose 1 troop each turn you have on that region until you find yourself with just 1 army.
There are some cases in which we want to have more control of the starting drop in a game. One of these cases is when we don't want to have someone who starts with a specific territory. The best system to achieve this result is to code that territory to start always as neutral.
For example the Luxemburg map has Luxemburg City coded as neutral, that region will start with 3 neutral troops on it in any game.
So, to code a neutral territory as starting neutral, you need only to add the <neutral> tag before the closing </territory one. The number of starting troops for that territory is specified within the tag.
There's an additional behaviour that we can assign to a neutral territory. We can make it a Killer Neutral. Killer neutral works exactly like a normal neutral territory, but with an important difference: If you take a neutral territory during a game, it will be yours until someone else conquers it. However, a killer neutral region, if you hold it, will revert back to a predefined number of neutral troops at the start of the next turn!
For example in the Arms Race! Map, the player that will take a missile launch, will lose it to 15 neutral armies, at the start of the next turn.
To switch a neutral territory to a killer neutral, you have to add the killer="yes" option to the <neutral> tag. The territory will revert back always to the number of troops specified within the neutral tag.
Optional tags for territories are great, but there are a few features that we can use without adding a single line of code.
One Way Borders
A standard territory has a list of borders. Usually Territory A borders with Territory B and vice versa. But if we want to make it possible to attack only from Territory A to Territory B and not the reverse? It's simple! The solution is to list only the territory that can be attacked as a border of the territory that cannot be attacked.
An example is the British Isles Map, in which we can see that Northumberland can one way attack Lothian & Borders.
If a player decides to move troops from the attacking region to the other (advancing after conquering), he won't be able to reinforce them back, the connection being one-way, unless he has another route and the reinforcement option for the game is something other than Adjacent.
Using the same technique, we can allow a territory to attack another even if on the map the two do not border, for example a distant territory. It's the Ranged Attack feature. Remember, the map image does not determine how the game is played -- the XML does. Ranged attacks and one way borders can be mixed together without problems. In most cases, the ranged attacks are visually supported on the map and there's no additional code required. Tt is mentioned in this guide just because it's considered by the community as a distinct map feature.
An example of ranged attacks (and also one way in this case) are the plane-parachute in the D-Day:Omaha Beach! Map
Attack is not the only way to take away a territory from your opponent(s). With the additional <bombardments> tag we can list a territory (or a series) that can be "bombarded" to become neutral. When all opponent's troops are defeated, the troop count of a bombarded territory reverts to one neutral, and the attacker isn't able to advance his troops into that region or reinforce into or through it after ending the attack phase of a turn.
We all know that standard territories have fixed borders. This means that Territory A always borders with Territory B. But now we're going to learn how to make the border conditional. Conditional Borders allow a more flexible usage of borders and this feature makes it possible to have borders which change over the course of a game, based on the possession of territories. Using again the same example, with conditional borders, we can have that Territory A borders with Territory B only if the player holds a Territory C. The third territory will be a sort of key: holding it satisfies the condition and so activates that border.
Sao Paulo can attack Buenos Aires only if the same player holds New York. In addition, Sao Paulo can assault Dakar if the player holds the whole Oceania continent. Obviously this is just a stupid example and I'm sure you can find plenty of better ways to use it.
In the following we use "Quantity" as representing the army count of a terit count before transformation.
Controls when the tranform will execute, as follows:
T=Each Turn R=Each Round (when first player starts) RGN=Each Round after Round N RLN=Each Round before ROund N
Controls whether a tranform will be applied based on the type of occupying armies, as follows:
A=All S=Self (the playing Player only) N=Neutral only P=Players only (not neutral) OP=Other Players only (not neutral or the playing Player) O=Others (all others, including neutral, except the playing player)
INC <inc>: [Optional] + or - Adds/Subtracts Amount to/from Quantity, If this is not set then the Quantity will be set to a calculated Amount independent of its current value
Fixed amount to set Quantity to.
UPPER/LOWER<upper>/<lower>: A upper and lower range given so that the system chooses an Amount randomly with equal probability across the range. May be fractional.
If set to any non-zero value, use Amount as a % of the current value, instead of as a fixed value.
CONDITIONS<conditions>:[Optional] Each Conditions tag contains a set of Condition tags and optionally a Formula tag to tie them together. Currently conditions apply to territories only.
FORMULA<formula>:[Optional] formula allows construction of boolean logic rules. conditions prefixed with COND_ (see example below). Default is to use logical AND for each condition.
CONDITION<condition>: Each condition tag may contain ID, VARIABLE, OWNERSHIP, MINVALUE & MAXVALUE tags
ID<id>: Territory id
VARIABLE<variable>: [Optional] Variable name if you are using a formula
OWNERSHIP<ownership>:[Optional] Test who owns the territory. See assigns_to tag spec for the transform tag for functioning.
MINVALUE<minvalue>:[Optional] Test the minimum size of the army
MAXVALUE<maxvalue>:[Optional Test the maximum size of the army
Tranformation is the very first thing to execute on a Begin Turn action.
Go through each territory:
- Set Quantity = Initial value of armies on this territory
For the territory, execute the following process for each applicable Tranform in turn: - Apply filters. If Tranform does not apply do nothing and skip to next tranform for this terit. - Calulate Amount by choosing random number if range or setting as fixed amount - if % is set, multiply Amount by Quantity/100 - If INC = "-" negate Amount - If INC is set add Quantity to Amount - set Quantity to Amount
After all Tranforms have executed for a territory: - Quantity is rounded to the closest integer and set to a minimum of 1 - If Quantity has changed, set new army count and send log to game log.
Go to next Territory
The original suggestion of neutrals that increase (or decrease by changing <inc> to "-") by 1 each turn would be specified as: