<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CIB</id>
	<title>The Battle for Wesnoth Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CIB"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/CIB"/>
	<updated>2026-04-08T16:45:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SideWML&amp;diff=52817</id>
		<title>SideWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SideWML&amp;diff=52817"/>
		<updated>2014-01-15T09:43:45Z</updated>

		<summary type="html">&lt;p&gt;CIB: Refined the description for controller=null&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== the [side] tag ==&lt;br /&gt;
&lt;br /&gt;
The [side] tag is used to describe a side in a particular scenario.&lt;br /&gt;
&lt;br /&gt;
The following keys are recognized:&lt;br /&gt;
&lt;br /&gt;
* '''side''': a number. The leader of this side is placed on the tile represented by this number (see [[BuildingMaps]]). When defining sides, they must be defined in order since the side number is checked against the number of sides seen so far. Currently, the Multiplayer server rejects entering a scenario with more than 9 sides, even if those extra sides are AI sides. &lt;br /&gt;
&lt;br /&gt;
* '''controller''': how moves for this side should be inputted.&lt;br /&gt;
** '''ai''': the Wesnoth AI makes this side's moves. This is the default setting.&lt;br /&gt;
** '''human''': a player controls this side's moves.&lt;br /&gt;
** '''null''': the side doesn't get a turn to move and doesn't have a leader generated from the contents of the [side] tag. (It still can get units from [unit] tags in the [side] tag.) Events that would usually occur on the side's turn will not take place. This includes healing (ability, villages and rest) and ''side turn'' events.&lt;br /&gt;
** '''a number''': {{DevFeature1.11}} gives this side's control to a side with '''side''' matching the number (multiplayer only).&lt;br /&gt;
&lt;br /&gt;
* '''no_leader''': if &amp;quot;no&amp;quot; (default), then keys describing a unit which will begin on the side's keep will be the remainder of the '''[side]''' tag, See [[SingleUnitWML]]. Note that if the keys '''x''', '''y''' are included, the leader will begin there regardless of keep location. If this side has a recall list from a previous level, then the recall list will be searched for a leader (using '''canrecruit=yes''') and if one is found it will be used instead of the one described in the '''[side]''' tag. Typical keys used for defining the leader unit are '''type''' (mandatory), '''id''', '''name''' and '''unrenamable=yes''', see [[SingleUnitWML]].&lt;br /&gt;
&lt;br /&gt;
* '''recruit''': a list of unit types. At the beginning of the scenario, the side gains recruitment of these units.&lt;br /&gt;
&lt;br /&gt;
* '''gold''': the starting gold for this side. Default 100. (If gold is carried over from a previous scenario, this value is the minimum starting gold.)&lt;br /&gt;
&lt;br /&gt;
* '''income''': the base income for this side, default 0. This is added to ''base_income'', '''[game_config]''' to determine the side's base income. (see [[GameConfigWML]]).&lt;br /&gt;
&lt;br /&gt;
* '''hidden''': if 'yes', side is not shown in status table.&lt;br /&gt;
&lt;br /&gt;
* '''fog''': if 'yes', this side cannot see any tiles it is not within vision of, except at the start. Please note that the AI currently ignores the fog.&lt;br /&gt;
&lt;br /&gt;
* '''fog_data''': describes the area which this team has de-fogged, using the same format as shroud_data. (This is not particularly useful when defining a side, though, as the game will recalculate fog as turns begin and end. {{DevFeature1.11}}It is used in saved games.)&lt;br /&gt;
&lt;br /&gt;
* '''[fog_override]''' {{DevFeature1.11}} With keys x= and y=, this records the hexes that have been cleared (multiturn) with {{tag|DirectActionsWML|lift_fog}}.&lt;br /&gt;
&lt;br /&gt;
* '''shroud''': if 'yes', this side cannot see any tiles it has not moved within sight of. Please note that the AI currently ignores the shroud. NOTE: with shroud=no, this team *ignores* shroud, so it is not possible to modify it using place_shroud and remove_shroud tags. If you want to do so, use &amp;quot;shroud=yes&amp;quot; and place_shroud/remove_shroud tags.&lt;br /&gt;
&lt;br /&gt;
* '''shroud_data''': describes the area which this team has de-shrouded. An example:&lt;br /&gt;
 |&lt;br /&gt;
 |00011111000&lt;br /&gt;
:This would leave the first column on the map unaltered and would change the second column for 11 tiles. A '0' means: shrouded, '1' means unshrouded. You can either call an external file using {@filename}  (see [[PreprocessorRef]]) or place the data in quotes. For making an external file see [[BuildingScenariosShroudData]].&lt;br /&gt;
&lt;br /&gt;
* '''persistent''': whether the side exists in any other scenarios. If ''yes'', then ''save_id'' (see below) is used to identify the side in other scenarios. Defaults to ''yes'' for sides with a human controller, and ''no'' for ai controlled sides.&lt;br /&gt;
&lt;br /&gt;
* '''save_id''': defaults to the leader's ''id'' if available, 'Unknown' otherwise. The ID of the side with respect to the previous and next scenarios. Used to carry over the side's recall list (including the side's leader), recruitment list, and starting gold from scenario to scenario. Also used for the side's displayed name in the victory gold-calculation dialog. (For versions prior to 1.7.3, some extra effort to retrieve carryover information may be needed. See [[SideSwitchingWML]])&lt;br /&gt;
&lt;br /&gt;
* '''team_name''': a non translatable string representing the team's description. Sides with the same team_name are allied. Default ''side''. ''team_name'' is now a comma-separated list of teams that the side is on.&lt;br /&gt;
&lt;br /&gt;
* '''user_team_name''': a translatable string representing the team's description. This has no effect on alliances. Default ''team_name''.&lt;br /&gt;
&lt;br /&gt;
* '''current_player''': a translatable string representing the player's or leader's name. Defaults to the leader's id; if the side's leader is a human player in multiplayer, the default is the player's username.&lt;br /&gt;
&lt;br /&gt;
* '''color''': May be either a numeric color index or a color name (e.g. 'blue', 'purple', 'orange', etc.).  The numeric form is deprecated. The default list of numbers and corresponding colors can be found in data/core/team_colors.cfg.&lt;br /&gt;
&lt;br /&gt;
* '''flag''': a custom flag animation to use instead of the default one to mark captured villages. An automatic side-coloring is applied.&lt;br /&gt;
** Example animation that has three frames and loops every 750ms: ''flag=misc/myflag-1.png:250,misc/myflag-2.png:250,misc/myflag-3.png:250''&lt;br /&gt;
&lt;br /&gt;
* '''flag_icon''': a custom flag icon to indicate the side playing in the statusbar (a size of 24x16 is recommended). An automatic side-coloring is applied.&lt;br /&gt;
&lt;br /&gt;
* '''village_gold''': the amount of gold given to this side per village it controls per turn. Default specified in ''village_income'', '''[game_config]''' ([[GameConfigWML]]).&lt;br /&gt;
&lt;br /&gt;
* '''village_support''': {{DevFeature1.11}} the number of unit levels this side is able to support (does not pay upkeep on) per village it controls. Default specified in ''village_support'', '''[game_config]''' ([[GameConfigWML]]).&lt;br /&gt;
&lt;br /&gt;
* '''recall_cost''': the amount of gold it costs to recall a unit. Default specified in ''recall_cost'', '''[game_config]''' ([[GameConfigWML]]).&lt;br /&gt;
&lt;br /&gt;
* '''share_maps''': whether sides allied with this side see all terrains that this side sees, if they are on shroud.&lt;br /&gt;
&lt;br /&gt;
* '''share_view''': whether sides allied with this side see the units that this side sees, if they are on FoW (fog).&lt;br /&gt;
&lt;br /&gt;
* '''scroll_to_leader''': optional. If 'no', scroll to the leader is not performed on the start of each turn. (default: yes)&lt;br /&gt;
&lt;br /&gt;
* '''suppress_end_turn_confirmation''': {{DevFeature1.11}} If &amp;quot;yes&amp;quot;, then the player will not be asked to confirm ending their turn even if they have not done anything. This is provided for some (probably few) user-made scenarios in which players often skip their turns. (default: no)&lt;br /&gt;
&lt;br /&gt;
* '''[ai]''' if '''controller=ai''', gives parameters to the AI. See [[AiWML]].&lt;br /&gt;
&lt;br /&gt;
* '''[village]''' describes a village the side begins in control of.&lt;br /&gt;
** ''x'', ''y'' the location of the village. If the pair of coordinates is not a village or is duplicated in another [village] tag, behaviour is undefined. Recent game engine or wmllint should warn about these.&lt;br /&gt;
&lt;br /&gt;
* '''[unit]''' describes a unit which begins on the side. See [[SingleUnitWML]]. If the side has a recall list and the unit is not given a location, it will start on the recall list. Note that the ''side'' attribute under '''[unit]''' will be ignored, as the side will come from the ''side'' attribute of '''[side]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following keys are multiplayer only:&lt;br /&gt;
&lt;br /&gt;
* '''allow_player''': if false then this side will not be allowed to be modified and will be hidden during game creation. Defaults to yes.&lt;br /&gt;
&lt;br /&gt;
* '''disallow_observers''': prevents observers from seeing this side turn. (default: no)&lt;br /&gt;
&lt;br /&gt;
* '''controller_lock''': {{DevFeature1.11}} if true then this side's controller (&amp;quot;Player/Type&amp;quot;) modification is limited. It is bound to the '''controller''' attribute in [[SideWML]].&lt;br /&gt;
&lt;br /&gt;
* '''team_lock''': if true then this side's team is not allowed to be modified.&lt;br /&gt;
&lt;br /&gt;
* '''color_lock''': if true then this side's color is not allowed to be modified.&lt;br /&gt;
&lt;br /&gt;
* '''gold_lock''': if true then this side's gold is not allowed to be modified. &lt;br /&gt;
&lt;br /&gt;
* '''income_lock''': if true then this side's income is not allowed to be modified.&lt;br /&gt;
&lt;br /&gt;
* '''faction''': if valid faction id is provided then this side's faction is not allowed to be modified.&lt;br /&gt;
&lt;br /&gt;
* '''faction_from_recruit''': if true then this side will be locked to the faction that matches the recruits better.&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.11}} N.B. the ''lock'' attributes use [[ScenarioWML]] '''force_lock_settings''' as their default value. I.e. if no value to ''lock'' was set, it will take '''force_lock_settings''' value.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[EraWML]]&lt;br /&gt;
* [[ScenarioWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=DirectActionsWML&amp;diff=27881</id>
		<title>DirectActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=DirectActionsWML&amp;diff=27881"/>
		<updated>2009-01-04T23:03:04Z</updated>

		<summary type="html">&lt;p&gt;CIB: /* Direct actions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Direct actions ==&lt;br /&gt;
&lt;br /&gt;
Direct actions are actions that have a direct effect on gameplay.&lt;br /&gt;
&lt;br /&gt;
The following tags are actions:&lt;br /&gt;
* '''[endlevel]''': ends the scenario.&lt;br /&gt;
** '''result''': before the scenario is over, all events with ''name=result'' are triggered.  The message ''result_message'' with the heading ''result_heading'' (see [[LanguageWML]]) are displayed.  If ''result=victory'', the player progresses to the next level; if ''result=defeat'', the game returns to the main menu.  These last two are rarely used: ''result=continue'' behaves identically to ''result=victory'' except the player's gold is not reduced to 80%, and it does not bring up a &amp;quot;Victory&amp;quot; message or the gold changing message (since it doesn't change); ''result=continue_no_save'' works similarly, except the player is not asked whether to save the game, and is taken directly to the next scenario without any messages.  Unless ''result=defeat'', the following keys can also be used:&lt;br /&gt;
** '''bonus''': whether the player should get bonus gold (maximum possible gold that could have been earned by waiting the level out). The default is bonus=yes.&lt;br /&gt;
** '''carryover_report''' {{DevFeature}}: whether the player should receive a summary of the scenario outcome, the default is carryover_report=yes.&lt;br /&gt;
** '''save''' {{DevFeature}}: whether a start-of-scenario save should be created for the next scenario, the default is save=yes.&lt;br /&gt;
** '''linger_mode''' {{DevFeature}}: whether the game should switch to linger_mode before advancing to the next scenario, the default is linger_mode=yes.&lt;br /&gt;
** '''next_scenario''': (default specified in '''[scenario]''' tag) the ID of the next scenario that should be played.  All units that side 1 controls at this point become available for recall in ''next_scenario''.&lt;br /&gt;
** When the result is &amp;quot;victory&amp;quot; the following keys can be used:&lt;br /&gt;
*** '''carryover_percentage''' {{DevFeature}}: by default 80% of the gold is carried over to the next scenario, with this key the amount can be changed.&lt;br /&gt;
*** '''carryover_add''' {{DevFeature}}: if true the gold will be added to the starting gold the next scenario, if false the next scenario will start with the amount of the current scenario (after taxes) or the minimum in the next scenario. Default is false.&lt;br /&gt;
** '''music''' {{DevFeature}}: (default specified in '''[scenario]''' or '''[game_config]''' tags) a comma-separated list of music tracks from which one will be chosen and played once after any events related to the end of level result are executed; by default, victory_music is used on victory, and defeat_music on defeat.&lt;br /&gt;
** '''end_text''' {{DevFeature}}: Text that is shown centered in a black screen at the end of a campaign. Defaults to &amp;quot;The End&amp;quot;. Note that this has cumulative effects over the campaign - it persists even if the endlevel does not trigger the end of the campaign. See also [[CampaignWML]].&lt;br /&gt;
** '''end_text_duration''' {{DevFeature}}: Delay, in milliseconds, before displaying the game credits at the end of a campaign. In other words, for how much time '''end_text''' is displayed on screen. Defaults to 3500. Note that this has cumulative effects over the campaign - it persists even if the endlevel does not trigger the end of the campaign. See also [[CampaignWML]].&lt;br /&gt;
* '''[unit]''': places a unit on the map.  For syntax see [[SingleUnitWML]].&lt;br /&gt;
** {{Short Note:Predefined Macro|GENERIC_UNIT}}&lt;br /&gt;
** {{DevFeature}} '''to_variable''':  spawn directly into a variable instead of on the map.&lt;br /&gt;
* '''[recall]''': recalls a unit.  The unit is recalled free of charge, and is placed near the leader.&lt;br /&gt;
** [[StandardUnitFilter]]: the first matching unit will be recalled.  If no units match this tag is ignored.&lt;br /&gt;
** '''x,y''': the unit is placed here instead of next to the leader.&lt;br /&gt;
** '''show''': if not &amp;quot;no&amp;quot;, display the unit being recalled.&lt;br /&gt;
* '''[teleport]''': teleports a unit on map. {{Short Note:Predefined Macro|TELEPORT_UNIT}}&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] all units matching the filter will be teleported.&lt;br /&gt;
** '''x,y''': the position to teleport to.&lt;br /&gt;
** '''clear_shroud''': should shroud be cleared on arrival&lt;br /&gt;
** '''animate''': should a teleport animation be played (if the unit doesn't have a teleport animation, it will fade out/fade in)&lt;br /&gt;
* '''[terrain_mask]''': changes the terrain on the map.  See [[TerrainMaskWML]].&lt;br /&gt;
* '''[terrain]''': changes the terrain on the map.&lt;br /&gt;
** '''terrain''': the character of the terrain to use.  See [[TerrainCodesWML]] to see what letter a type of terrain uses.&lt;br /&gt;
** '''x,y''': the position (or range of positions) to change.&lt;br /&gt;
** {{DevFeature}} '''layer''': (overlay|base|both, default=both) only change the specified layer.&lt;br /&gt;
** {{DevFeature}} '''replace_if_failed''': (default=no) When replacing just one layer failed, try to replace the whole terrain. If '''terrain''' is an overlay only terrain, use the default_base as base layer. If the terrain has no default base, do nothing.&lt;br /&gt;
* '''[gold]''': give one side gold.&lt;br /&gt;
** '''amount''': the amount of gold to give.&lt;br /&gt;
** '''side''': (default=1) the number of the side to give the gold to.&lt;br /&gt;
* '''[unstore_unit]''': creates a unit from a game variable, and activates it on the playing field.  This must be a specific variable describing a unit, and may not be an array -- to unstore an entire array, iterate over it.  The variable is not cleared.  See also '''[store_unit]''', '''[while]''' and [clear_variable] in [[InternalActionsWML]]. Note units with a negative amount of hitpoints will be unstored with 1 hitpoint.&lt;br /&gt;
** '''variable''': the name of the variable.&lt;br /&gt;
** '''find_vacant''': whether the unit should be placed on the nearest vacant tile to its specified location.  If this is set to 'no'(default), then any unit on the same tile as the unit being unstored will be destroyed.&lt;br /&gt;
** '''text''': (translatable) floating text to display above the unit, such as a damage amount&lt;br /&gt;
** '''red''', '''green''', '''blue''': (default=0,0,0) the color to display the text in. Values vary from 0-255. You may find it convenient to use the {COLOR_HARM} or {COLOR_HEAL} macro instead. (Use {COLOR_HARM} or {COLOR_HEAL} instead of the whole red,green,blue= line.)&lt;br /&gt;
** '''advance''': if the XP has been modified then there will be tried to advance the unit, default true. &lt;br /&gt;
** {{DevFeature}} '''x''' ,'''y''': override unit location&lt;br /&gt;
* '''[allow_recruit]''': allows a side to recruit units it couldn't previously recruit.&lt;br /&gt;
** '''type''': the types of units that the side can now recruit.&lt;br /&gt;
** '''side''': (default=1) the number of the side that is being allowed to recruit the units.&lt;br /&gt;
* '''[disallow_recruit]''': prevents a side from recruiting units it could previously recruit.&lt;br /&gt;
** '''type''': the types of units that the side can no longer recruit.&lt;br /&gt;
** '''side''': (default=1) the number of the side that may no longer recruit the units.&lt;br /&gt;
* '''[set_recruit]''': sets the units a side can recruit.&lt;br /&gt;
** '''recruit''': the types of units that the side can now recruit.&lt;br /&gt;
** '''side''': (default=1) the number of the side that is having its recruitment set.&lt;br /&gt;
* '''[modify_side]''': modifies some details of a given side in the middle of a scenario.  '''The following listed properties are the only properties that [modify_side] can affect!'&lt;br /&gt;
** '''side''': (default=1) the number of the side that is to be changed.&lt;br /&gt;
** '''income''': the income given at the begining of each turn.&lt;br /&gt;
** '''team_name''': the team in which the side plays the scenario.&lt;br /&gt;
** '''user_team_name''': a translatable string representing the team's description. This has no effect on alliances. Defaults to ''team_name''.&lt;br /&gt;
** '''gold''': the amount of gold the side owns.&lt;br /&gt;
** '''village_gold''': the income setting per village for the side.&lt;br /&gt;
** '''controller''': the identifier string of the side's controller. Uses the same syntax of the ''controller'' key in the [[SideWML|[side]]] tag.&lt;br /&gt;
** '''fog''': a boolean string (yes/no) describing the status of Fog for the side.&lt;br /&gt;
** '''shroud''': a boolean string describing the status of Shroud for the side.&lt;br /&gt;
** {{DevFeature}} '''[ai]''': replaces a side's AI parameters with the new specified ones. Uses the same syntax described in [[AiWML]].&lt;br /&gt;
* '''[modify_turns]''': modifies the turn limit in the middle of a scenario.&lt;br /&gt;
** '''value''': the new turn limit.&lt;br /&gt;
** '''add''': if used instead of ''value'', specifies the number of turns to add to the current limit (can be negative).&lt;br /&gt;
** {{DevFeature}} '''current''': changes the current turn number after applying turn limit modifications, if any. It is possible to change the current turn number to a greater one than the current only; also, it is not possible to change the turn number to exceed the turn limit.&lt;br /&gt;
* '''[capture_village]''': changes the ownership of a village.&lt;br /&gt;
** '''side''': the side that takes control of the village. If not given, the village will become neutral.&lt;br /&gt;
** '''x, y''': the location of the village.&lt;br /&gt;
* '''[kill]''': Removes all units (including units in a recall list) that match the filter from the game.&lt;br /&gt;
** [[StandardUnitFilter]]: selection criterion&lt;br /&gt;
** '''animate''': if 'yes', displays the unit dying (fading away).&lt;br /&gt;
** '''fire_event''': if 'yes', triggers any appropriate 'die' events (See [[EventWML]]). Note that any 'die' events triggered by this are executed immediately, interrupting the current event and thus causing the x1, y1, x2, and y2 variables to be reset for that 'die' event, which in turn causes those variables to be invalid for the remainder of this event. {{DevFeature}} 'last breath' events are also fired.&lt;br /&gt;
* '''[unstone]''': Unstones all units that match the filter.&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] all units matching the filter will be unstoned.  If no unit matches the filter, then nothing happens (probably).  If absent, all units on the map are unstoned.&lt;br /&gt;
* '''[object]''': gives some unit an object and removes all items on the tile the unit is on.&lt;br /&gt;
** '''id''': when the object is picked up, a flag is set for ''id''.  The object cannot be picked up if a flag for ''id'' has been set.  This means that any object with an id can only be used once, even if first_time_only=no is set for the event. This restriction is per level. In a campaign objects with the same id can be assigned once per level.&lt;br /&gt;
** '''[effect]''': one or more effect elements may be listed.  See [[EffectWML]] for a description of [effect].&lt;br /&gt;
** '''duration''': if 'level', effects only last until the end of the level (note : 'level' is the scenario, so this doesn't mean it last until the unit levels-up).&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] the first unit found that matches the filter will be given the object.  If no unit matches the filter, then a message is displayed and the object is not removed.&lt;br /&gt;
** '''[then]''': a subtag that lets you execute actions if the filter conditions are met.  The most common action that should be inside here is a '''[removeitem]''' tag, but you could probably put any tags that otherwise work in a [then] tag.&lt;br /&gt;
** '''silent''': whether or not messages should be suppressed. Default is &amp;quot;no&amp;quot;.&lt;br /&gt;
** '''image''': the displayed image of the object.&lt;br /&gt;
** '''name''': (translatable) displayed as a caption of the image.&lt;br /&gt;
&lt;br /&gt;
** '''user_description''': {{DevFeature}} (translatable) displayed as a message of the image. In 1.4 and older versions this is just '''description'''; that will still be expected for compatibility.&lt;br /&gt;
** '''cannot_use_message''': (translatable) displayed instead of '''description''' if no unit passes the filter test.&lt;br /&gt;
** If you do not supply a filter, the object action will be applied to a unit at the location of the moveto event. Currently this isn't recommended as it is not clear that this will continue working this way. Instead it is better to explicitly include a location filter.&lt;br /&gt;
** The object action does not act on units in the recall list. There is a feature request in to allow this, but it is not clear whether or not it will be accepted.&lt;br /&gt;
* '''[remove_shroud]''': removes some shroud from the map for a certain side (only relevant for sides that have shroud=yes).&lt;br /&gt;
** '''side''': (default=1) the side for which to remove shroud.&lt;br /&gt;
** [[StandardLocationFilter]]: the range of tiles for which shroud should be removed.&lt;br /&gt;
* '''[place_shroud]''': places some shroud on the map for a certain side (only relevant for sides that have shroud=yes).&lt;br /&gt;
** '''side''': (default=1) the side for which to place shroud.&lt;br /&gt;
** [[StandardLocationFilter]]: the range of tiles on which shroud should be placed.&lt;br /&gt;
* '''[allow_undo]''': allows the player to undo the event that this tag is inside.  Has an effect only inside moveto events.  If the move is undone, only the position of the unit will be restored; any altered variables or changes to the game will remain changed after the move is undone.  It is up to the scenario designer to avoid abusing this command.&lt;br /&gt;
** Technically, if '''[allow_undo]''' is inside an '''[event]''' with ''first_time_only=yes'' (the default setting), and the user undoes the event, then the state of the game has changed in this way: the event will not fire a second time, even though the user undid the move the first time.&lt;br /&gt;
* '''[heal_unit]''' {{DevFeature}}: heal a unit. The variable '''$heal_amount''' will be set to the exact number of points healed (i.e can be lesser than the parameter '''amount''' if the unit is fully healed).&lt;br /&gt;
**  '''[filter]''': [[StandardUnitFilter]] the first unit matching the filter will be healed. &lt;br /&gt;
**  '''[secondary_unit_filter]''': [[StandardUnitFilter]] all the units matching the filter ''and'' having the ''heals'' ability will have their animation played (if ''animate'' is set to true).&lt;br /&gt;
**  '''amount''': the maximum points the unit will be healed.&lt;br /&gt;
**  '''animate''': a boolean which indicate if the healing animations must be played.&lt;br /&gt;
* '''[time_area]''' {{DevFeature}}: changes the schedule in the given locations.&lt;br /&gt;
** [[StandardLocationFilter]]: the locations to affect.&lt;br /&gt;
** [[TimeWML]]: the new schedule.&lt;br /&gt;
* '''[end_turn]''' {{DevFeature}}: end the current side's turn.&lt;br /&gt;
&lt;br /&gt;
== Useful Macros ==&lt;br /&gt;
There are some predefined macros that you find useful for direct actions. You can find a complete list along with a detailed explanation of how they work [http://www.wesnoth.org/macro-reference.xhtml here].&lt;br /&gt;
* '''{MOVE_UNIT}''': Moves a unit to another location in the map and the player sees the movement (unlike [teleport])&lt;br /&gt;
* '''{FULL_HEAL}''': Brings a unit to full HP&lt;br /&gt;
* '''{LOYAL_UNIT}''': Create a loyal unit&lt;br /&gt;
* '''{MODIFY_TERRAIN_MASK}''': Modify an area of terrain&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[InternalActionsWML]]&lt;br /&gt;
* [[InterfaceActionsWML]]&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Fosdem2009&amp;diff=27715</id>
		<title>Fosdem2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Fosdem2009&amp;diff=27715"/>
		<updated>2008-12-28T19:32:05Z</updated>

		<summary type="html">&lt;p&gt;CIB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General information ==&lt;br /&gt;
This page is meant to somehow coordinate the small Wesconf taking place at FOSDEM 2009. That is everyone attending should please list him/herself in the list of arrivals and stuff like this. FOSDEM 2009 will take place at the first weekend in Febuary 2009, on Saturday 7th and Sunday 8th.&lt;br /&gt;
&lt;br /&gt;
* Fosdem - http://fosdem.org/2009/&lt;br /&gt;
* [http://www.wesnoth.org/forum/viewtopic.php?p=283311#283311 List with phone numbers] (forum moderators only)&lt;br /&gt;
&lt;br /&gt;
== Schedule/Plans ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! (nick)name(s)&lt;br /&gt;
! Arrival&lt;br /&gt;
! Departure&lt;br /&gt;
! Accomodation&lt;br /&gt;
|-&lt;br /&gt;
| Ivanovic &amp;amp; Dragonking&lt;br /&gt;
| 6, late afternoon&lt;br /&gt;
| 8, evening&lt;br /&gt;
| Bruegel YH (not sure yet)&lt;br /&gt;
|-&lt;br /&gt;
| Mordante&lt;br /&gt;
| 6, afternoon (not sure yet)&lt;br /&gt;
| 8, evening&lt;br /&gt;
| Bruegel YH (not sure yet)&lt;br /&gt;
|-&lt;br /&gt;
| Boucman&lt;br /&gt;
| unknown&lt;br /&gt;
| unknown&lt;br /&gt;
| unknown&lt;br /&gt;
|-&lt;br /&gt;
| cib&lt;br /&gt;
| probably evening&lt;br /&gt;
| not sure yet&lt;br /&gt;
| not sure yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For accomodations please keep in mind that parking in the center of Brussels is really problematic. It might make sense to drive to the University where FOSDEM takes place, park there and take the bus into the town center (where some of the hotels/hostels are).&lt;br /&gt;
&lt;br /&gt;
On the official FOSDEM page [http://fosdem.org/2009/practical/accomodation some possible hotels/hostels] are listed.&lt;br /&gt;
&lt;br /&gt;
== Maps ==&lt;br /&gt;
* [http://tinyurl.com/3a65gr Bruegel YH]&lt;br /&gt;
* [http://tinyurl.com/35br9c Brussels Central (Train Station) → Bruegel YH]&lt;br /&gt;
* [http://tinyurl.com/37d9v4 Bruegel YH → Brussels Central (Train Station) → Novotel Grand Place]&lt;br /&gt;
* [http://tinyurl.com/2mzns6 Novotel Grand Place]&lt;br /&gt;
* [http://tinyurl.com/3dggg3 CrownePlaza (Europa)]&lt;br /&gt;
* [http://tinyurl.com/36epxj FOSDEM]&lt;br /&gt;
* [http://tinyurl.com/2w4bms Novotel Grand Place -&amp;gt; FOSDEM]&lt;br /&gt;
&lt;br /&gt;
== Transportation ==&lt;br /&gt;
Information about how to reach the FOSDEM is listed at the [http://fosdem.org/2009/practical/transportation official transportation subpage].&lt;br /&gt;
&lt;br /&gt;
Short version of how to get there for those that reside in Bruegel YH and Novotel Grand Place:&lt;br /&gt;
&lt;br /&gt;
* Enter Bus 71 (Debrouckere - Central Station (&amp;quot;Gare Centrale&amp;quot;) - Delta) somewhere at 'Central Station'&lt;br /&gt;
* Leave the bus at &amp;quot;ULB&amp;quot; (crossroads Ave. Adolphe Buyl - Sq. Deveze)&lt;br /&gt;
* Walk down Ave. Paul Heger on your right hand.&lt;br /&gt;
&lt;br /&gt;
== Wesnoth Hacking Room ==&lt;br /&gt;
&lt;br /&gt;
Wesnoth will not have a room of its own. Instead we will use one of the &amp;quot;general hacking rooms&amp;quot;. So far it is not sure which room it will be, if we do it like last year, it will be room number 115 in the building AW1. Last year this was the smaller of the two hacking rooms and we had no real problem with conquering (and holding) the first row in this room. There were not too many power outlets, so this year at least Ivanovic will bring one multi-outlet power strip plus some extension cable (5m or so). There is no wired network, everything wireless (and sometimes rather unstable!). Beside this you should bring laptops since there are no desktop machines available for hacking.&lt;br /&gt;
&lt;br /&gt;
Short version:&lt;br /&gt;
 AW1 - Room 115&lt;br /&gt;
&lt;br /&gt;
== FOSDEM 2008 ==&lt;br /&gt;
We were already at FOSDEM 2008, here something as reference:&lt;br /&gt;
&lt;br /&gt;
* [http://www.wesnoth.org/forum/viewtopic.php?p=283649#p283649 Forum topic (with group photo)]&lt;br /&gt;
* [http://www.wesnoth.org/wiki/Fosdem2008 2008 wiki page]&lt;br /&gt;
* [https://mail.gna.org/public/wesnoth-dev/2008-02/msg00078.html Summary of FOSDEM 2008 results]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Wesconf]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=DirectActionsWML&amp;diff=27694</id>
		<title>DirectActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=DirectActionsWML&amp;diff=27694"/>
		<updated>2008-12-23T03:02:43Z</updated>

		<summary type="html">&lt;p&gt;CIB: /* Direct actions */ added the new endlevel attributes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Direct actions ==&lt;br /&gt;
&lt;br /&gt;
Direct actions are actions that have a direct effect on gameplay.&lt;br /&gt;
&lt;br /&gt;
The following tags are actions:&lt;br /&gt;
* '''[endlevel]''': ends the scenario.&lt;br /&gt;
** '''result''': before the scenario is over, all events with ''name=result'' are triggered.  The message ''result_message'' with the heading ''result_heading'' (see [[LanguageWML]]) are displayed.  If ''result=victory'', the player progresses to the next level; if ''result=defeat'', the game returns to the main menu.  These last two are rarely used: ''result=continue'' behaves identically to ''result=victory'' except the player's gold is not reduced to 80%, and it does not bring up a &amp;quot;Victory&amp;quot; message or the gold changing message (since it doesn't change); ''result=continue_no_save'' works similarly, except the player is not asked whether to save the game, and is taken directly to the next scenario without any messages.  Unless ''result=defeat'', the following keys can also be used:&lt;br /&gt;
** '''bonus''': whether the player should get bonus gold (maximum possible gold that could have been earned by waiting the level out). The default is bonus=yes.&lt;br /&gt;
** '''carryover_report''': whether the player should receive a summary of the scenario outcome, the default is carryover_report=yes.&lt;br /&gt;
** '''save''': whether a start-of-scenario save should be created for the next scenario, the default is save=yes.&lt;br /&gt;
** '''linger_mode''': whether the game should switch to linger_mode before advancing to the next scenario, the default is linger_mode=yes.&lt;br /&gt;
** '''next_scenario''': (default specified in '''[scenario]''' tag) the ID of the next scenario that should be played.  All units that side 1 controls at this point become available for recall in ''next_scenario''.&lt;br /&gt;
** When the result is &amp;quot;victory&amp;quot; the following keys can be used:&lt;br /&gt;
*** '''carryover_percentage''' {{DevFeature}}: by default 80% of the gold is carried over to the next scenario, with this key the amount can be changed.&lt;br /&gt;
*** '''carryover_add''' {{DevFeature}}: if true the gold will be added to the starting gold the next scenario, if false the next scenario will start with the amount of the current scenario (after taxes) or the minimum in the next scenario. Default is false.&lt;br /&gt;
** '''music''' {{DevFeature}}: (default specified in '''[scenario]''' or '''[game_config]''' tags) a comma-separated list of music tracks from which one will be chosen and played once after any events related to the end of level result are executed; by default, victory_music is used on victory, and defeat_music on defeat.&lt;br /&gt;
** '''end_text''' {{DevFeature}}: Text that is shown centered in a black screen at the end of a campaign. Defaults to &amp;quot;The End&amp;quot;. Note that this has cumulative effects over the campaign - it persists even if the endlevel does not trigger the end of the campaign. See also [[CampaignWML]].&lt;br /&gt;
** '''end_text_duration''' {{DevFeature}}: Delay, in milliseconds, before displaying the game credits at the end of a campaign. In other words, for how much time '''end_text''' is displayed on screen. Defaults to 3500. Note that this has cumulative effects over the campaign - it persists even if the endlevel does not trigger the end of the campaign. See also [[CampaignWML]].&lt;br /&gt;
* '''[unit]''': places a unit on the map.  For syntax see [[SingleUnitWML]].{{Short Note:Predefined Macro|GENERIC_UNIT}}&lt;br /&gt;
* '''[recall]''': recalls a unit.  The unit is recalled free of charge, and is placed near the leader.&lt;br /&gt;
** [[StandardUnitFilter]]: the first matching unit will be recalled.  If no units match this tag is ignored.&lt;br /&gt;
** '''x,y''': the unit is placed here instead of next to the leader.&lt;br /&gt;
** '''show''': if not &amp;quot;no&amp;quot;, display the unit being recalled.&lt;br /&gt;
* '''[teleport]''': teleports a unit on map. {{Short Note:Predefined Macro|TELEPORT_UNIT}}&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] all units matching the filter will be teleported.&lt;br /&gt;
** '''x,y''': the position to teleport to.&lt;br /&gt;
* '''[terrain_mask]''': changes the terrain on the map.  See [[TerrainMaskWML]].&lt;br /&gt;
* '''[terrain]''': changes the terrain on the map.&lt;br /&gt;
** '''terrain''': the character of the terrain to use.  See [[TerrainCodesWML]] to see what letter a type of terrain uses.&lt;br /&gt;
** '''x,y''': the position (or range of positions) to change.&lt;br /&gt;
**  {{DevFeature}} '''layer''': (overlay|base|both, default=both) only change the specified layer.&lt;br /&gt;
**  {{DevFeature}} '''replace_if_failed''': (default=no) When replacing just one layer failed, try to replace the whole terrain. If '''terrain''' is an overlay only terrain, use the default_base as base layer. If the terrain has no default base, do nothing.&lt;br /&gt;
* '''[gold]''': give one side gold.&lt;br /&gt;
** '''amount''': the amount of gold to give.&lt;br /&gt;
** '''side''': (default=1) the number of the side to give the gold to.&lt;br /&gt;
* '''[unstore_unit]''': creates a unit from a game variable, and activates it on the playing field.  This must be a specific variable describing a unit, and may not be an array -- to unstore an entire array, iterate over it.  The variable is not cleared.  See also '''[store_unit]''', '''[while]''' and [clear_variable] in [[InternalActionsWML]]. Note units with a negative amount of hitpoints will be unstored with 1 hitpoint.&lt;br /&gt;
** '''variable''': the name of the variable.&lt;br /&gt;
** '''find_vacant''': whether the unit should be placed on the nearest vacant tile to its specified location.  If this is set to 'no'(default), then any unit on the same tile as the unit being unstored will be destroyed.&lt;br /&gt;
** '''text''': (translatable) floating text to display above the unit, such as a damage amount&lt;br /&gt;
** '''red''', '''green''', '''blue''': (default=0,0,0) the color to display the text in. Values vary from 0-255. You may find it convenient to use the {COLOR_HARM} or {COLOR_HEAL} macro instead. (Use {COLOR_HARM} or {COLOR_HEAL} instead of the whole red,green,blue= line.)&lt;br /&gt;
** '''advance''': if the XP has been modified then there will be tried to advance the unit, default true. &lt;br /&gt;
* '''[allow_recruit]''': allows a side to recruit units it couldn't previously recruit.&lt;br /&gt;
** '''type''': the types of units that the side can now recruit.&lt;br /&gt;
** '''side''': (default=1) the number of the side that is being allowed to recruit the units.&lt;br /&gt;
* '''[disallow_recruit]''': prevents a side from recruiting units it could previously recruit.&lt;br /&gt;
** '''type''': the types of units that the side can no longer recruit.&lt;br /&gt;
** '''side''': (default=1) the number of the side that may no longer recruit the units.&lt;br /&gt;
* '''[set_recruit]''': sets the units a side can recruit.&lt;br /&gt;
** '''recruit''': the types of units that the side can now recruit.&lt;br /&gt;
** '''side''': (default=1) the number of the side that is having its recruitment set.&lt;br /&gt;
* '''[modify_side]''': modifies some details of a given side in the middle of a scenario.  '''The following listed properties are the only properties that [modify_side] can affect!'&lt;br /&gt;
** '''side''': (default=1) the number of the side that is to be changed.&lt;br /&gt;
** '''income''': the income given at the begining of each turn.&lt;br /&gt;
** '''team_name''': the team in which the side plays the scenario.&lt;br /&gt;
** '''user_team_name''': a translatable string representing the team's description. This has no effect on alliances. Defaults to ''team_name''.&lt;br /&gt;
** '''gold''': the amount of gold the side owns.&lt;br /&gt;
** '''village_gold''': the income setting per village for the side.&lt;br /&gt;
** '''controller''': the identifier string of the side's controller. Uses the same syntax of the ''controller'' key in the [[SideWML|[side]]] tag.&lt;br /&gt;
** '''fog''': a boolean string (yes/no) describing the status of Fog for the side.&lt;br /&gt;
** '''shroud''': a boolean string describing the status of Shroud for the side.&lt;br /&gt;
** {{DevFeature}} '''[ai]''': replaces a side's AI parameters with the new specified ones. Uses the same syntax described in [[AiWML]].&lt;br /&gt;
* '''[modify_turns]''': modifies the turn limit in the middle of a scenario.&lt;br /&gt;
** '''value''': the new turn limit.&lt;br /&gt;
** '''add''': if used instead of ''value'', specifies the number of turns to add to the current limit (can be negative).&lt;br /&gt;
** {{DevFeature}} '''current''': changes the current turn number after applying turn limit modifications, if any. It is possible to change the current turn number to a greater one than the current only; also, it is not possible to change the turn number to exceed the turn limit.&lt;br /&gt;
* '''[capture_village]''': changes the ownership of a village.&lt;br /&gt;
** '''side''': the side that takes control of the village. If not given, the village will become neutral.&lt;br /&gt;
** '''x, y''': the location of the village.&lt;br /&gt;
* '''[kill]''': Removes all units (including units in a recall list) that match the filter from the game.&lt;br /&gt;
** [[StandardUnitFilter]]: selection criterion&lt;br /&gt;
** '''animate''': if 'yes', displays the unit dying (fading away).&lt;br /&gt;
** '''fire_event''': if 'yes', triggers any appropriate 'die' events (See [[EventWML]]). Note that any 'die' events triggered by this are executed immediately, interrupting the current event and thus causing the x1, y1, x2, and y2 variables to be reset for that 'die' event, which in turn causes those variables to be invalid for the remainder of this event. {{DevFeature}} 'last breath' events are also fired.&lt;br /&gt;
* '''[unstone]''': Unstones all units that match the filter.&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] all units matching the filter will be unstoned.  If no unit matches the filter, then nothing happens (probably).  If absent, all units on the map are unstoned.&lt;br /&gt;
* '''[object]''': gives some unit an object and removes all items on the tile the unit is on.&lt;br /&gt;
** '''id''': when the object is picked up, a flag is set for ''id''.  The object cannot be picked up if a flag for ''id'' has been set.  This means that any object with an id can only be used once, even if first_time_only=no is set for the event. This restriction is per level. In a campaign objects with the same id can be assigned once per level.&lt;br /&gt;
** '''[effect]''': one or more effect elements may be listed.  See [[EffectWML]] for a description of [effect].&lt;br /&gt;
** '''duration''': if 'level', effects only last until the end of the level (note : 'level' is the scenario, so this doesn't mean it last until the unit levels-up).&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] the first unit found that matches the filter will be given the object.  If no unit matches the filter, then a message is displayed and the object is not removed.&lt;br /&gt;
** '''[then]''': a subtag that lets you execute actions if the filter conditions are met.  The most common action that should be inside here is a '''[removeitem]''' tag, but you could probably put any tags that otherwise work in a [then] tag.&lt;br /&gt;
** '''silent''': whether or not messages should be suppressed. Default is &amp;quot;no&amp;quot;.&lt;br /&gt;
** '''image''': the displayed image of the object.&lt;br /&gt;
** '''name''': (translatable) displayed as a caption of the image.&lt;br /&gt;
&lt;br /&gt;
** '''user_description''': {{DevFeature}} (translatable) displayed as a message of the image. In 1.4 and older versions this is just '''description'''; that will still be expected for compatibility.&lt;br /&gt;
** '''cannot_use_message''': (translatable) displayed instead of '''description''' if no unit passes the filter test.&lt;br /&gt;
** If you do not supply a filter, the object action will be applied to a unit at the location of the moveto event. Currently this isn't recommended as it is not clear that this will continue working this way. Instead it is better to explicitly include a location filter.&lt;br /&gt;
** The object action does not act on units in the recall list. There is a feature request in to allow this, but it is not clear whether or not it will be accepted.&lt;br /&gt;
* '''[remove_shroud]''': removes some shroud from the map for a certain side (only relevant for sides that have shroud=yes).&lt;br /&gt;
** '''side''': (default=1) the side for which to remove shroud.&lt;br /&gt;
** [[StandardLocationFilter]]: the range of tiles for which shroud should be removed.&lt;br /&gt;
* '''[place_shroud]''': places some shroud on the map for a certain side (only relevant for sides that have shroud=yes).&lt;br /&gt;
** '''side''': (default=1) the side for which to place shroud.&lt;br /&gt;
** [[StandardLocationFilter]]: the range of tiles on which shroud should be placed.&lt;br /&gt;
* '''[allow_undo]''': allows the player to undo the event that this tag is inside.  Has an effect only inside moveto events.  If the move is undone, only the position of the unit will be restored; any altered variables or changes to the game will remain changed after the move is undone.  It is up to the scenario designer to avoid abusing this command.&lt;br /&gt;
** Technically, if '''[allow_undo]''' is inside an '''[event]''' with ''first_time_only=yes'' (the default setting), and the user undoes the event, then the state of the game has changed in this way: the event will not fire a second time, even though the user undid the move the first time.&lt;br /&gt;
* '''[heal_unit]''' {{DevFeature}}: heal a unit. The variable '''$heal_amount''' will be set to the exact number of points healed (i.e can be lesser than the parameter '''amount''' if the unit is fully healed).&lt;br /&gt;
**  '''[filter]''': [[StandardUnitFilter]] the first unit matching the filter will be healed. &lt;br /&gt;
**  '''[secondary_unit_filter]''': [[StandardUnitFilter]] all the units matching the filter ''and'' having the ''heals'' ability will have their animation played (if ''animate'' is set to true).&lt;br /&gt;
**  '''amount''': the maximum points the unit will be healed.&lt;br /&gt;
**  '''animate''': a boolean which indicate if the healing animations must be played.&lt;br /&gt;
* '''[time_area]''' {{DevFeature}}: changes the schedule in the given locations.&lt;br /&gt;
** [[StandardLocationFilter]]: the locations to affect.&lt;br /&gt;
** [[TimeWML]]: the new schedule.&lt;br /&gt;
* '''[end_turn]''' {{DevFeature}}: end the current side's turn.&lt;br /&gt;
&lt;br /&gt;
== Useful Macros ==&lt;br /&gt;
There are some predefined macros that you find useful for direct actions. You can find a complete list along with a detailed explanation of how they work [http://www.wesnoth.org/macro-reference.xhtml here].&lt;br /&gt;
* {{LinkMacro|MOVE_UNIT}}: Moves a unit to another location in the map and the player sees the movement (unlike [teleport])&lt;br /&gt;
* {{LinkMacro|FULL_HEAL}}: Brings a unit to full HP&lt;br /&gt;
* {{LinkMacro|LOYAL_UNIT}}: Create a loyal unit&lt;br /&gt;
* {{LinkMacro|MODIFY_TERRAIN_MASK}}: Modify an area of terrain&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[InternalActionsWML]]&lt;br /&gt;
* [[InterfaceActionsWML]]&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=27677</id>
		<title>InternalActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=27677"/>
		<updated>2008-12-21T11:48:01Z</updated>

		<summary type="html">&lt;p&gt;CIB: /* [event] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Internal actions ==&lt;br /&gt;
&lt;br /&gt;
Internal actions are actions that WML uses internally that do not directly affect gameplay, for example storing a variable.&lt;br /&gt;
&lt;br /&gt;
The internal actions '''[if]''', '''[while]''', and '''[event]''' describe when/whether sets of actions should be executed.&lt;br /&gt;
&lt;br /&gt;
== [if] ==&lt;br /&gt;
&lt;br /&gt;
Executes different sets of actions based on whether the conditions described in the condition tags are true or not.&lt;br /&gt;
&lt;br /&gt;
Condition tags:&lt;br /&gt;
* '''[have_unit]''': a unit passing this filter with &amp;gt;0 HP exists&lt;br /&gt;
** [[StandardUnitFilter]] (almost... '''Note:''' does not check for matching units in the recall list)&lt;br /&gt;
** '''count''' {{DevFeature}}: if used, the given number of units must match the filter. Accepts a number, range, or comma separated range; default &amp;quot;1-99999&amp;quot; &lt;br /&gt;
&lt;br /&gt;
* '''[have_location]''': a location passing this filter exists &lt;br /&gt;
** [[StandardLocationFilter]]&lt;br /&gt;
** '''count''' {{DevFeature}}: if used, the given number of location must match the filter. Accepts a number, range, or comma separated range; default &amp;quot;1-99999&amp;quot; &lt;br /&gt;
&lt;br /&gt;
* '''[and]''': If an [and] is present, all must evaluate to true in order for the [if] to evaluate true. Useful as a bracket for complex conditions, but not strictly necessary.&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, [and] evaluates to true.&lt;br /&gt;
&lt;br /&gt;
* '''[or]''': If an [or] is present, one must evaluate to true in order for the [if] to evaluate true. ([[AdvancedConditionalWML|Example]])&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, '''[or]''' evaluates to true. &lt;br /&gt;
&lt;br /&gt;
* '''[not]''': If a [not] is present, none must evaluate to true in order for the [if] to evaluate true.&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, [not] evaluates to false.&lt;br /&gt;
&lt;br /&gt;
* '''[and],[or],[not]''': all top-level filters will support in-order conditional handling of and, or, and not. One important thing to remember is, if you have multiple [or]s, you should not wrap your first conditional statement into an [or] block.&lt;br /&gt;
&lt;br /&gt;
* '''[variable]''': tests something about the value of a WML variable (see [[VariablesWML]])&lt;br /&gt;
** '''name''': the name of the variable to test the value of&amp;lt;br&amp;gt;Only one of the following keys should be used for comparing the value of the variable to another value:&lt;br /&gt;
** '''equals''': $name is equal (string wise) to this&lt;br /&gt;
** '''not_equals''': $name is not equal to this&lt;br /&gt;
** '''greater_than''': $name is numerically greater than this&lt;br /&gt;
** '''less_than''': $name is less than this&lt;br /&gt;
** '''greater_than_equal_to''': $name is not less than this&lt;br /&gt;
** '''less_than_equal_to''': $name is not greater than this&lt;br /&gt;
** '''numerical_not_equals''': $name is greater than or less than this&lt;br /&gt;
** '''numerical_equals''': $name is not greater than or less than this&lt;br /&gt;
** '''boolean_equals''': $name has the same boolean value (e.g. off, false, 0, no)&lt;br /&gt;
** '''contains''': $name contains this string&lt;br /&gt;
** {{DevFeature}} '''boolean_not_equals''': $name has not the same boolean value. Strictly a syntactic shortcut for the following syntax that served its absence in 1.4:&lt;br /&gt;
  [not]&lt;br /&gt;
    [variable]&lt;br /&gt;
      name=...&lt;br /&gt;
      boolean_equals=...&lt;br /&gt;
    [/variable]&lt;br /&gt;
  [/not]&lt;br /&gt;
&lt;br /&gt;
After condition tags:&lt;br /&gt;
* '''[then]''': contains a set of action tags which should be executed if all conditions are true, or all conditions in any single [or] are true&lt;br /&gt;
* '''[else]''': contains a set of action tags which should be executed if any condition is false, and all [or] tags are false&lt;br /&gt;
&lt;br /&gt;
== [switch] {{DevFeature}} ==&lt;br /&gt;
&lt;br /&gt;
Executes different sets of action based on the value of a variable.&lt;br /&gt;
  [switch]&lt;br /&gt;
     variable=foo&lt;br /&gt;
     [case]&lt;br /&gt;
        value=&amp;quot;A&amp;quot;&lt;br /&gt;
        ... WML if foo=A ...&lt;br /&gt;
     [/case]&lt;br /&gt;
     [case]&lt;br /&gt;
        value=&amp;quot;B&amp;quot;&lt;br /&gt;
        ... WML if foo=B ...&lt;br /&gt;
     [/case]&lt;br /&gt;
     [else]&lt;br /&gt;
        ... WML if not foo=A nor foo=B ...&lt;br /&gt;
     [/else]&lt;br /&gt;
  [/switch]&lt;br /&gt;
&lt;br /&gt;
* '''variable''': name of the variable to check.&lt;br /&gt;
* '''[case]''': Case block. Contains:&lt;br /&gt;
** '''value''': value to test the variable against.&lt;br /&gt;
** the action WML to execute if the variable matches the value (rest of the block).&lt;br /&gt;
* '''[else]''': Block of action WML to execute if no '''[case]''' block matches.&lt;br /&gt;
&lt;br /&gt;
== [while] ==&lt;br /&gt;
&lt;br /&gt;
Executes commands if all conditions are true.&lt;br /&gt;
Continues to execute them until a condition is not true.&lt;br /&gt;
&lt;br /&gt;
Executes a maximum of 1024 iterations per invocation.&lt;br /&gt;
Condition tags are the same as for [if]&lt;br /&gt;
&lt;br /&gt;
After condition tags:&lt;br /&gt;
* '''[do]''': contains actions that should be executed repeatedly until some condition is false.&lt;br /&gt;
&lt;br /&gt;
The '''[while]''' tag is useful for iterating over an array.&lt;br /&gt;
An array is a list of values.&lt;br /&gt;
The ''number''th value in the array '''array''' is stored in the WML variable '''''array''[number]'''.&lt;br /&gt;
Note that if '''number''' is the value of the variable '''variable''',&lt;br /&gt;
the expression '''$''array''[$variable]''' will return the ''number''th value in ''array''.&lt;br /&gt;
The macros 'FOREACH' and 'NEXT' ([[UtilWML]]) can be used to iterate over an array;&lt;br /&gt;
i.e. run a set of actions once per element of the array.&lt;br /&gt;
&lt;br /&gt;
=== {FOREACH} ===&lt;br /&gt;
If you wish to use a &amp;quot;for-each&amp;quot; iteration format (useful for example when you want to do an iteration for each row in a table) you can use the {{LinkMacro|FOREACH}} and {{LinkMacro|NEXT}} predefined macros.&lt;br /&gt;
&lt;br /&gt;
=== {REPEAT} ===&lt;br /&gt;
You can use the {{LinkMacro|REPEAT}} macro to perform a quick iteration for a number of times you specify.&lt;br /&gt;
&lt;br /&gt;
== [event] ==&lt;br /&gt;
&lt;br /&gt;
This adds a new event to the scenario.&lt;br /&gt;
The event is in the normal format for an '''[event]''' tag (See [[EventWML]]).&lt;br /&gt;
This is useful if you want an event that can only be triggered when a prior event is fulfilled&lt;br /&gt;
&lt;br /&gt;
These tags describe actions that affect the values of WML variables&lt;br /&gt;
(see [[VariablesWML]] for information on WML variables,&lt;br /&gt;
and [[UtilWML]] for convenient macro shortcuts for some of these):&lt;br /&gt;
* '''[set_variable]''': manipulates a WML variable. {{Note:Predefined Macro|VARIABLE}} &lt;br /&gt;
** '''name''': the name of the variable to manipulate&lt;br /&gt;
** '''value''': set the variable to the given value (can be numeric or string). This only interprets dollars signs if it is the very first character, and then the entire value must be a simple variable name. (in 1.3.2, has the same effect as format. Use literal for no substitution)&lt;br /&gt;
** '''literal''': set the variable to the given value (can be numeric or string). This does not interpret any dollars signs.&lt;br /&gt;
** '''format''': set the variable to the given value. Interprets the dollar sign to a higher degree than most actions. (see [[VariablesWML]])&lt;br /&gt;
** '''to_variable''': Fully processes its value as in ''format'', and then gets the variable with that name.&lt;br /&gt;
** '''add''': add the given amount to the variable. To subtract, add a negative number.&lt;br /&gt;
** '''multiply''': multiply the variable by the given number. To divide, multiply by the inverse eg: 4/2 = 4 * 1/2 = 4 * 0.5. To negate, multiply by -1. The result is an integer.&lt;br /&gt;
** '''divide''': divide the variable by the given number. The result is an integer.&lt;br /&gt;
** '''modulo''': returns the remainder of an integer division. Both variables need to be an integer, the result is also an integer. eg 5 % 2 = 1.&lt;br /&gt;
** '''random''': the variable will be randomly set.&amp;lt;br&amp;gt;You may provide a comma separated list of possibilities, e.g. 'random=Bob,Bill,Bella'.&amp;lt;br&amp;gt;You may provide a range of numbers (integers), e.g. 'random=3..5'.&amp;lt;br&amp;gt;You may combine these, e.g. 'random=100,1..9', in which case there would be 1/10th chance of getting 100, just like for each of 1 to 9. Dollars signs are only normally interpreted here, so it is harder to have a dynamically determined range. You would need to create the random-string with ''format''.&lt;br /&gt;
** '''rand''': does the same as random, but has better MP support. See [[BuildingMultiplayerExamples]] for more info on the MP case. '''It is highly recommended that you use this feature for randomization.'''&lt;br /&gt;
** '''time=stamp''': Retrieves a timestamp in milliseconds since wesnoth was started, can be used as timing aid. Don't try to use this as random value in MP since it will cause an OOS.&lt;br /&gt;
** {{DevFeature}} '''string_length''': Retrieves the length in characters of the string passed as this attribute's value; such string is parsed and variable substitution applied automatically (see [[VariablesWML]] for details).&lt;br /&gt;
** {{DevFeature}} '''[join]''' joins an array of strings to a textual list&lt;br /&gt;
***variable: name of the array&lt;br /&gt;
***key: the key of each array element(array[$i].foo) in which the strings are stored&lt;br /&gt;
***separator: separator to connect the elements&lt;br /&gt;
***remove_empty: whether to ignore empty elements&lt;br /&gt;
&lt;br /&gt;
* {{DevFeature}} '''[set_variables]''': manipulates a WML array&lt;br /&gt;
** '''name''': the name of the container to manipulate&lt;br /&gt;
** '''mode''': one of the following values:&lt;br /&gt;
***replace: will clean the array '''name''' and replace it with given data&lt;br /&gt;
***append: will append given data to the current array&lt;br /&gt;
***merge: will merge in the given data into '''name'''&lt;br /&gt;
***insert: will insert the given data at the index specified in the '''name''' attribute, such as name=my_array[1]. The default index is zero, which will insert to the front of the array. '''Note:''' if an invalid index is used, empty containers will be created before the insertion is performed. In other words, do not attempt to insert at an index unless the variable already contains data at that index. This limitation may be removed in future versions.&lt;br /&gt;
** '''to_variable''': data will be set to the given array&lt;br /&gt;
** '''[value]''': the WML inside the [value] tags will be stored in data, variables will be interpolated directly, use $| in order to escape the $ sign, you can store arrays of WML by supplying multiple [value] tags, example:&lt;br /&gt;
 [set_variables]&lt;br /&gt;
  name=arr&lt;br /&gt;
  mode=replace&lt;br /&gt;
  [value]&lt;br /&gt;
   foo=bar&lt;br /&gt;
  [/value]&lt;br /&gt;
  [value]&lt;br /&gt;
   foo=more&lt;br /&gt;
  [/value]&lt;br /&gt;
 [/set_variables]&lt;br /&gt;
 {DEBUG_MSG $arr[0].foo}&lt;br /&gt;
 {DEBUG_MSG $arr[1].foo}&lt;br /&gt;
 =&amp;gt;bar; more&lt;br /&gt;
** '''[literal]''': same as '''[value]''', but variables will not be substituted, '''[literal]''' and '''[value]''' can not be used in the same [set_variables] tag, i.e. you can not create arrays by piling a mix of '''[value]''' and '''[literal]''' tags&lt;br /&gt;
**'''[split]''' splits a textual list into an array which will then be set to data&lt;br /&gt;
***list: textual list to split&lt;br /&gt;
***key: the key of each array element(array[$i].foo) in which the strings are stored&lt;br /&gt;
***separator: separator to separate the elements&lt;br /&gt;
***remove_empty: wether to ignore empty elements&lt;br /&gt;
&lt;br /&gt;
* {{DevFeature}} '''[fire_event]''': trigger a WML event&lt;br /&gt;
** '''name''': the name of event to trigger&lt;br /&gt;
** '''[primary_unit]''': primary unit for the event (usually the attacker) (optional)&lt;br /&gt;
** '''[secondary_unit]''': secondary unit for the event (usually the defender) (optional)&lt;br /&gt;
** both tags have some keys which are optional :&lt;br /&gt;
*** '''x,y''': location of this unit&lt;br /&gt;
** '''[primary_attack]''': information passed to the primary attack filter and $weapon variable on the new event.&lt;br /&gt;
** '''[secondary_attack]''': information passed to the second attack filter and $second_weapon variable on the new event.&lt;br /&gt;
&lt;br /&gt;
* '''[store_unit]''': stores details about units into game variables.&amp;lt;br&amp;gt;Common usage is to manipulate a unit by using [store_unit] to store it into a variable, followed by manipulation of the variable, and then [unstore_unit] to re-create the unit with the modified variables.&amp;lt;br&amp;gt;Note: stored units also exist on the field, and modifying the stored variable will not automatically change the stats of the units. You need to use [unstore_unit]. See also [unstore_unit], [[DirectActionsWML]], and '''FOREACH''', [[UtilWML]]&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] all units matching this filter will be stored. If there are multiple units, they will be stored into an array of variables.&lt;br /&gt;
** '''variable''': the name of the variable into which to store the unit(s)&lt;br /&gt;
** '''mode''': defaults to ''always_clear'', which clears the variable, whether or not a match is found. If mode is set to ''replace'', the variable will only be cleared if a match is found. If mode is set to ''append'', the variable will not be cleared.&lt;br /&gt;
** '''kill''': if 'yes' the units that are stored will be removed from play. This is useful for instance to remove access to a player's recall list, with the intent to restore the recall list later.&lt;br /&gt;
:When a unit is stored, the following values may be manipulated with '''[set_variable]'''&lt;br /&gt;
:* description&lt;br /&gt;
:* experience&lt;br /&gt;
:* facing&lt;br /&gt;
:* gender&lt;br /&gt;
:* canrecruit&lt;br /&gt;
:* overlays&lt;br /&gt;
:* goto_x&lt;br /&gt;
:* goto_y&lt;br /&gt;
:* hitpoints&lt;br /&gt;
:* moves&lt;br /&gt;
:* resting&lt;br /&gt;
:* side&lt;br /&gt;
:* type&lt;br /&gt;
:* unrenamable&lt;br /&gt;
:* upkeep&lt;br /&gt;
:* user_description&lt;br /&gt;
:* x&lt;br /&gt;
:* y&lt;br /&gt;
:* [variables]&lt;br /&gt;
:* [status]&lt;br /&gt;
:* [modifications]&lt;br /&gt;
Variables, status, and modifications are children of the stored unit variable.  Example:&lt;br /&gt;
 [set_variable]&lt;br /&gt;
 name=unit_store.status.poisoned&lt;br /&gt;
 value=yes&lt;br /&gt;
 [/set_variable]&lt;br /&gt;
&lt;br /&gt;
:All keys and tags in the unit definition may be manipulated, including some others.  Here is a sample list.  If you have a doubt about what keys are valid or what the valid value range is for each key, code a [store_unit] event, save the game, and examine what keys are in the file.&lt;br /&gt;
:* advances_to&lt;br /&gt;
:* alignment&lt;br /&gt;
:* alpha&lt;br /&gt;
:* attacks_left&lt;br /&gt;
:* canrecruit&lt;br /&gt;
:* controller&lt;br /&gt;
:* cost&lt;br /&gt;
:* description&lt;br /&gt;
:* experience&lt;br /&gt;
:* facing&lt;br /&gt;
:* flying&lt;br /&gt;
:* fog&lt;br /&gt;
:* gender&lt;br /&gt;
:* get_hit_sound&lt;br /&gt;
:* gold&lt;br /&gt;
:* goto_x&lt;br /&gt;
:* goto_y&lt;br /&gt;
:* hitpoints&lt;br /&gt;
:* id&lt;br /&gt;
:* image&lt;br /&gt;
:* image_defensive&lt;br /&gt;
:* income&lt;br /&gt;
:* language_name (same as the name key in the unit config)&lt;br /&gt;
:* level&lt;br /&gt;
:* max_attacks&lt;br /&gt;
:* max_experience&lt;br /&gt;
:* max_hitpoints&lt;br /&gt;
:* max_moves&lt;br /&gt;
:* movement&lt;br /&gt;
:* movement_type&lt;br /&gt;
:* moves&lt;br /&gt;
:* race&lt;br /&gt;
:* resting&lt;br /&gt;
:* shroud&lt;br /&gt;
:* side&lt;br /&gt;
:* type&lt;br /&gt;
:* unit_description&lt;br /&gt;
:* unrenamable&lt;br /&gt;
:* usage&lt;br /&gt;
:* value&lt;br /&gt;
:* x&lt;br /&gt;
:* y&lt;br /&gt;
:* zoc&lt;br /&gt;
:* [advancement]&lt;br /&gt;
:* [/advancement]&lt;br /&gt;
:* [movement_costs]&lt;br /&gt;
:* [/movement_costs]&lt;br /&gt;
:* [defense]&lt;br /&gt;
:* [/defense]&lt;br /&gt;
:* [resistance]&lt;br /&gt;
:* [/resistance]&lt;br /&gt;
:* [variables]&lt;br /&gt;
:* [/variables]&lt;br /&gt;
:* [status]&lt;br /&gt;
:* [/status]&lt;br /&gt;
:* [attack]&lt;br /&gt;
:* [/attack]&lt;br /&gt;
:* [modifications_description]&lt;br /&gt;
:* [/modifications_description]&lt;br /&gt;
:* [modifications]&lt;br /&gt;
:* [/modifications]&lt;br /&gt;
&lt;br /&gt;
* '''[store_starting_location]''': Stores the starting location of a side's leader in a variable. The variable is a composite type which will have members 'x', 'y', 'terrain' (the terrain type for a starting location is always 'K' unless it has been changed) and {{DevFeature}} 'owner_side' (villages only)&lt;br /&gt;
** '''side''': the side whose starting location is to be stored&lt;br /&gt;
** '''variable''': (default='location'): the name of the variable to store the location in&lt;br /&gt;
* '''[store_locations]''': Stores a series of locations that pass certain criteria into an array. Each member of the array has members 'x' and 'y' (the position) and 'terrain' (the terrain type) and {{DevFeature}} 'owner_side' (villages only).&lt;br /&gt;
** [[StandardLocationFilter]]: a location or location range which specifies the locations to store. You must specify this or no locations will be stored.&lt;br /&gt;
** '''variable''': the name of the variable (array) into which to store the locations&lt;br /&gt;
** '''terrain''': a comma-sperated list of terrain codes. (See [[TerrainCodesWML]] for possible values.) If present, locations will only be chosen if the code for the terrain type of that location is listed.&lt;br /&gt;
** '''radius''': if present, any locations which are within '''radius''' hexes of the location filter will also be stored&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] only locations with units on them that match the filter will be stored. Use a blank filter to only store locations with units.&lt;br /&gt;
* '''[store_villages]''': Stores a series of locations of villages that pass certain criteria into an array. Each member of the array has members 'x' and 'y' (the position) and 'terrain' (the terrain type) and {{DevFeature}} 'owner_side'.&lt;br /&gt;
** '''owner_side''': a side number. If present, only villages owned by this side will be choosen. If owner_side=0, store the unowned villages. &lt;br /&gt;
** '''variable''': the name of the variable (array) into which to store the locations&lt;br /&gt;
** '''terrain''': a series of terrain characters. (See [[TerrainLettersWML]] for possible values.) If present, villages will only be chosen if the terrain code of the terrain type of that location is listed.  You may give a comma separated list of terrains.&lt;br /&gt;
* '''[store_gold]''': Stores a side's gold into a variable.&lt;br /&gt;
** '''side''': (default=1) the side for which the gold should be stored&lt;br /&gt;
** '''variable''': (default='gold') the name of the variable to store the gold in&lt;br /&gt;
* '''[store_side]''': stores information about a certain side in a variable. The variable will contain the member variables 'name', 'team_name', 'gold' and 'income', 'fog', 'shroud', 'user_team_name', 'colour', 'controller', 'village_gold' and 'recruit'.)&lt;br /&gt;
** '''side''': the side whose information should be stored&lt;br /&gt;
** '''variable''': the name of the variable to store the information in&lt;br /&gt;
* '''[clear_variable]''': This will delete the given variable or array. This is good to use to clean up the set of variables -- e.g. a well-behaved scenario will delete any variables that shouldn't be kept for the next scenario before the end of the scenario.&amp;lt;br&amp;gt; Tags and variables of stored units can also be cleared, meaning that [trait]s and [object]s, for example, can be removed.&lt;br /&gt;
** '''name''': the name of the variable to clear, multiple comma-separated variable names can be given.&lt;br /&gt;
* '''[role]''': tries to find a unit to assign a role to.&amp;lt;br&amp;gt;This is useful if you want to choose a non-major character to say some things during the game. Once a role is assigned, you can use '''role=''' in a unit filter to identify the unit with that role (See [[FilterWML]]).&amp;lt;br&amp;gt;However, there is no guarantee that roles will ever be assigned. You can use '''[have_unit]''' (see [if]) to see whether a role was assigned. This tag uses a [[StandardUnitFilter]] with the modification to order the search by type, mark only the first unit found with the role, and the role attribute is not used in the search. If for some reason you want to search for units that have or don't have existing roles, you can use one or more [not] filters. The will check recall lists in addition to units on the map. In normal use, you will probably want to include a ''side'' attribute to force the unit to be on a particular side.&lt;br /&gt;
** '''role''': the value to store as the unit's role. This role is not used in the [[StandardUnitFilter]] when doing the search for the unit to assign this role to.&lt;br /&gt;
** '''type''': a comma-separated list of possible types the unit can be. If any types are given, then units will be searched by type in the order listed. If no type is given, then no particular order with respect to type is guaranteed.&lt;br /&gt;
* {{DevFeature}} '''[store_map_dimensions]''': Stores the map dimensions in a variable.&lt;br /&gt;
** '''variable''': the name of the variable where the values will be saved into. If it is skipped, a variable 'map_size' is used, and its contents overridden, if they existed already. The result is a container variable, with members ''width'' and ''height''.&lt;br /&gt;
* {{DevFeature}} '''[insert_tag]''': inserts a variable as WML&lt;br /&gt;
**'''name''': the [&amp;quot;name&amp;quot;] to be given to the tag&lt;br /&gt;
**'''variable''': name of the variable to be inserted&lt;br /&gt;
* {{DevFeature}} '''[store_time_of_day]''': stores time of day information from the current scenario into a WML variable container.&lt;br /&gt;
** '''variable''': (default='time_of_day') name of the container on which to store the information. The container will be filled with the same attributes found on [[TimeWML]].&lt;br /&gt;
** '''turn''': (defaults to the current turn number) changes the turn number for which time of day information should be retrieved.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[VariablesWML]]&lt;br /&gt;
* [[DirectActionsWML]]&lt;br /&gt;
* [[InterfaceActionsWML]]&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=23680</id>
		<title>InternalActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=23680"/>
		<updated>2008-03-16T11:01:27Z</updated>

		<summary type="html">&lt;p&gt;CIB: /* [event] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Internal actions ==&lt;br /&gt;
&lt;br /&gt;
Internal actions are actions that WML uses internally that do not directly affect gameplay, for example storing a variable.&lt;br /&gt;
&lt;br /&gt;
The internal actions '''[if]''', '''[while]''', and '''[event]''' describe when/whether sets of actions should be executed.&lt;br /&gt;
&lt;br /&gt;
== [if] ==&lt;br /&gt;
&lt;br /&gt;
Executes different sets of actions based on whether the conditions described in the condition tags are true or not.&lt;br /&gt;
&lt;br /&gt;
Condition tags:&lt;br /&gt;
* '''[have_unit]''': a unit passing this filter with &amp;gt;0 HP exists&lt;br /&gt;
** [[StandardUnitFilter]] (almost... '''Note:''' does not check for matching units in the recall list)&lt;br /&gt;
&lt;br /&gt;
* '''[have_location]''': a location passing this filter exists &lt;br /&gt;
** [[StandardLocationFilter]]&lt;br /&gt;
&lt;br /&gt;
* '''[and]''': If an [and] is present, all must evaluate to true in order for the [if] to evaluate true. Useful as a bracket for complex conditions, but not strictly necessary.&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, [and] evaluates to true.&lt;br /&gt;
&lt;br /&gt;
* '''[or]''': If an [or] is present, one must evaluate to true in order for the [if] to evaluate true. ([[AdvancedConditionalWML|Example]])&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, '''[or]''' evaluates to true. &lt;br /&gt;
&lt;br /&gt;
* '''[not]''': If a [not] is present, none must evaluate to true in order for the [if] to evaluate true.&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, [not] evaluates to false.&lt;br /&gt;
&lt;br /&gt;
* '''[and],[or],[not]''': all top-level filters will support in-order conditional handling of and, or, and not. One important thing to remember is, if you have multiple [or]s, you should not wrap your first conditional statement into an [or] block.&lt;br /&gt;
&lt;br /&gt;
* '''[variable]''': tests something about the value of a WML variable (see [[VariablesWML]])&lt;br /&gt;
** '''name''': the name of the variable to test the value of&amp;lt;br&amp;gt;Only one of the following keys should be used for comparing the value of the variable to another value:&lt;br /&gt;
** '''equals''': $name is equal (string wise) to this&lt;br /&gt;
** '''not_equals''': $name is not equal to this&lt;br /&gt;
** '''greater_than''': $name is numerically greater than this&lt;br /&gt;
** '''less_than''': $name is less than this&lt;br /&gt;
** '''greater_than_equal_to''': $name is not less than this&lt;br /&gt;
** '''less_than_equal_to''': $name is not greater than this&lt;br /&gt;
** '''numerical_not_equals''': $name is greater than or less than this&lt;br /&gt;
** '''numerical_equals''': $name is not greater than or less than this&lt;br /&gt;
** '''boolean_equals''': $name has the same boolean value (e.g. off, false, 0, no)&lt;br /&gt;
** '''contains''': $name contains this string&lt;br /&gt;
** {{DevFeature}} '''boolean_not_equals''': $name has not the same boolean value. Strictly a syntactic shortcut for the following syntax that served its absence in 1.4:&lt;br /&gt;
  [not]&lt;br /&gt;
    [variable]&lt;br /&gt;
      name=...&lt;br /&gt;
      boolean_equals=...&lt;br /&gt;
    [/variable]&lt;br /&gt;
  [/not]&lt;br /&gt;
&lt;br /&gt;
After condition tags:&lt;br /&gt;
* '''[then]''': contains a set of action tags which should be executed if all conditions are true, or all conditions in any single [or] are true&lt;br /&gt;
* '''[else]''': contains a set of action tags which should be executed if any condition is false, and all [or] tags are false&lt;br /&gt;
&lt;br /&gt;
== [switch] {{DevFeature}} ==&lt;br /&gt;
&lt;br /&gt;
Executes different sets of action based on the value of a variable.&lt;br /&gt;
  [switch]&lt;br /&gt;
     variable=foo&lt;br /&gt;
     [case]&lt;br /&gt;
        value=&amp;quot;A&amp;quot;&lt;br /&gt;
        ... WML if foo=A ...&lt;br /&gt;
     [/case]&lt;br /&gt;
     [case]&lt;br /&gt;
        value=&amp;quot;B&amp;quot;&lt;br /&gt;
        ... WML if foo=B ...&lt;br /&gt;
     [/case]&lt;br /&gt;
     [else]&lt;br /&gt;
        ... WML if not foo=A nor foo=B ...&lt;br /&gt;
     [/else]&lt;br /&gt;
  [/switch]&lt;br /&gt;
&lt;br /&gt;
* '''variable''': name of the variable to check.&lt;br /&gt;
* '''[case]''': Case block. Contains:&lt;br /&gt;
** '''value''': value to test the variable against.&lt;br /&gt;
** the action WML to execute if the variable matches the value (rest of the block).&lt;br /&gt;
* '''[else]''': Block of action WML to execute if no '''[case]''' block matches.&lt;br /&gt;
&lt;br /&gt;
== [while] ==&lt;br /&gt;
&lt;br /&gt;
Executes commands if all conditions are true.&lt;br /&gt;
Continues to execute them until a condition is not true.&lt;br /&gt;
&lt;br /&gt;
Executes a maximum of 1024 iterations per invocation.&lt;br /&gt;
Condition tags are the same as for [if]&lt;br /&gt;
&lt;br /&gt;
After condition tags:&lt;br /&gt;
* '''[do]''': contains actions that should be executed repeatedly until some condition is false.&lt;br /&gt;
&lt;br /&gt;
The '''[while]''' tag is useful for iterating over an array.&lt;br /&gt;
An array is a list of values.&lt;br /&gt;
The ''number''th value in the array '''array''' is stored in the WML variable '''''array''[number]'''.&lt;br /&gt;
Note that if '''number''' is the value of the variable '''variable''',&lt;br /&gt;
the expression '''$''array''[$variable]''' will return the ''number''th value in ''array''.&lt;br /&gt;
The macros 'FOREACH' and 'NEXT' ([[UtilWML]]) can be used to iterate over an array;&lt;br /&gt;
i.e. run a set of actions once per element of the array.&lt;br /&gt;
&lt;br /&gt;
=== {FOREACH} ===&lt;br /&gt;
If you wish to use a &amp;quot;for-each&amp;quot; iteration format (useful for example when you want to do an iteration for each row in a table) you can use the [http://www.wesnoth.org/misc/macro-reference.xhtml FOREACH] and [http://www.wesnoth.org/misc/macro-reference.xhtml NEXT] prededined macros.&lt;br /&gt;
&lt;br /&gt;
=== {REPEAT} ===&lt;br /&gt;
You can use the REPEAT macro to perform a quick iteration for a number of times you specify.&lt;br /&gt;
&lt;br /&gt;
== [event] ==&lt;br /&gt;
&lt;br /&gt;
This adds a new event to the scenario.&lt;br /&gt;
The event is in the normal format for an '''[event]''' tag (See [[EventWML]]).&lt;br /&gt;
This is useful if you want an event that can only be triggered when a prior event is fulfilled&lt;br /&gt;
&lt;br /&gt;
These tags describe actions that affect the values of WML variables&lt;br /&gt;
(see [[VariablesWML]] for information on WML variables,&lt;br /&gt;
and [[UtilWML]] for convenient macro shortcuts for some of these):&lt;br /&gt;
* '''[set_variable]''': manipulates a WML variable. {{Note:Predefined Macro|VARIABLE}} &lt;br /&gt;
** '''name''': the name of the variable to manipulate&lt;br /&gt;
** '''value''': set the variable to the given value (can be numeric or string). This only interprets dollars signs if it is the very first character, and then the entire value must be a simple variable name. (in 1.3.2, has the same effect as format. Use literal for no substitution)&lt;br /&gt;
** '''literal''': set the variable to the given value (can be numeric or string). This does not interpret any dollars signs.&lt;br /&gt;
** '''format''': set the variable to the given value. Interprets the dollar sign to a higher degree than most actions. (see [[VariablesWML]])&lt;br /&gt;
** '''to_variable''': Fully processes its value as in ''format'', and then gets the variable with that name.&lt;br /&gt;
** '''add''': add the given amount to the variable. To subtract, add a negative number.&lt;br /&gt;
** '''multiply''': multiply the variable by the given number. To divide, multiply by the inverse eg: 4/2 = 4 * 1/2 = 4 * 0.5. To negate, multiply by -1. The result is an integer.&lt;br /&gt;
** '''divide''': divide the variable by the given number. The result is an integer.&lt;br /&gt;
** '''modulo''': returns the remainder of an integer division. Both variables need to be an integer, the result is also an integer. eg 5 % 2 = 1.&lt;br /&gt;
** '''random''': the variable will be randomly set.&amp;lt;br&amp;gt;You may provide a comma separated list of possibilities, e.g. 'random=Bob,Bill,Bella'.&amp;lt;br&amp;gt;You may provide a range of numbers (integers), e.g. 'random=3..5'.&amp;lt;br&amp;gt;You may combine these, e.g. 'random=100,1..9', in which case there would be 1/10th chance of getting 100, just like for each of 1 to 9. Dollars signs are only normally interpreted here, so it is harder to have a dynamically determined range. You would need to create the random-string with ''format''.&lt;br /&gt;
** '''rand''': does the same as random, but has better MP support. See [[BuildingMultiplayerExamples]] for more info on the MP case. '''It is highly recommended that you use this feature for randomization.'''&lt;br /&gt;
** '''time=stamp''': Retrieves a timestamp in milliseconds since wesnoth was started, can be used as timing aid. Don't try to use this as random value in MP since it will cause an OOS.&lt;br /&gt;
** {{DevFeature}} '''string_length''': Retrieves the length in characters of the string passed as this attribute's value; such string is parsed and variable substitution applied automatically (see [[VariablesWML]] for details).&lt;br /&gt;
** {{DevFeature}} '''[join]''' joins an array of strings to a textual list&lt;br /&gt;
***variable: name of the array&lt;br /&gt;
***key: array[$i].key to look for the strings&lt;br /&gt;
***separator: separator to connect the elements&lt;br /&gt;
***remove_empty: wether to ignore empty elements&lt;br /&gt;
&lt;br /&gt;
* {{DevFeature}} '''[set_variables]''': manipulates a WML array&lt;br /&gt;
** '''name''': the name of the container to manipulate&lt;br /&gt;
** '''mode''': one of the following values:&lt;br /&gt;
***replace: will clean the array '''name''' and replace it with given data&lt;br /&gt;
***append: will append given data to the current array&lt;br /&gt;
***merge: will merge in the given data into '''name'''&lt;br /&gt;
** '''to_variable''': data will be set to the given array&lt;br /&gt;
** '''[value]''': the WML inside the [value] tags will be stored in data, variables will be interpolated directly, use $| in order to escape the $ sign, you can store arrays of WML by supplying multiple [value] tags, example:&lt;br /&gt;
 [set_variables]&lt;br /&gt;
  name=arr&lt;br /&gt;
  mode=replace&lt;br /&gt;
  [value]&lt;br /&gt;
   foo=bar&lt;br /&gt;
  [/value]&lt;br /&gt;
  [value]&lt;br /&gt;
   foo=more&lt;br /&gt;
  [/value]&lt;br /&gt;
 [/set_variables]&lt;br /&gt;
 {DEBUG_MSG $arr[0].foo}&lt;br /&gt;
 {DEBUG_MSG $arr[1].foo}&lt;br /&gt;
 =&amp;gt;bar; more&lt;br /&gt;
** '''[literal]''': same as '''[value]''', but variables will not be substituted, '''[literal]''' and '''[value]''' can not be used in the same [set_variables] tag, i.e. you can not create arrays by piling a mix of '''[value]''' and '''[literal]''' tags&lt;br /&gt;
**'''[split]''' splits a textual list into an array which will then be set to data&lt;br /&gt;
***list: textual list to split&lt;br /&gt;
***key: array[$i].key to put the elements in&lt;br /&gt;
***separator: separator to separate the elements&lt;br /&gt;
***remove_empty: wether to ignore empty elements&lt;br /&gt;
&lt;br /&gt;
* '''[store_unit]''': stores details about units into game variables.&amp;lt;br&amp;gt;Common usage is to manipulate a unit by using [store_unit] to store it into a variable, followed by manipulation of the variable, and then [unstore_unit] to re-create the unit with the modified variables.&amp;lt;br&amp;gt;Note: stored units also exist on the field, and modifying the stored variable will not automatically change the stats of the units. You need to use [unstore_unit]. See also [unstore_unit], [[DirectActionsWML]], and '''FOREACH''', [[UtilWML]]&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] all units matching this filter will be stored. If there are multiple units, they will be stored into an array of variables.&lt;br /&gt;
** '''variable''': the name of the variable into which to store the unit(s)&lt;br /&gt;
** '''mode''': defaults to ''always_clear'', which clears the variable, whether or not a match is found. If mode is set to ''replace'', the variable will only be cleared if a match is found. If mode is set to ''append'', the variable will not be cleared.&lt;br /&gt;
** '''kill''': if 'yes' the units that are stored will be removed from play. This is useful for instance to remove access to a player's recall list, with the intent to restore the recall list later.&lt;br /&gt;
:When a unit is stored, the following values may be manipulated with '''[set_variable]'''&lt;br /&gt;
:* description&lt;br /&gt;
:* experience&lt;br /&gt;
:* facing&lt;br /&gt;
:* gender&lt;br /&gt;
:* canrecruit&lt;br /&gt;
:* overlays&lt;br /&gt;
:* goto_x&lt;br /&gt;
:* goto_y&lt;br /&gt;
:* hitpoints&lt;br /&gt;
:* moves&lt;br /&gt;
:* resting&lt;br /&gt;
:* side&lt;br /&gt;
:* type&lt;br /&gt;
:* unrenamable&lt;br /&gt;
:* upkeep&lt;br /&gt;
:* user_description&lt;br /&gt;
:* x&lt;br /&gt;
:* y&lt;br /&gt;
:* [variables]&lt;br /&gt;
:* [status]&lt;br /&gt;
:* [modifications]&lt;br /&gt;
Variables, status, and modifications are children of the stored unit variable.  Example:&lt;br /&gt;
 [set_variable]&lt;br /&gt;
 name=unit_store.status.poisoned&lt;br /&gt;
 value=yes&lt;br /&gt;
 [/set_variable]&lt;br /&gt;
&lt;br /&gt;
:All keys and tags in the unit definition may be manipulated, including some others.  Here is a sample list.  If you have a doubt about what keys are valid or what the valid value range is for each key, code a [store_unit] event, save the game, and examine what keys are in the file.&lt;br /&gt;
:* advanceto&lt;br /&gt;
:* alignment&lt;br /&gt;
:* alpha&lt;br /&gt;
:* attacks_left&lt;br /&gt;
:* canrecruit&lt;br /&gt;
:* controller&lt;br /&gt;
:* cost&lt;br /&gt;
:* description&lt;br /&gt;
:* experience&lt;br /&gt;
:* facing&lt;br /&gt;
:* flying&lt;br /&gt;
:* fog&lt;br /&gt;
:* gender&lt;br /&gt;
:* get_hit_sound&lt;br /&gt;
:* gold&lt;br /&gt;
:* goto_x&lt;br /&gt;
:* goto_y&lt;br /&gt;
:* hitpoints&lt;br /&gt;
:* id&lt;br /&gt;
:* image&lt;br /&gt;
:* image_defensive&lt;br /&gt;
:* income&lt;br /&gt;
:* language_name (same as the name key in the unit config)&lt;br /&gt;
:* level&lt;br /&gt;
:* max_attacks&lt;br /&gt;
:* max_experience&lt;br /&gt;
:* max_hitpoints&lt;br /&gt;
:* max_moves&lt;br /&gt;
:* movement&lt;br /&gt;
:* movement_type&lt;br /&gt;
:* moves&lt;br /&gt;
:* race&lt;br /&gt;
:* resting&lt;br /&gt;
:* shroud&lt;br /&gt;
:* side&lt;br /&gt;
:* team_name&lt;br /&gt;
:* type&lt;br /&gt;
:* unit_description&lt;br /&gt;
:* unrenamable&lt;br /&gt;
:* usage&lt;br /&gt;
:* value&lt;br /&gt;
:* x&lt;br /&gt;
:* y&lt;br /&gt;
:* zoc&lt;br /&gt;
:* [advancement]&lt;br /&gt;
:* [/advancement]&lt;br /&gt;
:* [movement_costs]&lt;br /&gt;
:* [/movement_costs]&lt;br /&gt;
:* [defense]&lt;br /&gt;
:* [/defense]&lt;br /&gt;
:* [resistance]&lt;br /&gt;
:* [/resistance]&lt;br /&gt;
:* [variables]&lt;br /&gt;
:* [/variables]&lt;br /&gt;
:* [status]&lt;br /&gt;
:* [/status]&lt;br /&gt;
:* [attack]&lt;br /&gt;
:* [/attack]&lt;br /&gt;
:* [modifications_description]&lt;br /&gt;
:* [/modifications_description]&lt;br /&gt;
:* [modifications]&lt;br /&gt;
:* [/modifications]&lt;br /&gt;
&lt;br /&gt;
* '''[store_starting_location]''': Stores the starting location of a side's leader in a variable. The variable is a composite type which will have members 'x', 'y', and 'terrain' (the terrain type for a starting location is always 'K' unless it has been changed)&lt;br /&gt;
** '''side''': the side whose starting location is to be stored&lt;br /&gt;
** '''variable''': (default='location'): the name of the variable to store the location in&lt;br /&gt;
* '''[store_locations]''': Stores a series of locations that pass certain criteria into an array. Each member of the array has members 'x' and 'y' (the position) and 'terrain' (the terrain type).&lt;br /&gt;
** [[StandardLocationFilter]]: a location or location range which specifies the locations to store. You must specify this or no locations will be stored.&lt;br /&gt;
** '''variable''': the name of the variable (array) into which to store the locations&lt;br /&gt;
** '''terrain''': a comma-sperated list of terrain codes. (See [[TerrainCodesWML]] for possible values.) If present, locations will only be chosen if the code for the terrain type of that location is listed.&lt;br /&gt;
** '''radius''': if present, any locations which are within '''radius''' hexes of the location filter will also be stored&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] only locations with units on them that match the filter will be stored. Use a blank filter to only store locations with units.&lt;br /&gt;
* '''[store_villages]''': Stores a series of locations of villages that pass certain criteria into an array. Each member of the array has members 'x' and 'y' (the position) and 'terrain' (the terrain type).&lt;br /&gt;
** '''owner_side''': a side number. If present, only villages owned by this side will be choosen. If owner_side=0, store the unowned villages. &lt;br /&gt;
** '''variable''': the name of the variable (array) into which to store the locations&lt;br /&gt;
** '''terrain''': a series of terrain characters. (See [[TerrainLettersWML]] for possible values.) If present, villages will only be chosen if the terrain code of the terrain type of that location is listed.  You may give a comma separated list of terrains.&lt;br /&gt;
** '''side''': (default=1) the side for which the gold should be stored&lt;br /&gt;
** '''variable''': (default='gold') the name of the variable to store the gold in&lt;br /&gt;
* '''[store_side]''': stores information about a certain side in a variable. The variable will contain the member variables 'name', 'team_name', 'gold' and 'income', 'fog', 'shroud', 'user_team_name', 'colour', 'controller', 'village_gold' and 'recruit'.)&lt;br /&gt;
** '''side''': the side whose information should be stored&lt;br /&gt;
** '''variable''': the name of the variable to store the information in&lt;br /&gt;
* '''[clear_variable]''': This will delete the given variable or array. This is good to use to clean up the set of variables -- e.g. a well-behaved scenario will delete any variables that shouldn't be kept for the next scenario before the end of the scenario.&amp;lt;br&amp;gt; Tags and variables of stored units can also be cleared, meaning that [trait]s and [object]s, for example, can be removed.&lt;br /&gt;
** '''name''': the name of the variable to clear.&lt;br /&gt;
* '''[role]''': tries to find a unit to assign a role to.&amp;lt;br&amp;gt;This is useful if you want to choose a non-major character to say some things during the game. Once a role is assigned, you can use '''role=''' in a unit filter to identify the unit with that role (See [[FilterWML]]).&amp;lt;br&amp;gt;However, there is no guarantee that roles will ever be assigned. You can use '''[have_unit]''' (see [if]) to see whether a role was assigned. This tag uses a [[StandardUnitFilter]] with the modification to order the search by type, mark only the first unit found with the role, and the role attribute is not used in the search. If for some reason you want to search for units that have or don't have existing roles, you can use one or more [not] filters. The will check recall lists in addition to units on the map. In normal use, you will probably want to include a ''side'' attribute to force the unit to be on a particular side.&lt;br /&gt;
** '''role''': the value to store as the unit's role. This role is not used in the [[StandardUnitFilter]] when doing the search for the unit to assign this role to.&lt;br /&gt;
** '''type''': a comma-separated list of possible types the unit can be. If any types are given, then units will be searched by type in the order listed. If no type is given, then no particular order with respect to type is guaranteed.&lt;br /&gt;
* {{DevFeature}} '''[store_map_dimensions]''': Stores the map dimensions in a variable.&lt;br /&gt;
** '''variable''': the name of the variable where the values will be saved into. If it is skipped, a variable 'map_size' is used, and its contents overridden, if they existed already. The result is a container variable, with members ''width'' and ''height''.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[VariablesWML]]&lt;br /&gt;
* [[DirectActionsWML]]&lt;br /&gt;
* [[InterfaceActionsWML]]&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=23675</id>
		<title>InternalActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=23675"/>
		<updated>2008-03-16T10:55:38Z</updated>

		<summary type="html">&lt;p&gt;CIB: /* [event] */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Internal actions ==&lt;br /&gt;
&lt;br /&gt;
Internal actions are actions that WML uses internally that do not directly affect gameplay, for example storing a variable.&lt;br /&gt;
&lt;br /&gt;
The internal actions '''[if]''', '''[while]''', and '''[event]''' describe when/whether sets of actions should be executed.&lt;br /&gt;
&lt;br /&gt;
== [if] ==&lt;br /&gt;
&lt;br /&gt;
Executes different sets of actions based on whether the conditions described in the condition tags are true or not.&lt;br /&gt;
&lt;br /&gt;
Condition tags:&lt;br /&gt;
* '''[have_unit]''': a unit passing this filter with &amp;gt;0 HP exists&lt;br /&gt;
** [[StandardUnitFilter]] (almost... '''Note:''' does not check for matching units in the recall list)&lt;br /&gt;
&lt;br /&gt;
* '''[have_location]''': a location passing this filter exists &lt;br /&gt;
** [[StandardLocationFilter]]&lt;br /&gt;
&lt;br /&gt;
* '''[and]''': If an [and] is present, all must evaluate to true in order for the [if] to evaluate true. Useful as a bracket for complex conditions, but not strictly necessary.&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, [and] evaluates to true.&lt;br /&gt;
&lt;br /&gt;
* '''[or]''': If an [or] is present, one must evaluate to true in order for the [if] to evaluate true. ([[AdvancedConditionalWML|Example]])&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, '''[or]''' evaluates to true. &lt;br /&gt;
&lt;br /&gt;
* '''[not]''': If a [not] is present, none must evaluate to true in order for the [if] to evaluate true.&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, [not] evaluates to false.&lt;br /&gt;
&lt;br /&gt;
* '''[and],[or],[not]''': all top-level filters will support in-order conditional handling of and, or, and not. One important thing to remember is, if you have multiple [or]s, you should not wrap your first conditional statement into an [or] block.&lt;br /&gt;
&lt;br /&gt;
* '''[variable]''': tests something about the value of a WML variable (see [[VariablesWML]])&lt;br /&gt;
** '''name''': the name of the variable to test the value of&amp;lt;br&amp;gt;Only one of the following keys should be used for comparing the value of the variable to another value:&lt;br /&gt;
** '''equals''': $name is equal (string wise) to this&lt;br /&gt;
** '''not_equals''': $name is not equal to this&lt;br /&gt;
** '''greater_than''': $name is numerically greater than this&lt;br /&gt;
** '''less_than''': $name is less than this&lt;br /&gt;
** '''greater_than_equal_to''': $name is not less than this&lt;br /&gt;
** '''less_than_equal_to''': $name is not greater than this&lt;br /&gt;
** '''numerical_not_equals''': $name is greater than or less than this&lt;br /&gt;
** '''numerical_equals''': $name is not greater than or less than this&lt;br /&gt;
** '''boolean_equals''': $name has the same boolean value (e.g. off, false, 0, no)&lt;br /&gt;
** '''contains''': $name contains this string&lt;br /&gt;
** {{DevFeature}} '''boolean_not_equals''': $name has not the same boolean value. Strictly a syntactic shortcut for the following syntax that served its absence in 1.4:&lt;br /&gt;
  [not]&lt;br /&gt;
    [variable]&lt;br /&gt;
      name=...&lt;br /&gt;
      boolean_equals=...&lt;br /&gt;
    [/variable]&lt;br /&gt;
  [/not]&lt;br /&gt;
&lt;br /&gt;
After condition tags:&lt;br /&gt;
* '''[then]''': contains a set of action tags which should be executed if all conditions are true, or all conditions in any single [or] are true&lt;br /&gt;
* '''[else]''': contains a set of action tags which should be executed if any condition is false, and all [or] tags are false&lt;br /&gt;
&lt;br /&gt;
== [switch] {{DevFeature}} ==&lt;br /&gt;
&lt;br /&gt;
Executes different sets of action based ont the value of a variable.&lt;br /&gt;
  [switch]&lt;br /&gt;
     variable=foo&lt;br /&gt;
     [case]&lt;br /&gt;
        value=&amp;quot;A&amp;quot;&lt;br /&gt;
        ... WML if foo=A ...&lt;br /&gt;
     [/case]&lt;br /&gt;
     [case]&lt;br /&gt;
        value=&amp;quot;B&amp;quot;&lt;br /&gt;
        ... WML if foo=B ...&lt;br /&gt;
     [/case]&lt;br /&gt;
     [else]&lt;br /&gt;
        ... WML if not foo=A nor foo=B ...&lt;br /&gt;
     [/else]&lt;br /&gt;
  [/switch]&lt;br /&gt;
&lt;br /&gt;
* '''variable''': variable to check.&lt;br /&gt;
* '''[case]''': Case block. Contains:&lt;br /&gt;
** '''value''': the value to test the variable against.&lt;br /&gt;
** the action WML to execute if the variable matches the value (rest of the block).&lt;br /&gt;
* '''[else]''': Block of action WML to execute if no '''[case]''' block matches.&lt;br /&gt;
&lt;br /&gt;
== [while] ==&lt;br /&gt;
&lt;br /&gt;
Executes commands if all conditions are true.&lt;br /&gt;
Continues to execute them until a condition is not true.&lt;br /&gt;
&lt;br /&gt;
Executes a maximum of 1024 iterations per invocation.&lt;br /&gt;
Condition tags are the same as for [if]&lt;br /&gt;
&lt;br /&gt;
After condition tags:&lt;br /&gt;
* '''[do]''': contains actions that should be executed repeatedly until some condition is false.&lt;br /&gt;
&lt;br /&gt;
The '''[while]''' tag is useful for iterating over an array.&lt;br /&gt;
An array is a list of values.&lt;br /&gt;
The ''number''th value in the array '''array''' is stored in the WML variable '''''array''[number]'''.&lt;br /&gt;
Note that if '''number''' is the value of the variable '''variable''',&lt;br /&gt;
the expression '''$''array''[$variable]''' will return the ''number''th value in ''array''.&lt;br /&gt;
The macros 'FOREACH' and 'NEXT' ([[UtilWML]]) can be used to iterate over an array;&lt;br /&gt;
i.e. run a set of actions once per element of the array.&lt;br /&gt;
&lt;br /&gt;
=== {FOREACH} ===&lt;br /&gt;
If you wish to use a &amp;quot;for-each&amp;quot; iteration format (useful for example when you want to do an iteration for each row in a table) you can use the [http://www.wesnoth.org/misc/macro-reference.xhtml FOREACH] and [http://www.wesnoth.org/misc/macro-reference.xhtml NEXT] prededined macros.&lt;br /&gt;
&lt;br /&gt;
=== {REPEAT} ===&lt;br /&gt;
You can use the REPEAT macro to perform a quick iteration for a number of times you specify.&lt;br /&gt;
&lt;br /&gt;
== [event] ==&lt;br /&gt;
&lt;br /&gt;
This adds a new event to the scenario.&lt;br /&gt;
The event is in the normal format for an '''[event]''' tag (See [[EventWML]]).&lt;br /&gt;
This is useful if you want an event that can only be triggered when a prior event is fulfilled&lt;br /&gt;
&lt;br /&gt;
These tags describe actions that affect the values of WML variables&lt;br /&gt;
(see [[VariablesWML]] for information on WML variables,&lt;br /&gt;
and [[UtilWML]] for convenient macro shortcuts for some of these):&lt;br /&gt;
* '''[set_variable]''': manipulates a WML variable. {{Note:Predefined Macro|VARIABLE}} &lt;br /&gt;
** '''name''': the name of the variable to manipulate&lt;br /&gt;
** '''value''': set the variable to the given value (can be numeric or string). This only interprets dollars signs if it is the very first character, and then the entire value must be a simple variable name. (in 1.3.2, has the same effect as format. Use literal for no substitution)&lt;br /&gt;
** '''literal''': set the variable to the given value (can be numeric or string). This does not interpret any dollars signs.&lt;br /&gt;
** '''format''': set the variable to the given value. Interprets the dollar sign to a higher degree than most actions. (see [[VariablesWML]])&lt;br /&gt;
** '''to_variable''': Fully processes its value as in ''format'', and then gets the variable with that name.&lt;br /&gt;
** '''add''': add the given amount to the variable. To subtract, add a negative number.&lt;br /&gt;
** '''multiply''': multiply the variable by the given number. To divide, multiply by the inverse eg: 4/2 = 4 * 1/2 = 4 * 0.5. To negate, multiply by -1. The result is an integer.&lt;br /&gt;
** '''divide''': divide the variable by the given number. The result is an integer.&lt;br /&gt;
** '''modulo''': returns the remainder of an integer division. Both variables need to be an integer, the result is also an integer. eg 5 % 2 = 1.&lt;br /&gt;
** '''random''': the variable will be randomly set.&amp;lt;br&amp;gt;You may provide a comma separated list of possibilities, e.g. 'random=Bob,Bill,Bella'.&amp;lt;br&amp;gt;You may provide a range of numbers (integers), e.g. 'random=3..5'.&amp;lt;br&amp;gt;You may combine these, e.g. 'random=100,1..9', in which case there would be 1/10th chance of getting 100, just like for each of 1 to 9. Dollars signs are only normally interpreted here, so it is harder to have a dynamically determined range. You would need to create the random-string with ''format''.&lt;br /&gt;
** '''rand''': does the same as random, but has better MP support. See [[BuildingMultiplayerExamples]] for more info on the MP case. '''It is highly recommended that you use this feature for randomization.'''&lt;br /&gt;
** '''time=stamp''': Retrieves a timestamp in milliseconds since wesnoth was started, can be used as timing aid. Don't try to use this as random value in MP since it will cause an OOS.&lt;br /&gt;
** {{DevFeature}} '''string_length''': Retrieves the length in characters of the string passed as this attribute's value; such string is parsed and variable substitution applied automatically (see [[VariablesWML]] for details).&lt;br /&gt;
** {{DevFeature}} '''[join]''' joins an array of strings to a textual list&lt;br /&gt;
***variable: name of the array&lt;br /&gt;
***key: array[$i].key to look for the strings&lt;br /&gt;
***separator: separator to connect the elements&lt;br /&gt;
***remove_empty: wether to ignore empty elements&lt;br /&gt;
&lt;br /&gt;
* {{DevFeature}} '''[set_variables]''': manipulates a WML array&lt;br /&gt;
** '''name''': the name of the container to manipulate&lt;br /&gt;
** '''mode''': one of the following values:&lt;br /&gt;
***replace: will clean the array '''name''' and replace it with given data&lt;br /&gt;
***append: will append given data to the current array&lt;br /&gt;
***merge: will merge in the given data into '''name'''&lt;br /&gt;
** '''to_variable''': data will be set to the given array&lt;br /&gt;
** '''[value]''': the WML inside the [value] tags will be stored in data, variables will be interpolated directly, use $| in order to escape the $ sign, you can store arrays of WML by supplying multiple [value] tags&lt;br /&gt;
** '''[literal]''': same as '''[value]''', but variables will not be substituted, '''[literal]''' and '''[value]''' can not be used in the same [set_variables] tag, i.e. you can not create arrays by piling a mix of '''[value]''' and '''[literal]''' tags&lt;br /&gt;
**'''[split]''' splits a textual list into an array which will then be set to data&lt;br /&gt;
***list: textual list to split&lt;br /&gt;
***key: array[$i].key to put the elements in&lt;br /&gt;
***separator: separator to separate the elements&lt;br /&gt;
***remove_empty: wether to ignore empty elements&lt;br /&gt;
&lt;br /&gt;
* '''[store_unit]''': stores details about units into game variables.&amp;lt;br&amp;gt;Common usage is to manipulate a unit by using [store_unit] to store it into a variable, followed by manipulation of the variable, and then [unstore_unit] to re-create the unit with the modified variables.&amp;lt;br&amp;gt;Note: stored units also exist on the field, and modifying the stored variable will not automatically change the stats of the units. You need to use [unstore_unit]. See also [unstore_unit], [[DirectActionsWML]], and '''FOREACH''', [[UtilWML]]&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] all units matching this filter will be stored. If there are multiple units, they will be stored into an array of variables.&lt;br /&gt;
** '''variable''': the name of the variable into which to store the unit(s)&lt;br /&gt;
** '''mode''': defaults to ''always_clear'', which clears the variable, whether or not a match is found. If mode is set to ''replace'', the variable will only be cleared if a match is found. If mode is set to ''append'', the variable will not be cleared.&lt;br /&gt;
** '''kill''': if 'yes' the units that are stored will be removed from play. This is useful for instance to remove access to a player's recall list, with the intent to restore the recall list later.&lt;br /&gt;
:When a unit is stored, the following values may be manipulated with '''[set_variable]'''&lt;br /&gt;
:* description&lt;br /&gt;
:* experience&lt;br /&gt;
:* facing&lt;br /&gt;
:* gender&lt;br /&gt;
:* canrecruit&lt;br /&gt;
:* overlays&lt;br /&gt;
:* goto_x&lt;br /&gt;
:* goto_y&lt;br /&gt;
:* hitpoints&lt;br /&gt;
:* moves&lt;br /&gt;
:* resting&lt;br /&gt;
:* side&lt;br /&gt;
:* type&lt;br /&gt;
:* unrenamable&lt;br /&gt;
:* upkeep&lt;br /&gt;
:* user_description&lt;br /&gt;
:* x&lt;br /&gt;
:* y&lt;br /&gt;
:* [variables]&lt;br /&gt;
:* [status]&lt;br /&gt;
:* [modifications]&lt;br /&gt;
Variables, status, and modifications are children of the stored unit variable.  Example:&lt;br /&gt;
 [set_variable]&lt;br /&gt;
 name=unit_store.status.poisoned&lt;br /&gt;
 value=yes&lt;br /&gt;
 [/set_variable]&lt;br /&gt;
&lt;br /&gt;
:All keys and tags in the unit definition may be manipulated, including some others.  Here is a sample list.  If you have a doubt about what keys are valid or what the valid value range is for each key, code a [store_unit] event, save the game, and examine what keys are in the file.&lt;br /&gt;
:* advanceto&lt;br /&gt;
:* alignment&lt;br /&gt;
:* alpha&lt;br /&gt;
:* attacks_left&lt;br /&gt;
:* canrecruit&lt;br /&gt;
:* controller&lt;br /&gt;
:* cost&lt;br /&gt;
:* description&lt;br /&gt;
:* experience&lt;br /&gt;
:* facing&lt;br /&gt;
:* flying&lt;br /&gt;
:* fog&lt;br /&gt;
:* gender&lt;br /&gt;
:* get_hit_sound&lt;br /&gt;
:* gold&lt;br /&gt;
:* goto_x&lt;br /&gt;
:* goto_y&lt;br /&gt;
:* hitpoints&lt;br /&gt;
:* id&lt;br /&gt;
:* image&lt;br /&gt;
:* image_defensive&lt;br /&gt;
:* income&lt;br /&gt;
:* language_name (same as the name key in the unit config)&lt;br /&gt;
:* level&lt;br /&gt;
:* max_attacks&lt;br /&gt;
:* max_experience&lt;br /&gt;
:* max_hitpoints&lt;br /&gt;
:* max_moves&lt;br /&gt;
:* movement&lt;br /&gt;
:* movement_type&lt;br /&gt;
:* moves&lt;br /&gt;
:* race&lt;br /&gt;
:* resting&lt;br /&gt;
:* shroud&lt;br /&gt;
:* side&lt;br /&gt;
:* team_name&lt;br /&gt;
:* type&lt;br /&gt;
:* unit_description&lt;br /&gt;
:* unrenamable&lt;br /&gt;
:* usage&lt;br /&gt;
:* value&lt;br /&gt;
:* x&lt;br /&gt;
:* y&lt;br /&gt;
:* zoc&lt;br /&gt;
:* [advancement]&lt;br /&gt;
:* [/advancement]&lt;br /&gt;
:* [movement_costs]&lt;br /&gt;
:* [/movement_costs]&lt;br /&gt;
:* [defense]&lt;br /&gt;
:* [/defense]&lt;br /&gt;
:* [resistance]&lt;br /&gt;
:* [/resistance]&lt;br /&gt;
:* [variables]&lt;br /&gt;
:* [/variables]&lt;br /&gt;
:* [status]&lt;br /&gt;
:* [/status]&lt;br /&gt;
:* [attack]&lt;br /&gt;
:* [/attack]&lt;br /&gt;
:* [modifications_description]&lt;br /&gt;
:* [/modifications_description]&lt;br /&gt;
:* [modifications]&lt;br /&gt;
:* [/modifications]&lt;br /&gt;
&lt;br /&gt;
* '''[store_starting_location]''': Stores the starting location of a side's leader in a variable. The variable is a composite type which will have members 'x', 'y', and 'terrain' (the terrain type for a starting location is always 'K' unless it has been changed)&lt;br /&gt;
** '''side''': the side whose starting location is to be stored&lt;br /&gt;
** '''variable''': (default='location'): the name of the variable to store the location in&lt;br /&gt;
* '''[store_locations]''': Stores a series of locations that pass certain criteria into an array. Each member of the array has members 'x' and 'y' (the position) and 'terrain' (the terrain type).&lt;br /&gt;
** [[StandardLocationFilter]]: a location or location range which specifies the locations to store. You must specify this or no locations will be stored.&lt;br /&gt;
** '''variable''': the name of the variable (array) into which to store the locations&lt;br /&gt;
** '''terrain''': a comma-sperated list of terrain codes. (See [[TerrainCodesWML]] for possible values.) If present, locations will only be chosen if the code for the terrain type of that location is listed.&lt;br /&gt;
** '''radius''': if present, any locations which are within '''radius''' hexes of the location filter will also be stored&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] only locations with units on them that match the filter will be stored. Use a blank filter to only store locations with units.&lt;br /&gt;
* '''[store_villages]''': Stores a series of locations of villages that pass certain criteria into an array. Each member of the array has members 'x' and 'y' (the position) and 'terrain' (the terrain type).&lt;br /&gt;
** '''owner_side''': a side number. If present, only villages owned by this side will be choosen. If owner_side=0, store the unowned villages. &lt;br /&gt;
** '''variable''': the name of the variable (array) into which to store the locations&lt;br /&gt;
** '''terrain''': a series of terrain characters. (See [[TerrainLettersWML]] for possible values.) If present, villages will only be chosen if the terrain code of the terrain type of that location is listed.  You may give a comma separated list of terrains.&lt;br /&gt;
** '''side''': (default=1) the side for which the gold should be stored&lt;br /&gt;
** '''variable''': (default='gold') the name of the variable to store the gold in&lt;br /&gt;
* '''[store_side]''': stores information about a certain side in a variable. The variable will contain the member variables 'name', 'team_name', 'gold' and 'income', 'fog', 'shroud', 'user_team_name', 'colour', 'controller', 'village_gold' and 'recruit'.)&lt;br /&gt;
** '''side''': the side whose information should be stored&lt;br /&gt;
** '''variable''': the name of the variable to store the information in&lt;br /&gt;
* '''[clear_variable]''': This will delete the given variable or array. This is good to use to clean up the set of variables -- e.g. a well-behaved scenario will delete any variables that shouldn't be kept for the next scenario before the end of the scenario.&amp;lt;br&amp;gt; Tags and variables of stored units can also be cleared, meaning that [trait]s and [object]s, for example, can be removed.&lt;br /&gt;
** '''name''': the name of the variable to clear.&lt;br /&gt;
* '''[role]''': tries to find a unit to assign a role to.&amp;lt;br&amp;gt;This is useful if you want to choose a non-major character to say some things during the game. Once a role is assigned, you can use '''role=''' in a unit filter to identify the unit with that role (See [[FilterWML]]).&amp;lt;br&amp;gt;However, there is no guarantee that roles will ever be assigned. You can use '''[have_unit]''' (see [if]) to see whether a role was assigned. This tag uses a [[StandardUnitFilter]] with the modification to order the search by type, mark only the first unit found with the role, and the role attribute is not used in the search. If for some reason you want to search for units that have or don't have existing roles, you can use one or more [not] filters. The will check recall lists in addition to units on the map. In normal use, you will probably want to include a ''side'' attribute to force the unit to be on a particular side.&lt;br /&gt;
** '''role''': the value to store as the unit's role. This role is not used in the [[StandardUnitFilter]] when doing the search for the unit to assign this role to.&lt;br /&gt;
** '''type''': a comma-separated list of possible types the unit can be. If any types are given, then units will be searched by type in the order listed. If no type is given, then no particular order with respect to type is guaranteed.&lt;br /&gt;
* {{DevFeature}} '''[store_map_dimensions]''': Stores the map dimensions in a variable.&lt;br /&gt;
** '''variable''': the name of the variable where the values will be saved into. If it is skipped, a variable 'map_size' is used, and its contents overridden, if they existed already. The result is a container variable, with members ''width'' and ''height''.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[VariablesWML]]&lt;br /&gt;
* [[DirectActionsWML]]&lt;br /&gt;
* [[InterfaceActionsWML]]&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Template:WML_Tags&amp;diff=23674</id>
		<title>Template:WML Tags</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Template:WML_Tags&amp;diff=23674"/>
		<updated>2008-03-16T10:49:23Z</updated>

		<summary type="html">&lt;p&gt;CIB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;gallery&amp;quot; style=&amp;quot;width:175px;float: right;border: 1px solid #B48648; color:#B48648; font-size: 7pt;margin-left;10px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;float: right;&amp;quot;&amp;gt;&amp;lt;small class=&amp;quot;editlink noprint plainlinksneverexpand&amp;quot;&amp;gt;[{{SERVER}}{{localurl:Template:WML Tags|action=edit}} edit ]&amp;lt;/small&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
'''WML Tags'''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|''A:'' &lt;br /&gt;
[[AbilitiesWML|abilities]],&lt;br /&gt;
[[CampaignWML#The_.5Babout.5D_tag|about]],&lt;br /&gt;
[[UnitWML|advancefrom]],&lt;br /&gt;
[[UnitWML|advancement]],&lt;br /&gt;
[[StatisticalScenarioWML|advances]],&lt;br /&gt;
[[AiWML|ai]],&lt;br /&gt;
[[DirectActionsWML|allow_recruit]],&lt;br /&gt;
[[DirectActionsWML|allow_undo]],&lt;br /&gt;
[[AnimationWML|animation]],&lt;br /&gt;
[[VariablesWML|array]],&lt;br /&gt;
[[UnitWML|attack]],&lt;br /&gt;
[[AnimationWML|attack_filter]], &lt;br /&gt;
[[StatisticalScenarioWML|attacks]],&lt;br /&gt;
[[AiWML|avoid]];&lt;br /&gt;
|-&lt;br /&gt;
|''B:'' &lt;br /&gt;
[[UnitWML|base_unit]],[[CampaignWML#The_.5Bbinary_path.5D_tag|binary_path]],[[HelpWML|bold]];&lt;br /&gt;
|-&lt;br /&gt;
|''C:'' &lt;br /&gt;
[[CampaignWML#The_.5Bcampaign.5D_tag|campaign]], [[DirectActionsWML|capture_village]], [[ReplayWML|choose]],&lt;br /&gt;
[[InternalActionsWML|clear_variable]],&lt;br /&gt;
[[InterfaceActionsWML|colour_adjust]],&lt;br /&gt;
[[ReplayWML|command]];&lt;br /&gt;
|-&lt;br /&gt;
|''D:'' &lt;br /&gt;
[[AbilitiesWML|damage]],[[StatisticalScenarioWML|deaths]],[[InterfaceActionsWML|debug_message]],[[UnitWML|defend]],[[StatisticalScenarioWML|defends]],&lt;br /&gt;
[[UnitWML|defense]],&lt;br /&gt;
[[InterfaceActionsWML|delay]],&lt;br /&gt;
[[ReplayWML|destination]],&lt;br /&gt;
[[DirectActionsWML|disallow_recruit]],&lt;br /&gt;
[[InternalActionsWML|do]];&lt;br /&gt;
|-&lt;br /&gt;
|''E:'' &lt;br /&gt;
[[EffectWML|effect]],[[InternalActionsWML|else]],[[ReplayWML|end_turn]],&lt;br /&gt;
[[DirectActionsWML|endlevel]],&lt;br /&gt;
[[EraWML|era]],&lt;br /&gt;
[[EventWML|event]],&lt;br /&gt;
[[ThemeWML|expenses]];&lt;br /&gt;
|-&lt;br /&gt;
|''F:'' &lt;br /&gt;
[[FilterWML|filter]], [[FilterWML|filter_location]], [[FilterWML|filter_second]], [[FilterWML|filter_vision]], [[HelpWML|format]], [[AnimationWML|frame]];&lt;br /&gt;
|-&lt;br /&gt;
|''G:'' &lt;br /&gt;
[[GameConfigWML|game_config]], [[ScenarioWML|generator]], [[DirectActionsWML|gold]], [[ThemeWML|gold]];&lt;br /&gt;
|-&lt;br /&gt;
|''H:'' &lt;br /&gt;
[[InternalActionsWML|have_unit]], [[HelpWML|header]], [[InterfaceActionsWML|hide_unit]];&lt;br /&gt;
|-&lt;br /&gt;
|''I:'' &lt;br /&gt;
[[InternalActionsWML|if]], [[TimeWML|illuminated_time]], [[TerrainGraphicsWML|image]],&lt;br /&gt;
[[HelpWML|img]], [[ThemeWML|income]], [[HelpWML|italic]], [[InterfaceActionsWML|item]];&lt;br /&gt;
|-&lt;br /&gt;
|''J:''&lt;br /&gt;
[[HelpWML|jump]], [[InternalActionsWML|join]];&lt;br /&gt;
|-&lt;br /&gt;
|''K:'' &lt;br /&gt;
[[DirectActionsWML|kill]], [[StatisticalScenarioWML|killed]];&lt;br /&gt;
|-&lt;br /&gt;
|''L:'' &lt;br /&gt;
[[LabelWML|label]] ([[InterfaceActionsWML|map]], [[ThemeWML|theme]]), [[LanguageWML|language]], [[AiWML|leader_goal]];&lt;br /&gt;
|-&lt;br /&gt;
|''M:'' &lt;br /&gt;
[[ThemeWML|main_map]],[[ThemeWML|menu]], [[InterfaceActionsWML|message]], [[ThemeWML|mini_map]],&lt;br /&gt;
[[AnimationWML|missile_frame]], [[SingleUnitWML|modifications]], [[DirectActionsWML|modify_side]],&lt;br /&gt;
[[DirectActionsWML|modify_turns]], [[ReplayWML|move]], [[InterfaceActionsWML|move_unit_fake]], [[UnitWML|movement costs]],&lt;br /&gt;
[[UnitsWML|movetype]], [[ScenarioWML|multiplayer]], [[EraWML|multiplayer_side]], [[InterfaceActionsWML|music]];&lt;br /&gt;
|-&lt;br /&gt;
|''N:'' &lt;br /&gt;
[[AnimationWML|neighbour_unit_filter]], [[FilterWML|not]], [[ThemeWML|num_units]];&lt;br /&gt;
|-&lt;br /&gt;
|''O:'' &lt;br /&gt;
[[DirectActionsWML|object]], [[InterfaceActionsWML|objectives]], [[InterfaceActionsWML|objective]],&lt;br /&gt;
[[ThemeWML|observers]], [[InterfaceActionsWML|option]], [[InternalActionsWML|or]];&lt;br /&gt;
|-&lt;br /&gt;
|''P:'' &lt;br /&gt;
[[ThemeWML|panel]], [[IntroWML|part]], [[DirectActionsWML|place_shroud]], [[ThemeWML|position]],&lt;br /&gt;
[[InterfaceActionsWML|print]], [[AiWML|protect_location]], [[AiWML|protect_unit]];&lt;br /&gt;
|-&lt;br /&gt;
|''R:'' &lt;br /&gt;
[[UnitsWML|race]], [[ReplayWML|random]], [[ReplayWML|recall]], [[StatisticalScenarioWML|recalls]],&lt;br /&gt;
[[ReplayWML|recruit]], [[StatisticalScenarioWML|recruits]], [[InterfaceActionsWML|redraw]],&lt;br /&gt;
[[HelpWML|ref]], [[DirectActionsWML|remove_shroud]], [[InterfaceActionsWML|remove_unit_overlay]],&lt;br /&gt;
[[InterfaceActionsWML|removeitem]], [[InterfaceActionsWML|remove_sound_source]], [[SavefileWML|replay]], [[SavefileWML|replay_start]],&lt;br /&gt;
[[UnitWML|resistance]], [[ThemeWML|resolution]], [[ReplayWML|results]], [[InternalActionsWML|role]];&lt;br /&gt;
|-&lt;br /&gt;
|''S:'' &lt;br /&gt;
[[SavefileWML|save]], [[ScenarioWML|scenario]],&lt;br /&gt;
[[InterfaceActionsWML|scroll]], [[InterfaceActionsWML|scroll_to]],&lt;br /&gt;
[[InterfaceActionsWML|scroll_to_unit]], [[AnimationWML|secondary_attack_filter]], [[AnimationWML|secondary_unit_filter]], [[HelpWML|section]],&lt;br /&gt;
[[InterfaceActionsWML#.5Bset_menu_item.5D_.28SVN_trunk_only.29|set_menu_item]], [[DirectActionsWML|set_recruit]],&lt;br /&gt;
[[InternalActionsWML|set_variable]], [[InternalActionsWML|set_variables]], &lt;br /&gt;
[[SideWML|side]], [[ThemeWML|side_playing]], [[SavefileWML|snapshot]],&lt;br /&gt;
[[InterfaceActionsWML|sound]], [[InterfaceActionsWML|sound_source]], [[ReplayWML|source]], [[EventWML|special_filter]], [[EventWML|special_filter_second]],&lt;br /&gt;
[[InternalActionsWML|split]],&lt;br /&gt;
[[StatisticalScenarioWML#The_.5Bstatistics.5D_tag|statistics]],&lt;br /&gt;
[[ThemeWML|status]], [[DirectActionsWML|stone]], [[InternalActionsWML|store_gold]], [[InternalActionsWML|store_locations]],&lt;br /&gt;
[[InternalActionsWML|store_map_dimensions]],&lt;br /&gt;
[[InternalActionsWML|store_starting_location]], [[InternalActionsWML|store_side]], [[InternalActionsWML|store_unit]], [[IntroWML|story]];&lt;br /&gt;
|-&lt;br /&gt;
|''T:'' &lt;br /&gt;
[[AiWML|target]],&lt;br /&gt;
[[StatisticalScenarioWML#The_.5Bteam.5D_tag|team]],&lt;br /&gt;
[[DirectActionsWML|teleport]], [[UnitWML|teleport_anim]],&lt;br /&gt;
[[TerrainWML|terrain]], [[DirectActionsWML|terrain]], [[TerrainGraphicsWML|terrain_graphics]], [[TerrainMaskWML|terrain_mask]], [[ScenarioWML#Test_scenario|test]],&lt;br /&gt;
[[CampaignWML#The_.5Btextdomain.5D_tag|textdomain]], [[ThemeWML|theme]], [[InternalActionsWML|then]],&lt;br /&gt;
[[TerrainGraphicsWML|tile]], [[TimeWML|time]], [[ScenarioWML|time_area]], [[ThemeWML|time_of_day]],&lt;br /&gt;
[[HelpWML|topic]], [[HelpWML|toplevel]], [[SingleUnitWML|trait]], [[ThemeWML|turn]], [[ScenarioWML|tutorial]];&lt;br /&gt;
|-&lt;br /&gt;
|''U:'' &lt;br /&gt;
[[InterfaceActionsWML|unhide_unit]], unit&amp;amp;nbsp;([[UnitWML|define]], [[SingleUnitWML|create]]),&lt;br /&gt;
[[ThemeWML|unit_abilities]], [[ThemeWML|unit_alignment]], [[ThemeWML|unit_description]], [[AnimationWML|unit_filter]], [[ThemeWML|unit_hp]], [[ThemeWML|unit_image]], [[ThemeWML|unit_level]], [[ThemeWML|unit_moves]],&lt;br /&gt;
[[InterfaceActionsWML|unit_overlay]], [[ThemeWML|unit_profile]], [[ThemeWML|unit_status]],&lt;br /&gt;
[[ThemeWML|unit_traits]], [[ThemeWML|unit_type]], [[ThemeWML|unit_weapons]], [[ThemeWML|unit_xp]],&lt;br /&gt;
[[UnitsWML|units]], [[DirectActionsWML|unstone]], [[DirectActionsWML|unstore_unit]], [[ThemeWML|upkeep]];&lt;br /&gt;
|-&lt;br /&gt;
| ''V:'' &lt;br /&gt;
[[InternalActionsWML|variable]], [[VariablesWML|variables]], [[SideWML|village]], [[ThemeWML|villages]];&lt;br /&gt;
|-&lt;br /&gt;
| ''W:'' &lt;br /&gt;
[[InternalActionsWML|while]], [[FilterWML|wml_filter]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=23673</id>
		<title>InternalActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=23673"/>
		<updated>2008-03-16T10:45:17Z</updated>

		<summary type="html">&lt;p&gt;CIB: /* [event] */ add [set_variables]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Internal actions ==&lt;br /&gt;
&lt;br /&gt;
Internal actions are actions that WML uses internally that do not directly affect gameplay, for example storing a variable.&lt;br /&gt;
&lt;br /&gt;
The internal actions '''[if]''', '''[while]''', and '''[event]''' describe when/whether sets of actions should be executed.&lt;br /&gt;
&lt;br /&gt;
== [if] ==&lt;br /&gt;
&lt;br /&gt;
Executes different sets of actions based on whether the conditions described in the condition tags are true or not.&lt;br /&gt;
&lt;br /&gt;
Condition tags:&lt;br /&gt;
* '''[have_unit]''': a unit passing this filter with &amp;gt;0 HP exists&lt;br /&gt;
** [[StandardUnitFilter]] (almost... '''Note:''' does not check for matching units in the recall list)&lt;br /&gt;
&lt;br /&gt;
* '''[have_location]''': a location passing this filter exists &lt;br /&gt;
** [[StandardLocationFilter]]&lt;br /&gt;
&lt;br /&gt;
* '''[and]''': If an [and] is present, all must evaluate to true in order for the [if] to evaluate true. Useful as a bracket for complex conditions, but not strictly necessary.&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, [and] evaluates to true.&lt;br /&gt;
&lt;br /&gt;
* '''[or]''': If an [or] is present, one must evaluate to true in order for the [if] to evaluate true. ([[AdvancedConditionalWML|Example]])&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, '''[or]''' evaluates to true. &lt;br /&gt;
&lt;br /&gt;
* '''[not]''': If a [not] is present, none must evaluate to true in order for the [if] to evaluate true.&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, [not] evaluates to false.&lt;br /&gt;
&lt;br /&gt;
* '''[and],[or],[not]''': all top-level filters will support in-order conditional handling of and, or, and not. One important thing to remember is, if you have multiple [or]s, you should not wrap your first conditional statement into an [or] block.&lt;br /&gt;
&lt;br /&gt;
* '''[variable]''': tests something about the value of a WML variable (see [[VariablesWML]])&lt;br /&gt;
** '''name''': the name of the variable to test the value of&amp;lt;br&amp;gt;Only one of the following keys should be used for comparing the value of the variable to another value:&lt;br /&gt;
** '''equals''': $name is equal (string wise) to this&lt;br /&gt;
** '''not_equals''': $name is not equal to this&lt;br /&gt;
** '''greater_than''': $name is numerically greater than this&lt;br /&gt;
** '''less_than''': $name is less than this&lt;br /&gt;
** '''greater_than_equal_to''': $name is not less than this&lt;br /&gt;
** '''less_than_equal_to''': $name is not greater than this&lt;br /&gt;
** '''numerical_not_equals''': $name is greater than or less than this&lt;br /&gt;
** '''numerical_equals''': $name is not greater than or less than this&lt;br /&gt;
** '''boolean_equals''': $name has the same boolean value (e.g. off, false, 0, no)&lt;br /&gt;
** '''contains''': $name contains this string&lt;br /&gt;
** {{DevFeature}} '''boolean_not_equals''': $name has not the same boolean value. Strictly a syntactic shortcut for the following syntax that served its absence in 1.4:&lt;br /&gt;
  [not]&lt;br /&gt;
    [variable]&lt;br /&gt;
      name=...&lt;br /&gt;
      boolean_equals=...&lt;br /&gt;
    [/variable]&lt;br /&gt;
  [/not]&lt;br /&gt;
&lt;br /&gt;
After condition tags:&lt;br /&gt;
* '''[then]''': contains a set of action tags which should be executed if all conditions are true, or all conditions in any single [or] are true&lt;br /&gt;
* '''[else]''': contains a set of action tags which should be executed if any condition is false, and all [or] tags are false&lt;br /&gt;
&lt;br /&gt;
== [switch] {{DevFeature}} ==&lt;br /&gt;
&lt;br /&gt;
Executes different sets of action based ont the value of a variable.&lt;br /&gt;
  [switch]&lt;br /&gt;
     variable=foo&lt;br /&gt;
     [case]&lt;br /&gt;
        value=&amp;quot;A&amp;quot;&lt;br /&gt;
        ... WML if foo=A ...&lt;br /&gt;
     [/case]&lt;br /&gt;
     [case]&lt;br /&gt;
        value=&amp;quot;B&amp;quot;&lt;br /&gt;
        ... WML if foo=B ...&lt;br /&gt;
     [/case]&lt;br /&gt;
     [else]&lt;br /&gt;
        ... WML if not foo=A nor foo=B ...&lt;br /&gt;
     [/else]&lt;br /&gt;
  [/switch]&lt;br /&gt;
&lt;br /&gt;
* '''variable''': variable to check.&lt;br /&gt;
* '''[case]''': Case block. Contains:&lt;br /&gt;
** '''value''': the value to test the variable against.&lt;br /&gt;
** the action WML to execute if the variable matches the value (rest of the block).&lt;br /&gt;
* '''[else]''': Block of action WML to execute if no '''[case]''' block matches.&lt;br /&gt;
&lt;br /&gt;
== [while] ==&lt;br /&gt;
&lt;br /&gt;
Executes commands if all conditions are true.&lt;br /&gt;
Continues to execute them until a condition is not true.&lt;br /&gt;
&lt;br /&gt;
Executes a maximum of 1024 iterations per invocation.&lt;br /&gt;
Condition tags are the same as for [if]&lt;br /&gt;
&lt;br /&gt;
After condition tags:&lt;br /&gt;
* '''[do]''': contains actions that should be executed repeatedly until some condition is false.&lt;br /&gt;
&lt;br /&gt;
The '''[while]''' tag is useful for iterating over an array.&lt;br /&gt;
An array is a list of values.&lt;br /&gt;
The ''number''th value in the array '''array''' is stored in the WML variable '''''array''[number]'''.&lt;br /&gt;
Note that if '''number''' is the value of the variable '''variable''',&lt;br /&gt;
the expression '''$''array''[$variable]''' will return the ''number''th value in ''array''.&lt;br /&gt;
The macros 'FOREACH' and 'NEXT' ([[UtilWML]]) can be used to iterate over an array;&lt;br /&gt;
i.e. run a set of actions once per element of the array.&lt;br /&gt;
&lt;br /&gt;
=== {FOREACH} ===&lt;br /&gt;
If you wish to use a &amp;quot;for-each&amp;quot; iteration format (useful for example when you want to do an iteration for each row in a table) you can use the [http://www.wesnoth.org/misc/macro-reference.xhtml FOREACH] and [http://www.wesnoth.org/misc/macro-reference.xhtml NEXT] prededined macros.&lt;br /&gt;
&lt;br /&gt;
=== {REPEAT} ===&lt;br /&gt;
You can use the REPEAT macro to perform a quick iteration for a number of times you specify.&lt;br /&gt;
&lt;br /&gt;
== [event] ==&lt;br /&gt;
&lt;br /&gt;
This adds a new event to the scenario.&lt;br /&gt;
The event is in the normal format for an '''[event]''' tag (See [[EventWML]]).&lt;br /&gt;
This is useful if you want an event that can only be triggered when a prior event is fulfilled&lt;br /&gt;
&lt;br /&gt;
These tags describe actions that affect the values of WML variables&lt;br /&gt;
(see [[VariablesWML]] for information on WML variables,&lt;br /&gt;
and [[UtilWML]] for convenient macro shortcuts for some of these):&lt;br /&gt;
* '''[set_variable]''': manipulates a WML variable. {{Note:Predefined Macro|VARIABLE}} &lt;br /&gt;
** '''name''': the name of the variable to manipulate&lt;br /&gt;
** '''value''': set the variable to the given value (can be numeric or string). This only interprets dollars signs if it is the very first character, and then the entire value must be a simple variable name. (in 1.3.2, has the same effect as format. Use literal for no substitution)&lt;br /&gt;
** '''literal''': set the variable to the given value (can be numeric or string). This does not interpret any dollars signs.&lt;br /&gt;
** '''format''': set the variable to the given value. Interprets the dollar sign to a higher degree than most actions. (see [[VariablesWML]])&lt;br /&gt;
** '''to_variable''': Fully processes its value as in ''format'', and then gets the variable with that name.&lt;br /&gt;
** '''add''': add the given amount to the variable. To subtract, add a negative number.&lt;br /&gt;
** '''multiply''': multiply the variable by the given number. To divide, multiply by the inverse eg: 4/2 = 4 * 1/2 = 4 * 0.5. To negate, multiply by -1. The result is an integer.&lt;br /&gt;
** '''divide''': divide the variable by the given number. The result is an integer.&lt;br /&gt;
** '''modulo''': returns the remainder of an integer division. Both variables need to be an integer, the result is also an integer. eg 5 % 2 = 1.&lt;br /&gt;
** '''random''': the variable will be randomly set.&amp;lt;br&amp;gt;You may provide a comma separated list of possibilities, e.g. 'random=Bob,Bill,Bella'.&amp;lt;br&amp;gt;You may provide a range of numbers (integers), e.g. 'random=3..5'.&amp;lt;br&amp;gt;You may combine these, e.g. 'random=100,1..9', in which case there would be 1/10th chance of getting 100, just like for each of 1 to 9. Dollars signs are only normally interpreted here, so it is harder to have a dynamically determined range. You would need to create the random-string with ''format''.&lt;br /&gt;
** '''rand''': does the same as random, but has better MP support. See [[BuildingMultiplayerExamples]] for more info on the MP case. '''It is highly recommended that you use this feature for randomization.'''&lt;br /&gt;
** '''time=stamp''': Retrieves a timestamp in milliseconds since wesnoth was started, can be used as timing aid. Don't try to use this as random value in MP since it will cause an OOS.&lt;br /&gt;
** {{DevFeature}} '''string_length''': Retrieves the length in characters of the string passed as this attribute's value; such string is parsed and variable substitution applied automatically (see [[VariablesWML]] for details).&lt;br /&gt;
** {{DevFeature}} '''[join]''' joins an array of strings to a textual list&lt;br /&gt;
***variable: name of the array&lt;br /&gt;
***key: array[$i].key to look for the strings&lt;br /&gt;
***separator: separator to connect the elements&lt;br /&gt;
***remove_empty: wether to ignore empty elements&lt;br /&gt;
&lt;br /&gt;
* {{DevFeature}} '''[set_variables]''': manipulates a WML array&lt;br /&gt;
** '''name''': the name of the container to manipulate&lt;br /&gt;
** '''mode''': one of the following values:&lt;br /&gt;
***replace: will clean the array '''name''' and replace it with given data&lt;br /&gt;
***append: will append given data to the current array&lt;br /&gt;
***merge: will merge in the given data into '''name'''&lt;br /&gt;
** '''to_variable''': data will be set to the given array&lt;br /&gt;
** '''[value]''': the WML inside the [value] tags will be stored in data, variables will be interpolated directly, use $| in order to escape the $ sign, you can store arrays of WML by supplying multiple [value] tags&lt;br /&gt;
** '''[literal]''': same as '''[value]''', but variables will not be substituted, '''[literal]''' and '''[value]''' can not be used at once&lt;br /&gt;
**'''[split]''' splits a textual list into an array which will then be set to data&lt;br /&gt;
***list: textual list to split&lt;br /&gt;
***key: array[$i].key to put the elements in&lt;br /&gt;
***separator: separator to separate the elements&lt;br /&gt;
***remove_empty: wether to ignore empty elements&lt;br /&gt;
&lt;br /&gt;
* '''[store_unit]''': stores details about units into game variables.&amp;lt;br&amp;gt;Common usage is to manipulate a unit by using [store_unit] to store it into a variable, followed by manipulation of the variable, and then [unstore_unit] to re-create the unit with the modified variables.&amp;lt;br&amp;gt;Note: stored units also exist on the field, and modifying the stored variable will not automatically change the stats of the units. You need to use [unstore_unit]. See also [unstore_unit], [[DirectActionsWML]], and '''FOREACH''', [[UtilWML]]&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] all units matching this filter will be stored. If there are multiple units, they will be stored into an array of variables.&lt;br /&gt;
** '''variable''': the name of the variable into which to store the unit(s)&lt;br /&gt;
** '''mode''': defaults to ''always_clear'', which clears the variable, whether or not a match is found. If mode is set to ''replace'', the variable will only be cleared if a match is found. If mode is set to ''append'', the variable will not be cleared.&lt;br /&gt;
** '''kill''': if 'yes' the units that are stored will be removed from play. This is useful for instance to remove access to a player's recall list, with the intent to restore the recall list later.&lt;br /&gt;
:When a unit is stored, the following values may be manipulated with '''[set_variable]'''&lt;br /&gt;
:* description&lt;br /&gt;
:* experience&lt;br /&gt;
:* facing&lt;br /&gt;
:* gender&lt;br /&gt;
:* canrecruit&lt;br /&gt;
:* overlays&lt;br /&gt;
:* goto_x&lt;br /&gt;
:* goto_y&lt;br /&gt;
:* hitpoints&lt;br /&gt;
:* moves&lt;br /&gt;
:* resting&lt;br /&gt;
:* side&lt;br /&gt;
:* type&lt;br /&gt;
:* unrenamable&lt;br /&gt;
:* upkeep&lt;br /&gt;
:* user_description&lt;br /&gt;
:* x&lt;br /&gt;
:* y&lt;br /&gt;
:* [variables]&lt;br /&gt;
:* [status]&lt;br /&gt;
:* [modifications]&lt;br /&gt;
Variables, status, and modifications are children of the stored unit variable.  Example:&lt;br /&gt;
 [set_variable]&lt;br /&gt;
 name=unit_store.status.poisoned&lt;br /&gt;
 value=yes&lt;br /&gt;
 [/set_variable]&lt;br /&gt;
&lt;br /&gt;
:All keys and tags in the unit definition may be manipulated, including some others.  Here is a sample list.  If you have a doubt about what keys are valid or what the valid value range is for each key, code a [store_unit] event, save the game, and examine what keys are in the file.&lt;br /&gt;
:* advanceto&lt;br /&gt;
:* alignment&lt;br /&gt;
:* alpha&lt;br /&gt;
:* attacks_left&lt;br /&gt;
:* canrecruit&lt;br /&gt;
:* controller&lt;br /&gt;
:* cost&lt;br /&gt;
:* description&lt;br /&gt;
:* experience&lt;br /&gt;
:* facing&lt;br /&gt;
:* flying&lt;br /&gt;
:* fog&lt;br /&gt;
:* gender&lt;br /&gt;
:* get_hit_sound&lt;br /&gt;
:* gold&lt;br /&gt;
:* goto_x&lt;br /&gt;
:* goto_y&lt;br /&gt;
:* hitpoints&lt;br /&gt;
:* id&lt;br /&gt;
:* image&lt;br /&gt;
:* image_defensive&lt;br /&gt;
:* income&lt;br /&gt;
:* language_name (same as the name key in the unit config)&lt;br /&gt;
:* level&lt;br /&gt;
:* max_attacks&lt;br /&gt;
:* max_experience&lt;br /&gt;
:* max_hitpoints&lt;br /&gt;
:* max_moves&lt;br /&gt;
:* movement&lt;br /&gt;
:* movement_type&lt;br /&gt;
:* moves&lt;br /&gt;
:* race&lt;br /&gt;
:* resting&lt;br /&gt;
:* shroud&lt;br /&gt;
:* side&lt;br /&gt;
:* team_name&lt;br /&gt;
:* type&lt;br /&gt;
:* unit_description&lt;br /&gt;
:* unrenamable&lt;br /&gt;
:* usage&lt;br /&gt;
:* value&lt;br /&gt;
:* x&lt;br /&gt;
:* y&lt;br /&gt;
:* zoc&lt;br /&gt;
:* [advancement]&lt;br /&gt;
:* [/advancement]&lt;br /&gt;
:* [movement_costs]&lt;br /&gt;
:* [/movement_costs]&lt;br /&gt;
:* [defense]&lt;br /&gt;
:* [/defense]&lt;br /&gt;
:* [resistance]&lt;br /&gt;
:* [/resistance]&lt;br /&gt;
:* [variables]&lt;br /&gt;
:* [/variables]&lt;br /&gt;
:* [status]&lt;br /&gt;
:* [/status]&lt;br /&gt;
:* [attack]&lt;br /&gt;
:* [/attack]&lt;br /&gt;
:* [modifications_description]&lt;br /&gt;
:* [/modifications_description]&lt;br /&gt;
:* [modifications]&lt;br /&gt;
:* [/modifications]&lt;br /&gt;
&lt;br /&gt;
* '''[store_starting_location]''': Stores the starting location of a side's leader in a variable. The variable is a composite type which will have members 'x', 'y', and 'terrain' (the terrain type for a starting location is always 'K' unless it has been changed)&lt;br /&gt;
** '''side''': the side whose starting location is to be stored&lt;br /&gt;
** '''variable''': (default='location'): the name of the variable to store the location in&lt;br /&gt;
* '''[store_locations]''': Stores a series of locations that pass certain criteria into an array. Each member of the array has members 'x' and 'y' (the position) and 'terrain' (the terrain type).&lt;br /&gt;
** [[StandardLocationFilter]]: a location or location range which specifies the locations to store. You must specify this or no locations will be stored.&lt;br /&gt;
** '''variable''': the name of the variable (array) into which to store the locations&lt;br /&gt;
** '''terrain''': a comma-sperated list of terrain codes. (See [[TerrainCodesWML]] for possible values.) If present, locations will only be chosen if the code for the terrain type of that location is listed.&lt;br /&gt;
** '''radius''': if present, any locations which are within '''radius''' hexes of the location filter will also be stored&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] only locations with units on them that match the filter will be stored. Use a blank filter to only store locations with units.&lt;br /&gt;
* '''[store_villages]''': Stores a series of locations of villages that pass certain criteria into an array. Each member of the array has members 'x' and 'y' (the position) and 'terrain' (the terrain type).&lt;br /&gt;
** '''owner_side''': a side number. If present, only villages owned by this side will be choosen. If owner_side=0, store the unowned villages. &lt;br /&gt;
** '''variable''': the name of the variable (array) into which to store the locations&lt;br /&gt;
** '''terrain''': a series of terrain characters. (See [[TerrainLettersWML]] for possible values.) If present, villages will only be chosen if the terrain code of the terrain type of that location is listed.  You may give a comma separated list of terrains.&lt;br /&gt;
** '''side''': (default=1) the side for which the gold should be stored&lt;br /&gt;
** '''variable''': (default='gold') the name of the variable to store the gold in&lt;br /&gt;
* '''[store_side]''': stores information about a certain side in a variable. The variable will contain the member variables 'name', 'team_name', 'gold' and 'income', 'fog', 'shroud', 'user_team_name', 'colour', 'controller', 'village_gold' and 'recruit'.)&lt;br /&gt;
** '''side''': the side whose information should be stored&lt;br /&gt;
** '''variable''': the name of the variable to store the information in&lt;br /&gt;
* '''[clear_variable]''': This will delete the given variable or array. This is good to use to clean up the set of variables -- e.g. a well-behaved scenario will delete any variables that shouldn't be kept for the next scenario before the end of the scenario.&amp;lt;br&amp;gt; Tags and variables of stored units can also be cleared, meaning that [trait]s and [object]s, for example, can be removed.&lt;br /&gt;
** '''name''': the name of the variable to clear.&lt;br /&gt;
* '''[role]''': tries to find a unit to assign a role to.&amp;lt;br&amp;gt;This is useful if you want to choose a non-major character to say some things during the game. Once a role is assigned, you can use '''role=''' in a unit filter to identify the unit with that role (See [[FilterWML]]).&amp;lt;br&amp;gt;However, there is no guarantee that roles will ever be assigned. You can use '''[have_unit]''' (see [if]) to see whether a role was assigned. This tag uses a [[StandardUnitFilter]] with the modification to order the search by type, mark only the first unit found with the role, and the role attribute is not used in the search. If for some reason you want to search for units that have or don't have existing roles, you can use one or more [not] filters. The will check recall lists in addition to units on the map. In normal use, you will probably want to include a ''side'' attribute to force the unit to be on a particular side.&lt;br /&gt;
** '''role''': the value to store as the unit's role. This role is not used in the [[StandardUnitFilter]] when doing the search for the unit to assign this role to.&lt;br /&gt;
** '''type''': a comma-separated list of possible types the unit can be. If any types are given, then units will be searched by type in the order listed. If no type is given, then no particular order with respect to type is guaranteed.&lt;br /&gt;
* {{DevFeature}} '''[store_map_dimensions]''': Stores the map dimensions in a variable.&lt;br /&gt;
** '''variable''': the name of the variable where the values will be saved into. If it is skipped, a variable 'map_size' is used, and its contents overridden, if they existed already. The result is a container variable, with members ''width'' and ''height''.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[VariablesWML]]&lt;br /&gt;
* [[DirectActionsWML]]&lt;br /&gt;
* [[InterfaceActionsWML]]&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=23671</id>
		<title>InternalActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=23671"/>
		<updated>2008-03-16T10:18:08Z</updated>

		<summary type="html">&lt;p&gt;CIB: /* [event] */  add [set_variable][join]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Internal actions ==&lt;br /&gt;
&lt;br /&gt;
Internal actions are actions that WML uses internally that do not directly affect gameplay, for example storing a variable.&lt;br /&gt;
&lt;br /&gt;
The internal actions '''[if]''', '''[while]''', and '''[event]''' describe when/whether sets of actions should be executed.&lt;br /&gt;
&lt;br /&gt;
== [if] ==&lt;br /&gt;
&lt;br /&gt;
Executes different sets of actions based on whether the conditions described in the condition tags are true or not.&lt;br /&gt;
&lt;br /&gt;
Condition tags:&lt;br /&gt;
* '''[have_unit]''': a unit passing this filter with &amp;gt;0 HP exists&lt;br /&gt;
** [[StandardUnitFilter]] (almost... '''Note:''' does not check for matching units in the recall list)&lt;br /&gt;
&lt;br /&gt;
* '''[have_location]''': a location passing this filter exists &lt;br /&gt;
** [[StandardLocationFilter]]&lt;br /&gt;
&lt;br /&gt;
* '''[and]''': If an [and] is present, all must evaluate to true in order for the [if] to evaluate true. Useful as a bracket for complex conditions, but not strictly necessary.&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, [and] evaluates to true.&lt;br /&gt;
&lt;br /&gt;
* '''[or]''': If an [or] is present, one must evaluate to true in order for the [if] to evaluate true. ([[AdvancedConditionalWML|Example]])&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, '''[or]''' evaluates to true. &lt;br /&gt;
&lt;br /&gt;
* '''[not]''': If a [not] is present, none must evaluate to true in order for the [if] to evaluate true.&lt;br /&gt;
** condition tags as in [if]: if these evaluate to true, [not] evaluates to false.&lt;br /&gt;
&lt;br /&gt;
* '''[and],[or],[not]''': all top-level filters will support in-order conditional handling of and, or, and not. One important thing to remember is, if you have multiple [or]s, you should not wrap your first conditional statement into an [or] block.&lt;br /&gt;
&lt;br /&gt;
* '''[variable]''': tests something about the value of a WML variable (see [[VariablesWML]])&lt;br /&gt;
** '''name''': the name of the variable to test the value of&amp;lt;br&amp;gt;Only one of the following keys should be used for comparing the value of the variable to another value:&lt;br /&gt;
** '''equals''': $name is equal (string wise) to this&lt;br /&gt;
** '''not_equals''': $name is not equal to this&lt;br /&gt;
** '''greater_than''': $name is numerically greater than this&lt;br /&gt;
** '''less_than''': $name is less than this&lt;br /&gt;
** '''greater_than_equal_to''': $name is not less than this&lt;br /&gt;
** '''less_than_equal_to''': $name is not greater than this&lt;br /&gt;
** '''numerical_not_equals''': $name is greater than or less than this&lt;br /&gt;
** '''numerical_equals''': $name is not greater than or less than this&lt;br /&gt;
** '''boolean_equals''': $name has the same boolean value (e.g. off, false, 0, no)&lt;br /&gt;
** '''contains''': $name contains this string&lt;br /&gt;
** {{DevFeature}} '''boolean_not_equals''': $name has not the same boolean value. Strictly a syntactic shortcut for the following syntax that served its absence in 1.4:&lt;br /&gt;
  [not]&lt;br /&gt;
    [variable]&lt;br /&gt;
      name=...&lt;br /&gt;
      boolean_equals=...&lt;br /&gt;
    [/variable]&lt;br /&gt;
  [/not]&lt;br /&gt;
&lt;br /&gt;
After condition tags:&lt;br /&gt;
* '''[then]''': contains a set of action tags which should be executed if all conditions are true, or all conditions in any single [or] are true&lt;br /&gt;
* '''[else]''': contains a set of action tags which should be executed if any condition is false, and all [or] tags are false&lt;br /&gt;
&lt;br /&gt;
== [switch] {{DevFeature}} ==&lt;br /&gt;
&lt;br /&gt;
Executes different sets of action based ont the value of a variable.&lt;br /&gt;
  [switch]&lt;br /&gt;
     variable=foo&lt;br /&gt;
     [case]&lt;br /&gt;
        value=&amp;quot;A&amp;quot;&lt;br /&gt;
        ... WML if foo=A ...&lt;br /&gt;
     [/case]&lt;br /&gt;
     [case]&lt;br /&gt;
        value=&amp;quot;B&amp;quot;&lt;br /&gt;
        ... WML if foo=B ...&lt;br /&gt;
     [/case]&lt;br /&gt;
     [else]&lt;br /&gt;
        ... WML if not foo=A nor foo=B ...&lt;br /&gt;
     [/else]&lt;br /&gt;
  [/switch]&lt;br /&gt;
&lt;br /&gt;
* '''variable''': variable to check.&lt;br /&gt;
* '''[case]''': Case block. Contains:&lt;br /&gt;
** '''value''': the value to test the variable against.&lt;br /&gt;
** the action WML to execute if the variable matches the value (rest of the block).&lt;br /&gt;
* '''[else]''': Block of action WML to execute if no '''[case]''' block matches.&lt;br /&gt;
&lt;br /&gt;
== [while] ==&lt;br /&gt;
&lt;br /&gt;
Executes commands if all conditions are true.&lt;br /&gt;
Continues to execute them until a condition is not true.&lt;br /&gt;
&lt;br /&gt;
Executes a maximum of 1024 iterations per invocation.&lt;br /&gt;
Condition tags are the same as for [if]&lt;br /&gt;
&lt;br /&gt;
After condition tags:&lt;br /&gt;
* '''[do]''': contains actions that should be executed repeatedly until some condition is false.&lt;br /&gt;
&lt;br /&gt;
The '''[while]''' tag is useful for iterating over an array.&lt;br /&gt;
An array is a list of values.&lt;br /&gt;
The ''number''th value in the array '''array''' is stored in the WML variable '''''array''[number]'''.&lt;br /&gt;
Note that if '''number''' is the value of the variable '''variable''',&lt;br /&gt;
the expression '''$''array''[$variable]''' will return the ''number''th value in ''array''.&lt;br /&gt;
The macros 'FOREACH' and 'NEXT' ([[UtilWML]]) can be used to iterate over an array;&lt;br /&gt;
i.e. run a set of actions once per element of the array.&lt;br /&gt;
&lt;br /&gt;
=== {FOREACH} ===&lt;br /&gt;
If you wish to use a &amp;quot;for-each&amp;quot; iteration format (useful for example when you want to do an iteration for each row in a table) you can use the [http://www.wesnoth.org/misc/macro-reference.xhtml FOREACH] and [http://www.wesnoth.org/misc/macro-reference.xhtml NEXT] prededined macros.&lt;br /&gt;
&lt;br /&gt;
=== {REPEAT} ===&lt;br /&gt;
You can use the REPEAT macro to perform a quick iteration for a number of times you specify.&lt;br /&gt;
&lt;br /&gt;
== [event] ==&lt;br /&gt;
&lt;br /&gt;
This adds a new event to the scenario.&lt;br /&gt;
The event is in the normal format for an '''[event]''' tag (See [[EventWML]]).&lt;br /&gt;
This is useful if you want an event that can only be triggered when a prior event is fulfilled&lt;br /&gt;
&lt;br /&gt;
These tags describe actions that affect the values of WML variables&lt;br /&gt;
(see [[VariablesWML]] for information on WML variables,&lt;br /&gt;
and [[UtilWML]] for convenient macro shortcuts for some of these):&lt;br /&gt;
* '''[set_variable]''': manipulates a WML variable. {{Note:Predefined Macro|VARIABLE}} &lt;br /&gt;
** '''name''': the name of the variable to manipulate&lt;br /&gt;
** '''value''': set the variable to the given value (can be numeric or string). This only interprets dollars signs if it is the very first character, and then the entire value must be a simple variable name. (in 1.3.2, has the same effect as format. Use literal for no substitution)&lt;br /&gt;
** '''literal''': set the variable to the given value (can be numeric or string). This does not interpret any dollars signs.&lt;br /&gt;
** '''format''': set the variable to the given value. Interprets the dollar sign to a higher degree than most actions. (see [[VariablesWML]])&lt;br /&gt;
** '''to_variable''': Fully processes its value as in ''format'', and then gets the variable with that name.&lt;br /&gt;
** '''add''': add the given amount to the variable. To subtract, add a negative number.&lt;br /&gt;
** '''multiply''': multiply the variable by the given number. To divide, multiply by the inverse eg: 4/2 = 4 * 1/2 = 4 * 0.5. To negate, multiply by -1. The result is an integer.&lt;br /&gt;
** '''divide''': divide the variable by the given number. The result is an integer.&lt;br /&gt;
** '''modulo''': returns the remainder of an integer division. Both variables need to be an integer, the result is also an integer. eg 5 % 2 = 1.&lt;br /&gt;
** '''random''': the variable will be randomly set.&amp;lt;br&amp;gt;You may provide a comma separated list of possibilities, e.g. 'random=Bob,Bill,Bella'.&amp;lt;br&amp;gt;You may provide a range of numbers (integers), e.g. 'random=3..5'.&amp;lt;br&amp;gt;You may combine these, e.g. 'random=100,1..9', in which case there would be 1/10th chance of getting 100, just like for each of 1 to 9. Dollars signs are only normally interpreted here, so it is harder to have a dynamically determined range. You would need to create the random-string with ''format''.&lt;br /&gt;
** '''rand''': does the same as random, but has better MP support. See [[BuildingMultiplayerExamples]] for more info on the MP case. '''It is highly recommended that you use this feature for randomization.'''&lt;br /&gt;
** '''time=stamp''': Retrieves a timestamp in milliseconds since wesnoth was started, can be used as timing aid. Don't try to use this as random value in MP since it will cause an OOS.&lt;br /&gt;
** {{DevFeature}} '''string_length''': Retrieves the length in characters of the string passed as this attribute's value; such string is parsed and variable substitution applied automatically (see [[VariablesWML]] for details).&lt;br /&gt;
** {{DevFeature}} '''[join]''' joins an array of strings to a textual list&lt;br /&gt;
***variable: name of the array&lt;br /&gt;
***key: array[$i].key to look for the strings&lt;br /&gt;
***separator: separator to connect the elements&lt;br /&gt;
***remove_empty: wether to ignore empty elements&lt;br /&gt;
&lt;br /&gt;
* '''[store_unit]''': stores details about units into game variables.&amp;lt;br&amp;gt;Common usage is to manipulate a unit by using [store_unit] to store it into a variable, followed by manipulation of the variable, and then [unstore_unit] to re-create the unit with the modified variables.&amp;lt;br&amp;gt;Note: stored units also exist on the field, and modifying the stored variable will not automatically change the stats of the units. You need to use [unstore_unit]. See also [unstore_unit], [[DirectActionsWML]], and '''FOREACH''', [[UtilWML]]&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] all units matching this filter will be stored. If there are multiple units, they will be stored into an array of variables.&lt;br /&gt;
** '''variable''': the name of the variable into which to store the unit(s)&lt;br /&gt;
** '''mode''': defaults to ''always_clear'', which clears the variable, whether or not a match is found. If mode is set to ''replace'', the variable will only be cleared if a match is found. If mode is set to ''append'', the variable will not be cleared.&lt;br /&gt;
** '''kill''': if 'yes' the units that are stored will be removed from play. This is useful for instance to remove access to a player's recall list, with the intent to restore the recall list later.&lt;br /&gt;
:When a unit is stored, the following values may be manipulated with '''[set_variable]'''&lt;br /&gt;
:* description&lt;br /&gt;
:* experience&lt;br /&gt;
:* facing&lt;br /&gt;
:* gender&lt;br /&gt;
:* canrecruit&lt;br /&gt;
:* overlays&lt;br /&gt;
:* goto_x&lt;br /&gt;
:* goto_y&lt;br /&gt;
:* hitpoints&lt;br /&gt;
:* moves&lt;br /&gt;
:* resting&lt;br /&gt;
:* side&lt;br /&gt;
:* type&lt;br /&gt;
:* unrenamable&lt;br /&gt;
:* upkeep&lt;br /&gt;
:* user_description&lt;br /&gt;
:* x&lt;br /&gt;
:* y&lt;br /&gt;
:* [variables]&lt;br /&gt;
:* [status]&lt;br /&gt;
:* [modifications]&lt;br /&gt;
Variables, status, and modifications are children of the stored unit variable.  Example:&lt;br /&gt;
 [set_variable]&lt;br /&gt;
 name=unit_store.status.poisoned&lt;br /&gt;
 value=yes&lt;br /&gt;
 [/set_variable]&lt;br /&gt;
&lt;br /&gt;
:All keys and tags in the unit definition may be manipulated, including some others.  Here is a sample list.  If you have a doubt about what keys are valid or what the valid value range is for each key, code a [store_unit] event, save the game, and examine what keys are in the file.&lt;br /&gt;
:* advanceto&lt;br /&gt;
:* alignment&lt;br /&gt;
:* alpha&lt;br /&gt;
:* attacks_left&lt;br /&gt;
:* canrecruit&lt;br /&gt;
:* controller&lt;br /&gt;
:* cost&lt;br /&gt;
:* description&lt;br /&gt;
:* experience&lt;br /&gt;
:* facing&lt;br /&gt;
:* flying&lt;br /&gt;
:* fog&lt;br /&gt;
:* gender&lt;br /&gt;
:* get_hit_sound&lt;br /&gt;
:* gold&lt;br /&gt;
:* goto_x&lt;br /&gt;
:* goto_y&lt;br /&gt;
:* hitpoints&lt;br /&gt;
:* id&lt;br /&gt;
:* image&lt;br /&gt;
:* image_defensive&lt;br /&gt;
:* income&lt;br /&gt;
:* language_name (same as the name key in the unit config)&lt;br /&gt;
:* level&lt;br /&gt;
:* max_attacks&lt;br /&gt;
:* max_experience&lt;br /&gt;
:* max_hitpoints&lt;br /&gt;
:* max_moves&lt;br /&gt;
:* movement&lt;br /&gt;
:* movement_type&lt;br /&gt;
:* moves&lt;br /&gt;
:* race&lt;br /&gt;
:* resting&lt;br /&gt;
:* shroud&lt;br /&gt;
:* side&lt;br /&gt;
:* team_name&lt;br /&gt;
:* type&lt;br /&gt;
:* unit_description&lt;br /&gt;
:* unrenamable&lt;br /&gt;
:* usage&lt;br /&gt;
:* value&lt;br /&gt;
:* x&lt;br /&gt;
:* y&lt;br /&gt;
:* zoc&lt;br /&gt;
:* [advancement]&lt;br /&gt;
:* [/advancement]&lt;br /&gt;
:* [movement_costs]&lt;br /&gt;
:* [/movement_costs]&lt;br /&gt;
:* [defense]&lt;br /&gt;
:* [/defense]&lt;br /&gt;
:* [resistance]&lt;br /&gt;
:* [/resistance]&lt;br /&gt;
:* [variables]&lt;br /&gt;
:* [/variables]&lt;br /&gt;
:* [status]&lt;br /&gt;
:* [/status]&lt;br /&gt;
:* [attack]&lt;br /&gt;
:* [/attack]&lt;br /&gt;
:* [modifications_description]&lt;br /&gt;
:* [/modifications_description]&lt;br /&gt;
:* [modifications]&lt;br /&gt;
:* [/modifications]&lt;br /&gt;
&lt;br /&gt;
* '''[store_starting_location]''': Stores the starting location of a side's leader in a variable. The variable is a composite type which will have members 'x', 'y', and 'terrain' (the terrain type for a starting location is always 'K' unless it has been changed)&lt;br /&gt;
** '''side''': the side whose starting location is to be stored&lt;br /&gt;
** '''variable''': (default='location'): the name of the variable to store the location in&lt;br /&gt;
* '''[store_locations]''': Stores a series of locations that pass certain criteria into an array. Each member of the array has members 'x' and 'y' (the position) and 'terrain' (the terrain type).&lt;br /&gt;
** [[StandardLocationFilter]]: a location or location range which specifies the locations to store. You must specify this or no locations will be stored.&lt;br /&gt;
** '''variable''': the name of the variable (array) into which to store the locations&lt;br /&gt;
** '''terrain''': a comma-sperated list of terrain codes. (See [[TerrainCodesWML]] for possible values.) If present, locations will only be chosen if the code for the terrain type of that location is listed.&lt;br /&gt;
** '''radius''': if present, any locations which are within '''radius''' hexes of the location filter will also be stored&lt;br /&gt;
** '''[filter]''': [[StandardUnitFilter]] only locations with units on them that match the filter will be stored. Use a blank filter to only store locations with units.&lt;br /&gt;
* '''[store_villages]''': Stores a series of locations of villages that pass certain criteria into an array. Each member of the array has members 'x' and 'y' (the position) and 'terrain' (the terrain type).&lt;br /&gt;
** '''owner_side''': a side number. If present, only villages owned by this side will be choosen. If owner_side=0, store the unowned villages. &lt;br /&gt;
** '''variable''': the name of the variable (array) into which to store the locations&lt;br /&gt;
** '''terrain''': a series of terrain characters. (See [[TerrainLettersWML]] for possible values.) If present, villages will only be chosen if the terrain code of the terrain type of that location is listed.  You may give a comma separated list of terrains.&lt;br /&gt;
** '''side''': (default=1) the side for which the gold should be stored&lt;br /&gt;
** '''variable''': (default='gold') the name of the variable to store the gold in&lt;br /&gt;
* '''[store_side]''': stores information about a certain side in a variable. The variable will contain the member variables 'name', 'team_name', 'gold' and 'income', 'fog', 'shroud', 'user_team_name', 'colour', 'controller', 'village_gold' and 'recruit'.)&lt;br /&gt;
** '''side''': the side whose information should be stored&lt;br /&gt;
** '''variable''': the name of the variable to store the information in&lt;br /&gt;
* '''[clear_variable]''': This will delete the given variable or array. This is good to use to clean up the set of variables -- e.g. a well-behaved scenario will delete any variables that shouldn't be kept for the next scenario before the end of the scenario.&amp;lt;br&amp;gt; Tags and variables of stored units can also be cleared, meaning that [trait]s and [object]s, for example, can be removed.&lt;br /&gt;
** '''name''': the name of the variable to clear.&lt;br /&gt;
* '''[role]''': tries to find a unit to assign a role to.&amp;lt;br&amp;gt;This is useful if you want to choose a non-major character to say some things during the game. Once a role is assigned, you can use '''role=''' in a unit filter to identify the unit with that role (See [[FilterWML]]).&amp;lt;br&amp;gt;However, there is no guarantee that roles will ever be assigned. You can use '''[have_unit]''' (see [if]) to see whether a role was assigned. This tag uses a [[StandardUnitFilter]] with the modification to order the search by type, mark only the first unit found with the role, and the role attribute is not used in the search. If for some reason you want to search for units that have or don't have existing roles, you can use one or more [not] filters. The will check recall lists in addition to units on the map. In normal use, you will probably want to include a ''side'' attribute to force the unit to be on a particular side.&lt;br /&gt;
** '''role''': the value to store as the unit's role. This role is not used in the [[StandardUnitFilter]] when doing the search for the unit to assign this role to.&lt;br /&gt;
** '''type''': a comma-separated list of possible types the unit can be. If any types are given, then units will be searched by type in the order listed. If no type is given, then no particular order with respect to type is guaranteed.&lt;br /&gt;
* {{DevFeature}} '''[store_map_dimensions]''': Stores the map dimensions in a variable.&lt;br /&gt;
** '''variable''': the name of the variable where the values will be saved into. If it is skipped, a variable 'map_size' is used, and its contents overridden, if they existed already. The result is a container variable, with members ''width'' and ''height''.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[VariablesWML]]&lt;br /&gt;
* [[DirectActionsWML]]&lt;br /&gt;
* [[InterfaceActionsWML]]&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=InterfaceActionsWML&amp;diff=20720</id>
		<title>InterfaceActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=InterfaceActionsWML&amp;diff=20720"/>
		<updated>2008-01-12T13:24:05Z</updated>

		<summary type="html">&lt;p&gt;CIB: added text_input&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Interface actions ==&lt;br /&gt;
&lt;br /&gt;
Interface actions are actions that do not have an effect on gameplay;&lt;br /&gt;
instead, they show something to the player.  The main interface tags&lt;br /&gt;
are '''[message]''' and '''[objectives]''', but several other tags affect&lt;br /&gt;
the interface also.&lt;br /&gt;
&lt;br /&gt;
== [message] ==&lt;br /&gt;
The most commonly used interface action is [message], which displays a message to the user in a dialog box. It can also be used to take input from the user.&lt;br /&gt;
&lt;br /&gt;
The following key/tags are accepted for [message]:&lt;br /&gt;
* standard unit filter - the unit whose profile and name are displayed. If no unit matching this filter is found, the message is not displayed (The unit has probably been killed).&amp;lt;br&amp;gt;'''[message]''' elements should be constructed so that it is either guaranteed that a certain unit is alive, or so that dialog flows smoothly even if the message isn't displayed.&lt;br /&gt;
&lt;br /&gt;
* ''speaker'' an alternative to standard unit filter&lt;br /&gt;
** 'narrator' the dialog box is displayed without a caption for the unit speaking or a unit image&lt;br /&gt;
** 'unit' the primary unit for the event is speaking&lt;br /&gt;
** 'second_unit' the secondary unit for the event is speaking&lt;br /&gt;
&lt;br /&gt;
* ''message'' (translatable) the text to display to the right of the image. ''message'' is sometimes multiple lines; if it is, be sure to use quotes(''' ' ''' or ''' &amp;quot; ''')&lt;br /&gt;
* ''side_for'' (default: all sides) comma seperated list of sides for who message is shown.  {{DevFeature}}&lt;br /&gt;
* ''image'' (default: profile image of speaker) the image to display next to the message.&lt;br /&gt;
* ''caption'' (default: name of speaker) the caption to display under the image. Name to be displayed.&lt;br /&gt;
* ''duration'' (default: 10) the minimum number of frames for this message to be displayed. (A frame lasts about 30 milliseconds.) During this time any dialog decisions will be disregarded. {{DevFeature}}&lt;br /&gt;
* ''sound'' a sound effect (wav file) to play as the message is displayed. This can be a comma-separated list, from which one will be randomly chosen.&lt;br /&gt;
* '''[option]''' zero or more '''[option]''' elements may be present. If '''[option]''' elements are present, then each option will be displayed in a menu for the user to select one option.&lt;br /&gt;
** ''message'' (translatable) the text displayed for the option (see [[DescriptionWML]])&lt;br /&gt;
** '''[show_if]''' if present then this option will only be displayed if the conditional statement in this tag is passed (see [[InternalActionsWML]]) {{DevFeature}}&lt;br /&gt;
** '''[command]''' an element containing actions which are executed if the option is selected.&lt;br /&gt;
* '''[text_input]''' there can be only one [text_input] tag. this adds a text input field to the message.&lt;br /&gt;
** ''variable'' the variable that the user's input will be written to&lt;br /&gt;
** ''label'' a text label to the left of the input field&lt;br /&gt;
** ''max_chars'' the maximum number of characters that may be typed into the field&lt;br /&gt;
** ''text'' text that is written into the field in the beginning&lt;br /&gt;
* note that '''[option]''' and '''[text_input]''' can only be used in moveto events in MP, otherwise they cause OOS&lt;br /&gt;
&lt;br /&gt;
Text formatting options for '''[message]'''. These can also be used in unit names (user_description), objectives, and such.&lt;br /&gt;
* An asterisk (*) as the first character causes the line to be boldfaced.&lt;br /&gt;
* An at symbol (@) as the first character causes the line to be green, as done with victory conditions.&lt;br /&gt;
* A pound symbol (#) as the first character causes the line to be red, as done with defeat conditions.&lt;br /&gt;
* A backquote (`) as the first character causes the line to be smaller.&lt;br /&gt;
* If used, the caption key text is boldfaced.&lt;br /&gt;
* An RGB colour code in the beginning causes the line to be the given colour. This can still be preceded by the above characters. Example: ''message=_&amp;quot;&amp;lt;255,0,0&amp;gt;Red!&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
== [objectives] ==&lt;br /&gt;
The other tag used for plot development is '''[objectives]'''.&lt;br /&gt;
The '''[objectives]''' tag overwrites any previously set objectives,&lt;br /&gt;
and displays text which should describe the objectives of the scenario.&lt;br /&gt;
Scenario objectives are displayed on the player's first turn after the tag is used,&lt;br /&gt;
or as part of the event if it triggers during that player's turn.&lt;br /&gt;
Objectives can also be accessed at any time in a scenario using the&lt;br /&gt;
&amp;quot;Scenario Objectives&amp;quot; game menu option, making this tag useful for&lt;br /&gt;
scenario-specific information that the player may need to refer to during play.&lt;br /&gt;
&lt;br /&gt;
This tag renders the ''objectives'' attribute of [scenario] obsolete (see ''objectives'', [[ScenarioWML]]).&lt;br /&gt;
Instead of using ''objectives'', use '''[objectives]''' to set scenario objectives inside a prestart event.&lt;br /&gt;
It can also be used to overwrite the starting objectives mid-scenario.&lt;br /&gt;
&lt;br /&gt;
Attributes of '''[objectives]''':&lt;br /&gt;
* ''side'' Default '0'. The side to set the objectives for. A value of 0 sets objectives for all sides.&lt;br /&gt;
* ''summary'' Displayed first in the objectives text, this should describe the basic objective for the overall scenario.  Can be omitted.&lt;br /&gt;
* ''note'' Displayed last in the objectives text, this is sometimes used for hints or additional information.  Can be omitted.&lt;br /&gt;
* ''victory_string'' Default ' _ &amp;quot;Victory:&amp;quot;', this text precedes the victory objectives.&lt;br /&gt;
* ''defeat_string'' Default ' _ &amp;quot;Defeat:&amp;quot;', this text precedes the defeat objectives.&lt;br /&gt;
* ''silent'' Default: not present. If set to &amp;quot;yes&amp;quot;, the objectives are silently changed. Else, they will be shown to the user when appropriate.&lt;br /&gt;
&lt;br /&gt;
Tags of '''[objectives]''':&lt;br /&gt;
* '''[objective]''' describes a win or loss condition. Most scenarios have multiple win or loss conditions, so use a separate [objective] subtag for each line; this helps with translations.&lt;br /&gt;
** ''description'' text for the specific win or loss condition.&lt;br /&gt;
** ''condition'' The color and placement of the text. Values are 'win'(colored green, placed after ''victory_string'') and 'lose'(colored red, placed after ''defeat_string'')&lt;br /&gt;
&lt;br /&gt;
== [set_menu_item] {{DevFeature}} ==&lt;br /&gt;
This tag is used to add a custom option in the right-click context menu which can then be used to trigger arbitrary WML commands.&lt;br /&gt;
&lt;br /&gt;
* ''id'' the unique id for this menu item. If a menu item with this id already exists, it allows you to set specific changes to that item.&lt;br /&gt;
* ''description'' the in-game text that will appear for this item in the menu.&lt;br /&gt;
* ''image'' the image to display next to this item.&lt;br /&gt;
* ''needs_select'' if ''yes'' (default ''no''), then the latest select event (see [[EventWML]]) that triggered before this menu item was chosen will be transmitted over the network before this menu item action will be. This only has any effect in networked multiplayer, and is intended to allow more elaborate menu item behaviour there without causing out of sync errors. If you don't know what this means, just leave it false.&lt;br /&gt;
* '''[show_if]''' If present, the menu item will only be available if the conditional statement (see [[InternalActionsWML]]) within evaluates to true. When this is evaluated, the WML variables ''$x1'' and ''$y1'' will point to the location on which the context menu was invoked, so it's possible to for example only enable the option on empty hexes or on a particular unit.&lt;br /&gt;
* '''[filter_location]''' contains a location filter similar to the one found inside Single Unit Filters (see [[FilterWML]]). The menu item will only be available on matching locations.&lt;br /&gt;
* '''[command]''' contains the WML actions to be executed when the menu item is selected. Again, the WML variables ''$x1'' and ''$y1'' will point to the location on which the context menu was invoked on.&lt;br /&gt;
&lt;br /&gt;
== Other interface tags ==&lt;br /&gt;
&lt;br /&gt;
The following tags are also action tags:&lt;br /&gt;
* '''[item]''' makes a graphical item appear on a certain hex. Note this only places the graphics for an item. It does not make the item do anything. Use a moveto event to make moving onto the item do something.&lt;br /&gt;
** ''x'', ''y'' the location to place the item.&lt;br /&gt;
** ''image'' the image (in ''images/ ''as .png) to place on the hex.&lt;br /&gt;
** ''halo'' an image to place centered on the hex. Use this instead of ''image'' if the image is bigger than the hex.&lt;br /&gt;
* '''[removeitem]''' removes any graphical items on a given hex&lt;br /&gt;
** ''x'', ''y'' the hex to remove items off&lt;br /&gt;
* '''[print]''' displays a message across the screen. The message will disappear after a certain time.&lt;br /&gt;
** ''text'' (translatable) the text to display.&lt;br /&gt;
** ''size'' (default=12) the pointsize of the font to use&lt;br /&gt;
** ''duration'' (default=50) the length of time to display the text for. This is measured in the number of 'frames'. A frame in Wesnoth is usually displayed for around 30ms.&lt;br /&gt;
** ''red'', ''green'', ''blue'' (default=0,0,0) the color to display the text in. Values vary from 0-255.&lt;br /&gt;
* '''[move_unit_fake]''' moves an image of a unit along a certain path on the map. The path does not need to be a continuous list of adjacent hexes, so for example only the start and end points can be given, in which case the straightest line between those points will be calculated and used.&lt;br /&gt;
** ''type'' the type of the unit whose image to use&lt;br /&gt;
** ''x'' a comma-seperated list of x locations to move along&lt;br /&gt;
** ''y'' a comma-seperated list of y locations to move along (x and y values are matched pairs)&lt;br /&gt;
** ''side'' the side of the fake unit, used for team colouring the fake unit&lt;br /&gt;
* '''[hide_unit]''' makes the given unit become invisible. Useful in conjunction with '''[move_unit_fake]''' to move a leader unit into position on-screen. Only one unit may be hidden at a time.&lt;br /&gt;
** ''x'', ''y'' location of the unit to be hidden. (NOT a standard unit filter! Just x and y.)&lt;br /&gt;
* '''[unhide_unit]''' stops the currently hidden unit from being hidden.&lt;br /&gt;
* '''[scroll]''' Scroll a certain number of pixels in a given direction. Useful for earthquake/shaking effects.&lt;br /&gt;
** ''x'', ''y'' the number of pixels to scroll along the x and y axis&lt;br /&gt;
* '''[scroll_to]''' Scroll to a given hex&lt;br /&gt;
** ''x'', ''y'' the hex to scroll to&lt;br /&gt;
** ''check_fogged'' whether to scroll even to locations covered in fog or shroud. Possible values ''true'' (don't scroll to fog) and ''false'' (scroll even to fog), with ''false'' as the default.&lt;br /&gt;
* '''[scroll_to_unit]''' Scroll to a given unit&lt;br /&gt;
** standard unit filter&lt;br /&gt;
** ''check_fogged'' whether to scroll even to locations covered in fog or shroud. Possible values ''true'' (don't scroll to fog) and ''false'' (scroll even to fog), with ''false'' as the default.&lt;br /&gt;
* '''[sound]''' Plays a sound&lt;br /&gt;
** ''name'' the filename of the sound to play (in ''sounds/'' as .wav or .ogg)&lt;br /&gt;
** ''repeat'' {{DevFeature}} repeats the sound for a specified additional number of times (default=0)&lt;br /&gt;
* '''[sound_source]''' {{DevFeature}} Creates a sound source. &amp;quot;Sound sources&amp;quot; is a general name for a mechanism, which makes possible for map elements to emit sounds according to some rules, where &amp;quot;map elements&amp;quot; can be specific locations or terrain types. For now, only sound sources tied to locations are supported.&lt;br /&gt;
** ''id'' a unique identification key of the sound source&lt;br /&gt;
** ''sounds'' a list of comma separated, randomly played sounds associated with the sound source&lt;br /&gt;
** ''delay'' a numerical value (in milliseconds) of the minimal delay between two playbacks of the source's sound if the source remains visible on the screen; if one scrolls out and back in, the source will be considered as ready to play&lt;br /&gt;
** ''chance'' a percentage (a value from 0 to 100) describing the chance of the source being activated every second after the delay has passed or when the source's location appears on the screen (note that it cannot play more than one file at the same time)&lt;br /&gt;
** ''check_fogged'' possible values &amp;quot;true&amp;quot; and &amp;quot;false&amp;quot; - if true the source will not play if its locations are fogged/shrouded&lt;br /&gt;
** ''x,y'' a standard location filter for the locations associated with the sound source&lt;br /&gt;
* '''[remove_sound_source]''' {{DevFeature}} Removes a previously defined sound source.&lt;br /&gt;
** ''id'' the identification key of the sound source to remove&lt;br /&gt;
* '''[music]''' Switches to playing different music&lt;br /&gt;
** ''name'' the filename of the music to play (in ''music/'' as .ogg)&lt;br /&gt;
** see [[MusicListWML]] for the correct syntax&lt;br /&gt;
* '''[colour_adjust]''' tints the colour of the screen.&lt;br /&gt;
** ''red'', ''green'', ''blue'' values from -255 to 255, the amount to tint by for each colour&lt;br /&gt;
* '''[delay]''' pauses the game&lt;br /&gt;
** ''time'' the time to pause in milliseconds&lt;br /&gt;
* '''[redraw]''' redraws the screen (this normally isn't done during events, although some of the other interface actions cause the screen or parts of it to be redrawn).&lt;br /&gt;
** ''side'' if used, recalculates fog and shroud for that side. Useful if you for example spawn friendly units in the middle of an event and want the shroud to update accordingly (otherwise units that spawn inside fog would remain invisible for the duration of the event, since the fog would not automatically get cleared around them).&lt;br /&gt;
* '''[unit_overlay]''' sets an image that will be drawn over a particular unit, and follow it around&lt;br /&gt;
** ''x'', ''y'' the location of the unit to overlay on&lt;br /&gt;
** ''image'' the image to place on the unit&lt;br /&gt;
* '''[remove_unit_overlay]''' removes a particular overlayed image from a unit&lt;br /&gt;
** ''x'', ''y'' the location of the unit to remove an overlay from&lt;br /&gt;
** ''image'' the image to remove from the unit&lt;br /&gt;
* '''[animate_unit]''' uses the custom animation of a unit to animate it on screen (if the unit has the corresponding animation)&lt;br /&gt;
** ''flag'' the key to find the good custom animation in the unit description see the '''[extra_anim]''' description in [[AnimationWML]]&lt;br /&gt;
** '''[filter]''' a standard unit filter see [[FilterWML]] by default, the unit at the event location will be animated. You can use this tag to choose what unit to animate&lt;br /&gt;
* '''[label]''' places a label on the map.&lt;br /&gt;
** ''x'', ''y'' the location of the label&lt;br /&gt;
** ''text'' what the label should say&lt;br /&gt;
** ''team_name'' if specified, the label will only be visible to the given team.&lt;br /&gt;
* '''[deprecated_message]''' {{DevFeature}} shows a deprecated message in the message area, this feature is only intended to be used to warn about deprecated macros in mainline. The message is not translatable.&lt;br /&gt;
** ''message'' the message to show.&lt;br /&gt;
* '''[debug_message]''' {{DevFeature}} outputs a message to Wesnoth's console output. Intended for campaign designers to output silent text to the console, without annoying the player; then, that text might contain information useful for later bug-reporting.&lt;br /&gt;
** ''message'' the message to show&lt;br /&gt;
** ''logger'' the Wesnoth engine output logger that should catch the text; this might be 'err' (the errors log level), 'warn'/'wrn' (the warnings log level) or anything else (the information log level). Not all information will be displayed depending on the log level chosen when starting Wesnoth.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[DirectActionsWML]]&lt;br /&gt;
* [[InternalActionsWML]]&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=EffectWML&amp;diff=20373</id>
		<title>EffectWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=EffectWML&amp;diff=20373"/>
		<updated>2007-12-30T17:25:17Z</updated>

		<summary type="html">&lt;p&gt;CIB: added image_mod&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== the [effect] tag ==&lt;br /&gt;
&lt;br /&gt;
The tag [effect] is used to describe one modification to a unit.&lt;br /&gt;
Any number of [effect] tags can be used to describe a complete&lt;br /&gt;
modification.&lt;br /&gt;
Modifications are permanent changes to a unit;&lt;br /&gt;
currently there is no way of removing a modification.&lt;br /&gt;
&lt;br /&gt;
The following keys are always recognized for [effect]:&lt;br /&gt;
* ''unit_type'' only apply this effect if the affected unit's type name matches ''unit_type'' (can be a list of types).&lt;br /&gt;
* ''times'' {{DevFeature}} describes how much time the effect is applied. The default is to apply the effect once. Other possible value : &amp;quot;per level&amp;quot; which means that the effect is applied level times, where level is the unit level.&lt;br /&gt;
* ''apply_to'' describes what the effect actually affects.&lt;br /&gt;
[effect] uses different keys depending on the value of ''apply_to''.  ''apply_to'' can take the following values:&lt;br /&gt;
* &amp;quot;new_attack&amp;quot; will use all other keys and tags as the description of an attack that will be added to the unit. See [[AttackWML]].&lt;br /&gt;
* ''remove_attacks'' {{DevFeature}} remove the matching attacks. All tags from the attack filter construct will be used to match the attack; see [[FilterWML]]. Notes: do not use a [filter] tag. Also, the last remaining attack will never be removed (since Wesnoth don't support it).&lt;br /&gt;
* &amp;quot;attack&amp;quot; find an attack and modify it.  All tags from the attack filter construct will be used to match the attack; see [[FilterWML]].  After that, the following keys and tags can be used to modify the attack.  Note: do not use a [filter] tag.  Just put the keys you want to filter on inside the [effect] tag.&lt;br /&gt;
** ''set_name'' change the attack's name (ie identifier). ({{DevFeature}} this doesn't change the weapon's description like in 1.2)&lt;br /&gt;
** ''set_description'' {{DevFeature}} change the attack's description (ie displayed name). &lt;br /&gt;
** ''set_type'' change the attack type. Values are 'blade', 'pierce', 'impact', 'fire', 'cold', and 'holy'.&lt;br /&gt;
** ''set_special'' change the attack's specials. See [[AbilitiesWML]] for a list of possible values. Note that you can only set the normal specials defined in ''data/abilities.cfg'', not custom ones.&lt;br /&gt;
** ''[set_specials]'' {{DevFeature}} change the attack's specials. The specials to add are given exactly as in the [specials] tag.&lt;br /&gt;
*** ''mode'' if ''append'', adds the given specials to the attack. If ''replace'', replaces the existing specials with the given ones. Default ''replace''.&lt;br /&gt;
** ''remove_specials'' {{DevFeature}} remove the listed specials. The value of this key is the coma-separated list of the id of the specials to remove. This key is always evaluated before a [set_specials] tags in the same [effect]&lt;br /&gt;
** ''increase_damage'' increases the attack's damage.  This can be positive or negative, so you can use it to decrease damage as well.  If it ends in a percent(''''%''''), the change in damage will be a percentage ratio of the attack's original damage.&lt;br /&gt;
** ''increase_attacks'' increases the number of attack strikes. Like ''increase_damage'', it can be positive or negative, or a percentage.&lt;br /&gt;
** ''attack_weight'' change the attack's attack_weight. See [[AttackWML]] for explainations about attack_weight.&lt;br /&gt;
** ''defense_weight'' change the attack's defense_weight. See [[AttackWML]] for explainations about defense_weight.&lt;br /&gt;
* &amp;quot;hitpoints&amp;quot; modifies the unit's HP and/or max HP.&lt;br /&gt;
** ''increase'' the amount to increase the unit's HP.&lt;br /&gt;
** ''heal_full'' if present  and not set to &amp;quot;no&amp;quot; the unit will be put back to full HP.&lt;br /&gt;
** ''increase_total'' will increase the total HP of the unit.  Can be specified either as a negative or a positive value.  It can also be specified as a percentage of the current total; i.e. &amp;quot;-50%&amp;quot; will cut max HP in half.&lt;br /&gt;
** ''violate_maximum'' it the unit ends up with more than its max HP after these modifications, and this key is present (set to any non-null value, ex. 'yes'), the unit's HP won't be lowered to its max HP.&lt;br /&gt;
* &amp;quot;movement&amp;quot; modifies the unit's movement points.&lt;br /&gt;
** ''increase'' maximum movement is increased by this amount. It can be positive, negative, or specified as a percentage.&lt;br /&gt;
** ''set'' maximum movement is set to a specific value.&lt;br /&gt;
* &amp;quot;max_experience&amp;quot; affects the amount of XP the unit needs for the next level.&lt;br /&gt;
** ''increase'' how to change the xp; again it can be negative, positive or a percentage.&lt;br /&gt;
* &amp;quot;loyal&amp;quot; no keys associated. The affected unit will be loyal i.e have an upkeep of 0.&lt;br /&gt;
* &amp;quot;movement_costs&amp;quot; speed through specific terrain is modified&lt;br /&gt;
** ''replace'' If set to &amp;quot;true&amp;quot;, any new values replace the old ones. Otherwise, new values are added to old values (negative values allowed).&lt;br /&gt;
** [set_specials]&lt;br /&gt;
** [movement_costs] a subtag that describes the new movement costs just like in [[UnitWML]] for describing a unit type&lt;br /&gt;
* &amp;quot;defense&amp;quot; Sets unit chance to be hit in specific terrain (100 - defense value)&lt;br /&gt;
** ''replace'' If set to &amp;quot;true&amp;quot;, any new values replace the old ones. Otherwise, new values are added to old values (negative values allowed).&lt;br /&gt;
** [defense] a subtag that describes the new defense just like in [[UnitWML]] for describing a unit type&lt;br /&gt;
* &amp;quot;resistance&amp;quot; Sets percent damage taken from combat&lt;br /&gt;
** ''replace'' If set to &amp;quot;true&amp;quot;, any new values replace the old ones. Otherwise, new values are added to old values (negative values allowed).&lt;br /&gt;
** [resistance] a subtag that describes the new resistance just like in [[UnitWML]] for describing a unit type&lt;br /&gt;
* &amp;quot;variation&amp;quot; switches the unit into one of its variations.&lt;br /&gt;
** ''name'' the name of the variation to invoke.&lt;br /&gt;
* &amp;quot;status&amp;quot; modifies the status affecting the unit.&lt;br /&gt;
** ''add'' a list of status modifications to add. Beware, these may be reapplied later, such as when the unit is recalled or levels up; if in an event, you can use [[InternalActionsWML|[store_unit]]] and [[DirectActionsWML|[unstore_unit]]], modifying unit.status.name directly, to avoid this, or if you are creating the unit, you can just add it to the unit's [status] tag in the [unit] tag.  These are listed in [status], [[SingleUnitWML]].&lt;br /&gt;
** ''remove'' a list of status modifications to remove.&lt;br /&gt;
* ''zoc'' {{DevFeature}} toggle the zone of control.&lt;br /&gt;
** ''value'' new value for zoc (0=disable, other=enable).&lt;br /&gt;
* ''profile'' {{DevFeature}} customize the profile for this unit type&lt;br /&gt;
** ''portrait'' new image to display when the unit speaks&lt;br /&gt;
** ''description'' sets the text to display when hovering over the unit's type in the righthand pane&lt;br /&gt;
* &amp;quot;new_ability&amp;quot; {{DevFeature}} Adds one or more abilities to a unit.&lt;br /&gt;
** [abilities] A subtag that contains the ability definitions.&lt;br /&gt;
* &amp;quot;remove_ability&amp;quot; {{DevFeature}} Removes one or more abilities from a unit. Abilities are not reference counted: added, added, removed = gone.&lt;br /&gt;
** [abilities] A subtag that contains the ability definitions. Strictly speaking, all that is needed is the id= inside some tag.&lt;br /&gt;
* ''new_animation'' {{DevFeature}} contain animations that will be added to the unit&lt;br /&gt;
* &amp;quot;image_mod&amp;quot; modify the image path function([[ImagePathFunctionWML]]) of all the unit's frames&lt;br /&gt;
** ''replace'' the image path function to be used, e.g. &amp;quot;RC(magenta&amp;gt;red)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UnitWML]]&lt;br /&gt;
* [[AttackWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=TranslationsWML&amp;diff=17904</id>
		<title>TranslationsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=TranslationsWML&amp;diff=17904"/>
		<updated>2007-09-10T19:30:03Z</updated>

		<summary type="html">&lt;p&gt;CIB: documentation for textdomain syntax and tags&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes tags and syntax used for enabling translation in your user made campaign.&lt;br /&gt;
&lt;br /&gt;
== _ &amp;quot;&amp;lt;translatable string&amp;gt;&amp;quot; ==&lt;br /&gt;
Any string that you want to be translated has to be put inside _ &amp;quot; &amp;quot;.&lt;br /&gt;
Example:&lt;br /&gt;
 [message]&lt;br /&gt;
     speaker=narrator&lt;br /&gt;
     message= _ &amp;quot;This string is going to be translated.&amp;quot;&lt;br /&gt;
 [/message]&lt;br /&gt;
&lt;br /&gt;
== #textdomain &amp;lt;textdomain&amp;gt; ==&lt;br /&gt;
This comment tells Wesnoth to use a certain textdomain. Affects the tag that it has been placed in and all children until another #textdomain is found. A textdomain is a set of translations(you can create your own one for your campaign).&lt;br /&gt;
Example:&lt;br /&gt;
 #textdomain wesnoth-trow&lt;br /&gt;
 [event]&lt;br /&gt;
   #textdomain wesnoth-httt&lt;br /&gt;
   [message]&lt;br /&gt;
     message= _ &amp;quot;heir to the throne message&amp;quot; #this will be translated using the HttT textdomain&lt;br /&gt;
   [/message]&lt;br /&gt;
   [message]&lt;br /&gt;
     message= _ &amp;quot;heir to the throne message two&amp;quot; #same as above&lt;br /&gt;
   [/message]&lt;br /&gt;
 &lt;br /&gt;
   #textdomain wesnoth-utbs&lt;br /&gt;
   [message]&lt;br /&gt;
     message= _ &amp;quot;under the burning suns message&amp;quot; #UtbS textdomain&lt;br /&gt;
   [/message]&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [event]&lt;br /&gt;
   [message]&lt;br /&gt;
     message= _ &amp;quot;the rise of wesnoth message&amp;quot; #TroW textdomain&lt;br /&gt;
   [/message]&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
Note: The [scenario] tag isn't a child of [campaign], so you will have to specify a textdomain for both, your campaign and each of your scenarios.&lt;br /&gt;
&lt;br /&gt;
== the [textdomain] tag ==&lt;br /&gt;
&lt;br /&gt;
This tag, which has to be placed at the same level as [campaign], is used to specify a path for your own textdomain.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 [textdomain]&lt;br /&gt;
    name=&amp;quot;wesnoth-Liberty&amp;quot;&lt;br /&gt;
    path=&amp;quot;data/campaigns/Liberty/translations&amp;quot;&lt;br /&gt;
 [/textdomain]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=TerrainCodesWML&amp;diff=17629</id>
		<title>TerrainCodesWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=TerrainCodesWML&amp;diff=17629"/>
		<updated>2007-08-31T13:22:51Z</updated>

		<summary type="html">&lt;p&gt;CIB: /* Terrain strings '''''(SVN terrain only)''''' */  - updated terrain table, added ^ to terrain strings description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Values of terrain letters ==&lt;br /&gt;
&lt;br /&gt;
What each letter represents in Wesnoth maps,&lt;br /&gt;
and the possible values of the ''letter'' key.&lt;br /&gt;
&lt;br /&gt;
See [[TerrainWML]] for information on how to define a terrain.&lt;br /&gt;
&lt;br /&gt;
* '''A''' human (snow) hill village&lt;br /&gt;
* '''a''' human hill village&lt;br /&gt;
* '''B''' desert village (adobe)&lt;br /&gt;
* '''b''' human mountain village&lt;br /&gt;
* '''C''' castle&lt;br /&gt;
* '''c''' shallow water, &amp;quot;coast&amp;quot;&lt;br /&gt;
* '''D''' underground village (cave, village), &amp;quot;dungeon village&amp;quot;&lt;br /&gt;
* '''d''' sand, (old desert)&lt;br /&gt;
* '''E''' desert road&lt;br /&gt;
* '''e''' elven (snow) village&lt;br /&gt;
* '''F''' forest (snow)&lt;br /&gt;
* '''f''' forest&lt;br /&gt;
* '''G''' savanna (grass)&lt;br /&gt;
* '''g''' grass&lt;br /&gt;
* '''H''' hills (snow)&lt;br /&gt;
* '''h''' hills&lt;br /&gt;
* '''I''' desert&lt;br /&gt;
* '''i''' ice (tundra)&lt;br /&gt;
* '''J''' desert hills&lt;br /&gt;
* '''j''' -nothing- (will be snowy mountains)&lt;br /&gt;
* '''K''' keep (castle)&lt;br /&gt;
* '''k''' river ford (grass, shallow water)&lt;br /&gt;
* '''L''' tropical forest village (savanna, village)&lt;br /&gt;
* '''l''' lava (canyon)&lt;br /&gt;
* '''M''' desert mountains&lt;br /&gt;
* '''m''' mountain&lt;br /&gt;
* '''N''' ruined castle&lt;br /&gt;
* '''n''' encampment (castle)&lt;br /&gt;
* '''O''' -nothing- (will probably be an Orc Castle one day)&lt;br /&gt;
* '''o''' dwarven castle (castle)&lt;br /&gt;
* '''P''' desert oasis&lt;br /&gt;
* '''p''' dwarven village&lt;br /&gt;
* '''Q''' sunken ruin&lt;br /&gt;
* '''q''' ruin (swamp)&lt;br /&gt;
* '''R''' road (grass)&lt;br /&gt;
* '''r''' dirt (grass)&lt;br /&gt;
* '''S''' tundra&lt;br /&gt;
* '''s''' deep water&lt;br /&gt;
* '''T''' forest (tropical)&lt;br /&gt;
* '''t''' village&lt;br /&gt;
* '''U''' desert village (tent)&lt;br /&gt;
* '''u''' cave&lt;br /&gt;
* '''V''' snow village (tundra, village)&lt;br /&gt;
* '''v''' human village (village)&lt;br /&gt;
* '''W''' cavewall&lt;br /&gt;
* '''w''' swamp&lt;br /&gt;
* '''X''' canyon (replaced by chasm in trunk)&lt;br /&gt;
* '''x''' reserved for UMCs&lt;br /&gt;
* '''Y''' swamp village (swamp, village)&lt;br /&gt;
* '''y''' reserved for UMCs&lt;br /&gt;
* '''Z''' mermen village (shallow water)&lt;br /&gt;
* '''z''' reserved for UMCs&lt;br /&gt;
* '''/''','''|''','''\''' bridge (grass, shallow water)&lt;br /&gt;
* '''~''' fog&lt;br /&gt;
* ' ' void/shroud (it uses the &amp;quot;space&amp;quot; character)&lt;br /&gt;
* '''*''' reserved for UMCs&lt;br /&gt;
* '''^''' reserved for UMCs&lt;br /&gt;
* '''%''' reserved for UMCs&lt;br /&gt;
* '''@''' reserved for UMCs&lt;br /&gt;
* '''[''' rockbound cave &lt;br /&gt;
* ''']''' mushroom grove &lt;br /&gt;
* ''' ' ''' illuminated cave &lt;br /&gt;
* ''' ? ''' great Elven tree&lt;br /&gt;
* ''' &amp;amp; ''' impassable mountains&lt;br /&gt;
* ''' &amp;quot; ''' ???&lt;br /&gt;
* ''' $ ''' ???&lt;br /&gt;
* ''' . ''' ???&lt;br /&gt;
* ''' ; ''' ???&lt;br /&gt;
* ''' : ''' ???&lt;br /&gt;
* ''' &amp;lt; ''' ???&lt;br /&gt;
* ''' &amp;gt; ''' ???&lt;br /&gt;
* ''' _ ''' ???&lt;br /&gt;
* ''' ` ''' ???&lt;br /&gt;
&lt;br /&gt;
==Reserved letters and non-letter Characters==&lt;br /&gt;
Reserved letters are for custom terrains in user-made campaigns. In addition to these it is currently also possible to use other characters not on the above list to represent custom terrain, such as ½ § @ % etc., but new &amp;quot;official&amp;quot; terrain may be assigned for these characters in the future. So when creating custom terrain, the letters marked as reserved on the above list should be used first.&lt;br /&gt;
Use campaign definitions (see [[CampaignWML]]) to prevent your custom terrains from interfering with other campaigns.&lt;br /&gt;
&lt;br /&gt;
== Terrain strings '''''[[User:SkeletonCrew#Branch_terrain|(SVN terrain only)]]''''' ==&lt;br /&gt;
The terrains will be changed from a single letter to a multi letter system. There will be a compability layer for a short while. This layer doesn't work for campaigns with custom terrains, these campaigns have to be changed to use the new system.&lt;br /&gt;
&lt;br /&gt;
The following rules are stated for the new terrain letters, note most of these rules are not validated since it would slow down Wesnoth; not following these rules might break Wesnoth.&lt;br /&gt;
* terrain strings are between 2 and 4 characters&lt;br /&gt;
* terrain strings start with a capital letter and the following letters are lower case&lt;br /&gt;
* terrain strings can only contain letters, the symbols /|\ which are meant for directional items like bridges and the symbol ^&lt;br /&gt;
* the underscore is used for internal terrains&lt;br /&gt;
* the star '*' can be used for wildcards in some parts &lt;br /&gt;
* the symbol ^ usually points out that a terrain is created with layers, for example Gs^Fp means Forest(Fp) overlayer on Savanna(Gs).&lt;br /&gt;
&lt;br /&gt;
Starting positions are defined by a number followed by 1 space and then the terrain string; this means that a starting position is no longer automatically a keep.&lt;br /&gt;
&lt;br /&gt;
The letters Y,y,Z,z are reserved for UMC so any string containing any of these letters is a custom terrain. Other undefined terrain strings are reserved for future expansion within Wesnoth.&lt;br /&gt;
&lt;br /&gt;
=== Conversion form old to new ===&lt;br /&gt;
Map conversion logic is included in the [[Maintenance_tools|upconvert]] tool (in newer versions, [[Maintenance_tools|wmllint]]). This script will, among other things, convert a map with the old letters to the new strings. Here is a lookup table with the letters.&lt;br /&gt;
&lt;br /&gt;
 char= a    b    c    d    e    f    g    h    i    j    k    l    m      &lt;br /&gt;
 str=  Vhh  Vhm  Ww   Ds   Vea  Ff   Gg   Hh   Ai        Wwf  Ql   Mm   &lt;br /&gt;
&lt;br /&gt;
 char= n    o    p    q    r    s    t    u    v    w    x    y    z&lt;br /&gt;
 str=  Ce   Cud  Vud  Chs  Re   Wo   Veg  Uu   Vhg  Ss &lt;br /&gt;
&lt;br /&gt;
 char= A    B    C    D    E    F    G    H    I    J    K    L    M      &lt;br /&gt;
 str=  Vhha Vda  Ch   Vu   Rd   Fa   Gs   Ha   Dd   Hd   _K   Vht  Md&lt;br /&gt;
&lt;br /&gt;
 char= N    O    P    Q    R    S    T    U    V    W    X    Y    Z&lt;br /&gt;
 str=  Chr       Do   Chw  Rr   Aa   Ft   Vdt  Vha  Xu   Qxu  Vs   Vwm&lt;br /&gt;
&lt;br /&gt;
 char= /    |    \    &amp;amp;    _    ~    ?    ]    [    '&lt;br /&gt;
 str=  Bww/ Bww| Bww\ Xm   _s   _f   Fet  Uf   Uh   Uui&lt;br /&gt;
&lt;br /&gt;
=== Terrain Table ===&lt;br /&gt;
This is a list of the terrains, the strings used for them in the new map format, the letters used for them in the old map format, their id and the terrains they take their stats from. Generated from terrain.cfg using terrain2wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;String&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Old letter&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Stats from&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_off^_usr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;None&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_s&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Shroud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_f&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;~&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Fog&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ai&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;i&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ice&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Aa&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;S&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww^Bw|&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;|&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww^Bw/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww^Bw\&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;\&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wo^Bw|&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Deep Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wo^Bw/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Deep Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wo^Bw\&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Deep Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Bw|&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Bw/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Bw\&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ce&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;n&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Encampment&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ch&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;y&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cv&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;y&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Elven Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;o&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dwarven Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chw&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Q&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sunken Ruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;q&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swamp Ruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ke&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Encampment keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Kh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Kv&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Elven Keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Kud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dwarven keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Khr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ruined keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Khw&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sunken keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Khs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swamp keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Dc&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Crater&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;I&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Desert&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Dr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rubble&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ds&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;d&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Do&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;P&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Oasis&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Aa^Fpa&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;F&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow,Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gg^Fet&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Great Tree&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gs^Fp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;f&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gs^Ft&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;T&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tropical Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gg&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;g&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ggf&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;G&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Savanna&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ha&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;H&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hd&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;J&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dunes&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;h&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Md&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;M&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;m&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Qxu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chasm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ql&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;l&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lava&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chasm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rd&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Desert road&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Re&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;r&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dirt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Road&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Re^Gvs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Farmland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;w&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;u&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu^Ii&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave Lit&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu^Uf&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mushroom Grove&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Re^Uf&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mushroom Grove&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mushroom Grove&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rockbound Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uh^Ii&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rockbound Cave Lit&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Vda&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;U&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Vdt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;U&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Aa^Vea&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;e&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gg^Ve&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;t&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Aa^Vha&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;V&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gg^Vh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;t&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hh^Vhh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;a&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ha^Vhha&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mm^Vhh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;b&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gs^Vht&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;L&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu^Vu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;D&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu^Vud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;p&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww^Vm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Z&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Vhs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Y&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Vm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;s&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deep Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;c&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wwf&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;k&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;River Ford&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mm^Xm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Impassable Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave Wall&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Md^Xm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Impassable Desert Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave Wall&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Xu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave Wall&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding terrains ==&lt;br /&gt;
When adding terrains make sure the following files are also checked:&lt;br /&gt;
&lt;br /&gt;
data/faction/* contains favorite positions for the different factions, this is only used for the random map generator at the moment so it is not very important.&lt;br /&gt;
&lt;br /&gt;
data/abilities.cfg contains the definition of ''submerge'' and ''ambush'' so depending on the change these need to be updated.&lt;br /&gt;
&lt;br /&gt;
data/utils/utils.cfg contains the macro STARTING_VILLAGES which contains a list of village strings. This list doesn't support wildcards (yet).&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[TerrainWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=TerrainCodesWML&amp;diff=17627</id>
		<title>TerrainCodesWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=TerrainCodesWML&amp;diff=17627"/>
		<updated>2007-08-31T12:48:51Z</updated>

		<summary type="html">&lt;p&gt;CIB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Values of terrain letters ==&lt;br /&gt;
&lt;br /&gt;
What each letter represents in Wesnoth maps,&lt;br /&gt;
and the possible values of the ''letter'' key.&lt;br /&gt;
&lt;br /&gt;
See [[TerrainWML]] for information on how to define a terrain.&lt;br /&gt;
&lt;br /&gt;
* '''A''' human (snow) hill village&lt;br /&gt;
* '''a''' human hill village&lt;br /&gt;
* '''B''' desert village (adobe)&lt;br /&gt;
* '''b''' human mountain village&lt;br /&gt;
* '''C''' castle&lt;br /&gt;
* '''c''' shallow water, &amp;quot;coast&amp;quot;&lt;br /&gt;
* '''D''' underground village (cave, village), &amp;quot;dungeon village&amp;quot;&lt;br /&gt;
* '''d''' sand, (old desert)&lt;br /&gt;
* '''E''' desert road&lt;br /&gt;
* '''e''' elven (snow) village&lt;br /&gt;
* '''F''' forest (snow)&lt;br /&gt;
* '''f''' forest&lt;br /&gt;
* '''G''' savanna (grass)&lt;br /&gt;
* '''g''' grass&lt;br /&gt;
* '''H''' hills (snow)&lt;br /&gt;
* '''h''' hills&lt;br /&gt;
* '''I''' desert&lt;br /&gt;
* '''i''' ice (tundra)&lt;br /&gt;
* '''J''' desert hills&lt;br /&gt;
* '''j''' -nothing- (will be snowy mountains)&lt;br /&gt;
* '''K''' keep (castle)&lt;br /&gt;
* '''k''' river ford (grass, shallow water)&lt;br /&gt;
* '''L''' tropical forest village (savanna, village)&lt;br /&gt;
* '''l''' lava (canyon)&lt;br /&gt;
* '''M''' desert mountains&lt;br /&gt;
* '''m''' mountain&lt;br /&gt;
* '''N''' ruined castle&lt;br /&gt;
* '''n''' encampment (castle)&lt;br /&gt;
* '''O''' -nothing- (will probably be an Orc Castle one day)&lt;br /&gt;
* '''o''' dwarven castle (castle)&lt;br /&gt;
* '''P''' desert oasis&lt;br /&gt;
* '''p''' dwarven village&lt;br /&gt;
* '''Q''' sunken ruin&lt;br /&gt;
* '''q''' ruin (swamp)&lt;br /&gt;
* '''R''' road (grass)&lt;br /&gt;
* '''r''' dirt (grass)&lt;br /&gt;
* '''S''' tundra&lt;br /&gt;
* '''s''' deep water&lt;br /&gt;
* '''T''' forest (tropical)&lt;br /&gt;
* '''t''' village&lt;br /&gt;
* '''U''' desert village (tent)&lt;br /&gt;
* '''u''' cave&lt;br /&gt;
* '''V''' snow village (tundra, village)&lt;br /&gt;
* '''v''' human village (village)&lt;br /&gt;
* '''W''' cavewall&lt;br /&gt;
* '''w''' swamp&lt;br /&gt;
* '''X''' canyon (replaced by chasm in trunk)&lt;br /&gt;
* '''x''' reserved for UMCs&lt;br /&gt;
* '''Y''' swamp village (swamp, village)&lt;br /&gt;
* '''y''' reserved for UMCs&lt;br /&gt;
* '''Z''' mermen village (shallow water)&lt;br /&gt;
* '''z''' reserved for UMCs&lt;br /&gt;
* '''/''','''|''','''\''' bridge (grass, shallow water)&lt;br /&gt;
* '''~''' fog&lt;br /&gt;
* ' ' void/shroud (it uses the &amp;quot;space&amp;quot; character)&lt;br /&gt;
* '''*''' reserved for UMCs&lt;br /&gt;
* '''^''' reserved for UMCs&lt;br /&gt;
* '''%''' reserved for UMCs&lt;br /&gt;
* '''@''' reserved for UMCs&lt;br /&gt;
* '''[''' rockbound cave &lt;br /&gt;
* ''']''' mushroom grove &lt;br /&gt;
* ''' ' ''' illuminated cave &lt;br /&gt;
* ''' ? ''' great Elven tree&lt;br /&gt;
* ''' &amp;amp; ''' impassable mountains&lt;br /&gt;
* ''' &amp;quot; ''' ???&lt;br /&gt;
* ''' $ ''' ???&lt;br /&gt;
* ''' . ''' ???&lt;br /&gt;
* ''' ; ''' ???&lt;br /&gt;
* ''' : ''' ???&lt;br /&gt;
* ''' &amp;lt; ''' ???&lt;br /&gt;
* ''' &amp;gt; ''' ???&lt;br /&gt;
* ''' _ ''' ???&lt;br /&gt;
* ''' ` ''' ???&lt;br /&gt;
&lt;br /&gt;
==Reserved letters and non-letter Characters==&lt;br /&gt;
Reserved letters are for custom terrains in user-made campaigns. In addition to these it is currently also possible to use other characters not on the above list to represent custom terrain, such as ½ § @ % etc., but new &amp;quot;official&amp;quot; terrain may be assigned for these characters in the future. So when creating custom terrain, the letters marked as reserved on the above list should be used first.&lt;br /&gt;
Use campaign definitions (see [[CampaignWML]]) to prevent your custom terrains from interfering with other campaigns.&lt;br /&gt;
&lt;br /&gt;
== Terrain strings '''''[[User:SkeletonCrew#Branch_terrain|(SVN terrain only)]]''''' ==&lt;br /&gt;
The terrains will be changed from a single letter to a multi letter system. There will be a compability layer for a short while. This layer doesn't work for campaigns with custom terrains, these campaigns have to be changed to use the new system.&lt;br /&gt;
&lt;br /&gt;
The following rules are stated for the new terrain letters, note most of these rules are not validated since it would slow down Wesnoth; not following these rules might break Wesnoth.&lt;br /&gt;
* terrain strings are between 2 and 4 characters&lt;br /&gt;
* terrain strings start with a capital letter and the following letters are lower case&lt;br /&gt;
* terrain strings can only contain letters and the symbols /|\ which are meant for directional items like bridges.&lt;br /&gt;
* the underscore is used for internal terrains&lt;br /&gt;
* the star '*' can be used for wildcards in some parts &lt;br /&gt;
&lt;br /&gt;
Starting positions are defined by a number followed by 1 space and then the terrain string; this means that a starting position is no longer automatically a keep.&lt;br /&gt;
&lt;br /&gt;
The letters Y,y,Z,z are reserved for UMC so any string containing any of these letters is a custom terrain. Other undefined terrain strings are reserved for future expansion within Wesnoth.&lt;br /&gt;
&lt;br /&gt;
=== Conversion form old to new ===&lt;br /&gt;
Map conversion logic is included in the [[Maintenance_tools|upconvert]] tool (in newer versions, [[Maintenance_tools|wmllint]]). This script will, among other things, convert a map with the old letters to the new strings. Here is a lookup table with the letters.&lt;br /&gt;
&lt;br /&gt;
 char= a    b    c    d    e    f    g    h    i    j    k    l    m      &lt;br /&gt;
 str=  Vhh  Vhm  Ww   Ds   Vea  Ff   Gg   Hh   Ai        Wwf  Ql   Mm   &lt;br /&gt;
&lt;br /&gt;
 char= n    o    p    q    r    s    t    u    v    w    x    y    z&lt;br /&gt;
 str=  Ce   Cud  Vud  Chs  Re   Wo   Veg  Uu   Vhg  Ss &lt;br /&gt;
&lt;br /&gt;
 char= A    B    C    D    E    F    G    H    I    J    K    L    M      &lt;br /&gt;
 str=  Vhha Vda  Ch   Vu   Rd   Fa   Gs   Ha   Dd   Hd   _K   Vht  Md&lt;br /&gt;
&lt;br /&gt;
 char= N    O    P    Q    R    S    T    U    V    W    X    Y    Z&lt;br /&gt;
 str=  Chr       Do   Chw  Rr   Aa   Ft   Vdt  Vha  Xu   Qxu  Vs   Vwm&lt;br /&gt;
&lt;br /&gt;
 char= /    |    \    &amp;amp;    _    ~    ?    ]    [    '&lt;br /&gt;
 str=  Bww/ Bww| Bww\ Xm   _s   _f   Fet  Uf   Uh   Uui&lt;br /&gt;
&lt;br /&gt;
=== Terrain Table ===&lt;br /&gt;
This is a list of the terrains, the strings used for them in the new map format, the letters used for them in the old map format, their id and the terrains they take their stats from.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;String&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Old letter&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Stats from&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;off_map&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_off^_usr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;None&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;shroud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_s&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Shroud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fog&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_f&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;~&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Fog&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ice&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ai&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;i&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ice&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;tundra&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Aa&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;S&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww^Bw|&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;|&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgediag1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww^Bw/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgediag2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww^Bw\&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;\&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgedeep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wo^Bw|&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Deep Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgedeepdiag1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wo^Bw/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Deep Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgedeepdiag2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wo^Bw\&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Deep Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgeswamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Bw|&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgeswampdiag1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Bw/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgeswampdiag2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Bw\&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;encampment&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ce&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;n&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Encampment&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ch&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;y&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cv&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;y&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Elven Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;dwarven_castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;o&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dwarven Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sunkenruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chw&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Q&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sunken Ruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;swampruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;q&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swamp Ruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;encampment_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ke&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Encampment keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;human_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Kh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;elven_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Kv&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Elven Keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;dwarven_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Kud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dwarven keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ruined_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Khr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ruined keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sunken_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Khw&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sunken keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;swamp_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Khs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swamp keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;crater&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Dc&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Crater&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;desert&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;I&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Desert&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sand_rubble&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Dr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rubble&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ds&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;d&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;oasis&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Do&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;P&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Oasis&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;snow_forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Aa^Fpa&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;F&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow,Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;great_tree&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gg^Fet&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Great Tree&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gs^Fp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;f&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;tropical_forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gs^Ft&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;T&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tropical Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gg&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;g&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;grassland_flowers&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ggf&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;savanna&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;G&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Savanna&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;snow_hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ha&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;H&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;desert_hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hd&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;J&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dunes&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;h&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;desert_mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Md&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;M&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;m&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;canyon&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Qxu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chasm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;lava&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ql&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;l&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lava&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chasm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;road&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rd&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Desert road&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;dirt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Re&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;r&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dirt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;road&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Road&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;farm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Re^Gvs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Farmland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;swamp_water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;w&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;u&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;cave_beam&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu^Ii&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave Lit&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fungus&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu^Uf&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mushroom Grove&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fungusabove&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Re^Uf&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mushroom Grove&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mushroom Grove&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;rocky_cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rockbound Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;rocky_cave_beam&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uh^Ii&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rockbound Cave Lit&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;desert_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Vda&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;U&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;desert_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Vdt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;U&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;elven_snow_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Aa^Vea&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;e&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gg^Ve&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;t&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;snow_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Aa^Vha&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;V&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gg^Vh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;t&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;hill_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hh^Vhh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;a&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;snow-hill_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ha^Vhha&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mountain_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mm^Vhh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;b&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;tropical_forest_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gs^Vht&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;L&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;underground_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu^Vu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;D&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;dwarven_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu^Vud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;p&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mermen_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww^Vm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Z&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;swamp_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Vhs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Y&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;swamp_merfolk-village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Vm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;deep_water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;s&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deep Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;shallow_water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;c&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ford&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wwf&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;k&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;River Ford&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;cloud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mm^Xm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Impassable Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave Wall&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;clouddesert&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Md^Xm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Impassable Desert Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave Wall&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;cavewall&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Xu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;W&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave Wall&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Specials ====&lt;br /&gt;
These terrains are hardcoded in the game and translated&lt;br /&gt;
automatically. The old UMC terrains are here for backwards &lt;br /&gt;
compability this compability will only be guaranteed till &lt;br /&gt;
the next major release after 1.2.(That would be 1.4 or 2.0.) &lt;br /&gt;
As stated before the * will no longer be supported.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;String&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Old letter&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Theme&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_f&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;~&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fog&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;misc&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_s&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; (space character)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;void/shroud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;misc&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding terrains ==&lt;br /&gt;
When adding terrains make sure the following files are also checked:&lt;br /&gt;
&lt;br /&gt;
data/faction/* contains favorite positions for the different factions, this is only used for the random map generator at the moment so it is not very important.&lt;br /&gt;
&lt;br /&gt;
data/abilities.cfg contains the definition of ''submerge'' and ''ambush'' so depending on the change these need to be updated.&lt;br /&gt;
&lt;br /&gt;
data/utils/utils.cfg contains the macro STARTING_VILLAGES which contains a list of village strings. This list doesn't support wildcards (yet).&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[TerrainWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=TerrainCodesWML&amp;diff=17626</id>
		<title>TerrainCodesWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=TerrainCodesWML&amp;diff=17626"/>
		<updated>2007-08-31T12:46:57Z</updated>

		<summary type="html">&lt;p&gt;CIB: /* Terrain strings '''''(SVN terrain only)''''' */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Values of terrain letters ==&lt;br /&gt;
&lt;br /&gt;
What each letter represents in Wesnoth maps,&lt;br /&gt;
and the possible values of the ''letter'' key.&lt;br /&gt;
&lt;br /&gt;
See [[TerrainWML]] for information on how to define a terrain.&lt;br /&gt;
&lt;br /&gt;
* '''A''' human (snow) hill village&lt;br /&gt;
* '''a''' human hill village&lt;br /&gt;
* '''B''' desert village (adobe)&lt;br /&gt;
* '''b''' human mountain village&lt;br /&gt;
* '''C''' castle&lt;br /&gt;
* '''c''' shallow water, &amp;quot;coast&amp;quot;&lt;br /&gt;
* '''D''' underground village (cave, village), &amp;quot;dungeon village&amp;quot;&lt;br /&gt;
* '''d''' sand, (old desert)&lt;br /&gt;
* '''E''' desert road&lt;br /&gt;
* '''e''' elven (snow) village&lt;br /&gt;
* '''F''' forest (snow)&lt;br /&gt;
* '''f''' forest&lt;br /&gt;
* '''G''' savanna (grass)&lt;br /&gt;
* '''g''' grass&lt;br /&gt;
* '''H''' hills (snow)&lt;br /&gt;
* '''h''' hills&lt;br /&gt;
* '''I''' desert&lt;br /&gt;
* '''i''' ice (tundra)&lt;br /&gt;
* '''J''' desert hills&lt;br /&gt;
* '''j''' -nothing- (will be snowy mountains)&lt;br /&gt;
* '''K''' keep (castle)&lt;br /&gt;
* '''k''' river ford (grass, shallow water)&lt;br /&gt;
* '''L''' tropical forest village (savanna, village)&lt;br /&gt;
* '''l''' lava (canyon)&lt;br /&gt;
* '''M''' desert mountains&lt;br /&gt;
* '''m''' mountain&lt;br /&gt;
* '''N''' ruined castle&lt;br /&gt;
* '''n''' encampment (castle)&lt;br /&gt;
* '''O''' -nothing- (will probably be an Orc Castle one day)&lt;br /&gt;
* '''o''' dwarven castle (castle)&lt;br /&gt;
* '''P''' desert oasis&lt;br /&gt;
* '''p''' dwarven village&lt;br /&gt;
* '''Q''' sunken ruin&lt;br /&gt;
* '''q''' ruin (swamp)&lt;br /&gt;
* '''R''' road (grass)&lt;br /&gt;
* '''r''' dirt (grass)&lt;br /&gt;
* '''S''' tundra&lt;br /&gt;
* '''s''' deep water&lt;br /&gt;
* '''T''' forest (tropical)&lt;br /&gt;
* '''t''' village&lt;br /&gt;
* '''U''' desert village (tent)&lt;br /&gt;
* '''u''' cave&lt;br /&gt;
* '''V''' snow village (tundra, village)&lt;br /&gt;
* '''v''' human village (village)&lt;br /&gt;
* '''W''' cavewall&lt;br /&gt;
* '''w''' swamp&lt;br /&gt;
* '''X''' canyon (replaced by chasm in trunk)&lt;br /&gt;
* '''x''' reserved for UMCs&lt;br /&gt;
* '''Y''' swamp village (swamp, village)&lt;br /&gt;
* '''y''' reserved for UMCs&lt;br /&gt;
* '''Z''' mermen village (shallow water)&lt;br /&gt;
* '''z''' reserved for UMCs&lt;br /&gt;
* '''/''','''|''','''\''' bridge (grass, shallow water)&lt;br /&gt;
* '''~''' fog&lt;br /&gt;
* ' ' void/shroud (it uses the &amp;quot;space&amp;quot; character)&lt;br /&gt;
* '''*''' reserved for UMCs&lt;br /&gt;
* '''^''' reserved for UMCs&lt;br /&gt;
* '''%''' reserved for UMCs&lt;br /&gt;
* '''@''' reserved for UMCs&lt;br /&gt;
* '''[''' rockbound cave &lt;br /&gt;
* ''']''' mushroom grove &lt;br /&gt;
* ''' ' ''' illuminated cave &lt;br /&gt;
* ''' ? ''' great Elven tree&lt;br /&gt;
* ''' &amp;amp; ''' impassable mountains&lt;br /&gt;
* ''' &amp;quot; ''' ???&lt;br /&gt;
* ''' $ ''' ???&lt;br /&gt;
* ''' . ''' ???&lt;br /&gt;
* ''' ; ''' ???&lt;br /&gt;
* ''' : ''' ???&lt;br /&gt;
* ''' &amp;lt; ''' ???&lt;br /&gt;
* ''' &amp;gt; ''' ???&lt;br /&gt;
* ''' _ ''' ???&lt;br /&gt;
* ''' ` ''' ???&lt;br /&gt;
&lt;br /&gt;
==Reserved letters and non-letter Characters==&lt;br /&gt;
Reserved letters are for custom terrains in user-made campaigns. In addition to these it is currently also possible to use other characters not on the above list to represent custom terrain, such as ½ § @ % etc., but new &amp;quot;official&amp;quot; terrain may be assigned for these characters in the future. So when creating custom terrain, the letters marked as reserved on the above list should be used first.&lt;br /&gt;
Use campaign definitions (see [[CampaignWML]]) to prevent your custom terrains from interfering with other campaigns.&lt;br /&gt;
&lt;br /&gt;
== Terrain strings '''''[[User:SkeletonCrew#Branch_terrain|(SVN terrain only)]]''''' ==&lt;br /&gt;
The terrains will be changed from a single letter to a multi letter system. There will be a compability layer for a short while. This layer doesn't work for campaigns with custom terrains, these campaigns have to be changed to use the new system.&lt;br /&gt;
&lt;br /&gt;
The following rules are stated for the new terrain letters, note most of these rules are not validated since it would slow down Wesnoth; not following these rules might break Wesnoth.&lt;br /&gt;
* terrain strings are between 2 and 4 characters&lt;br /&gt;
* terrain strings start with a capital letter and the following letters are lower case&lt;br /&gt;
* terrain strings can only contain letters and the symbols /|\ which are meant for directional items like bridges.&lt;br /&gt;
* the underscore is used for internal terrains&lt;br /&gt;
* the star '*' can be used for wildcards in some parts &lt;br /&gt;
&lt;br /&gt;
Starting positions are defined by a number followed by 1 space and then the terrain string; this means that a starting position is no longer automatically a keep.&lt;br /&gt;
&lt;br /&gt;
The letters Y,y,Z,z are reserved for UMC so any string containing any of these letters is a custom terrain. Other undefined terrain strings are reserved for future expansion within Wesnoth.&lt;br /&gt;
&lt;br /&gt;
=== Conversion form old to new ===&lt;br /&gt;
Map conversion logic is included in the [[Maintenance_tools|upconvert]] tool (in newer versions, [[Maintenance_tools|wmllint]]). This script will, among other things, convert a map with the old letters to the new strings. Here is a lookup table with the letters.&lt;br /&gt;
&lt;br /&gt;
 char= a    b    c    d    e    f    g    h    i    j    k    l    m      &lt;br /&gt;
 str=  Vhh  Vhm  Ww   Ds   Vea  Ff   Gg   Hh   Ai        Wwf  Ql   Mm   &lt;br /&gt;
&lt;br /&gt;
 char= n    o    p    q    r    s    t    u    v    w    x    y    z&lt;br /&gt;
 str=  Ce   Cud  Vud  Chs  Re   Wo   Veg  Uu   Vhg  Ss &lt;br /&gt;
&lt;br /&gt;
 char= A    B    C    D    E    F    G    H    I    J    K    L    M      &lt;br /&gt;
 str=  Vhha Vda  Ch   Vu   Rd   Fa   Gs   Ha   Dd   Hd   _K   Vht  Md&lt;br /&gt;
&lt;br /&gt;
 char= N    O    P    Q    R    S    T    U    V    W    X    Y    Z&lt;br /&gt;
 str=  Chr       Do   Chw  Rr   Aa   Ft   Vdt  Vha  Xu   Qxu  Vs   Vwm&lt;br /&gt;
&lt;br /&gt;
 char= /    |    \    &amp;amp;    _    ~    ?    ]    [    '&lt;br /&gt;
 str=  Bww/ Bww| Bww\ Xm   _s   _f   Fet  Uf   Uh   Uui&lt;br /&gt;
&lt;br /&gt;
=== Terrain Table ===&lt;br /&gt;
This is a list of the terrains, the strings used for them in the new map format, the letters used for them in the old map format, their id and the terrains they take their stats from.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;ID&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;String&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Old letter&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Stats from&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;off_map&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_off^_usr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;None&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;shroud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_s&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Shroud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fog&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_f&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;~&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Fog&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ice&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ai&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;i&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ice&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;tundra&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Aa&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;S&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww^Bw|&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;|&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgediag1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww^Bw/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgediag2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww^Bw\&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;\&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgedeep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wo^Bw|&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Deep Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgedeepdiag1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wo^Bw/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Deep Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgedeepdiag2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wo^Bw\&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Deep Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgeswamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Bw|&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgeswampdiag1&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Bw/&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;bridgeswampdiag2&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Bw\&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Bridge&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;encampment&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ce&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;n&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Encampment&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ch&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;y&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cv&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;y&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Elven Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;dwarven_castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;o&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dwarven Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sunkenruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chw&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Q&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sunken Ruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;swampruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;q&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swamp Ruin&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;encampment_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ke&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Encampment keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;human_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Kh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;elven_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Kv&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Elven Keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;dwarven_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Kud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dwarven keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ruined_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Khr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ruined keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sunken_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Khw&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sunken keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;swamp_keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Khs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swamp keep&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Castle,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;crater&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Dc&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Crater&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;desert&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;I&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Desert&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sand_rubble&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Dr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rubble&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ds&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;d&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;oasis&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Do&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;P&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Oasis&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;snow_forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Aa^Fpa&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;F&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow,Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;great_tree&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gg^Fet&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;?&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Great Tree&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gs^Fp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;f&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;tropical_forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gs^Ft&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;T&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Tropical Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Forest&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gg&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;g&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;grassland_flowers&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ggf&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;savanna&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;G&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Savanna&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;snow_hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ha&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;H&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Snow,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;desert_hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hd&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;J&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dunes&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Sand,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;h&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;desert_mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Md&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;M&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;m&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;canyon&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Qxu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;X&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chasm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;lava&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ql&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;l&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Lava&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Chasm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;road&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rd&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Desert road&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;dirt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Re&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;r&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dirt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;road&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rr&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;E&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Road&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;farm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Re^Gvs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Farmland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;swamp_water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;w&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;u&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;cave_beam&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu^Ii&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave Lit&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fungus&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu^Uf&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mushroom Grove&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fungusabove&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Re^Uf&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mushroom Grove&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mushroom Grove&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;rocky_cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rockbound Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;rocky_cave_beam&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uh^Ii&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Rockbound Cave Lit&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;desert_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Vda&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;U&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;desert_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Dd^Vdt&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;U&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Sand&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;elven_snow_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Aa^Vea&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;e&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gg^Ve&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;t&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;snow_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Aa^Vha&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;V&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gg^Vh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;t&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;hill_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Hh^Vhh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;a&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;snow-hill_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ha^Vhha&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;A&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Hills&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mountain_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mm^Vhh&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;b&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;tropical_forest_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Gs^Vht&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;L&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;underground_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu^Vu&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;D&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;dwarven_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Uu^Vud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;p&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Cave&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;mermen_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww^Vm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Z&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;swamp_village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Vhs&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Y&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village,Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;swamp_merfolk-village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ss^Vm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Village&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Swamp&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;deep_water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wo&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;s&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Deep Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;shallow_water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Ww&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;c&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;ford&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Wwf&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;k&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;River Ford&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Grassland,Shallow Water&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;cloud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Mm^Xm&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;amp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Impassable Mountains&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Cave Wall&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;clouddese&lt;br /&gt;
&lt;br /&gt;
==== Specials ====&lt;br /&gt;
These terrains are hardcoded in the game and translated&lt;br /&gt;
automatically. The old UMC terrains are here for backwards &lt;br /&gt;
compability this compability will only be guaranteed till &lt;br /&gt;
the next major release after 1.2.(That would be 1.4 or 2.0.) &lt;br /&gt;
As stated before the * will no longer be supported.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;String&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Old letter&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Description&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Theme&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_f&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;~&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;fog&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;misc&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;_s&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; (space character)&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;void/shroud&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;misc&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding terrains ==&lt;br /&gt;
When adding terrains make sure the following files are also checked:&lt;br /&gt;
&lt;br /&gt;
data/faction/* contains favorite positions for the different factions, this is only used for the random map generator at the moment so it is not very important.&lt;br /&gt;
&lt;br /&gt;
data/abilities.cfg contains the definition of ''submerge'' and ''ambush'' so depending on the change these need to be updated.&lt;br /&gt;
&lt;br /&gt;
data/utils/utils.cfg contains the macro STARTING_VILLAGES which contains a list of village strings. This list doesn't support wildcards (yet).&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[TerrainWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ScenarioWML&amp;diff=15931</id>
		<title>ScenarioWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ScenarioWML&amp;diff=15931"/>
		<updated>2007-06-18T00:51:17Z</updated>

		<summary type="html">&lt;p&gt;CIB: added the objectives attribute&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== the toplevel tags [multiplayer], [test], [tutorial], [scenario] ==&lt;br /&gt;
&lt;br /&gt;
The top level tags '''[multiplayer]''', '''[test]''', '''[tutorial]''' and '''[scenario]''' are all formatted the same way.&lt;br /&gt;
The difference between these tags is the way that the scenarios they describe are accessed.&lt;br /&gt;
&lt;br /&gt;
The keys ''id'' and ''next_scenario'' affect how scenarios can be accessed.&lt;br /&gt;
Whenever a scenario is won, the scenario with id=''next_scenario'' of the same tag type will be played.&lt;br /&gt;
Units from the first scenario will be available for recall in the second.&lt;br /&gt;
&lt;br /&gt;
Some scenarios can be played without playing other scenarios first&lt;br /&gt;
(in this case there is nothing on the recall list).&lt;br /&gt;
These scenarios are called ''initial scenario''s.&lt;br /&gt;
&lt;br /&gt;
A list of initial scenarios, and how to access them:&lt;br /&gt;
&lt;br /&gt;
* All '''[multiplayer]''' scenarios are initial scenarios listed in the multiplayer scenario selector screen (accessed by the &amp;quot;multiplayer&amp;quot; button).&lt;br /&gt;
&lt;br /&gt;
* The '''[test]''' scenario with the attribute '''id=test''' is an initial scenario. This test scenario can be accessed by running the game in test mode. (note: this is NOT the same as debug mode. It can be accessed using -t or --test) You can speed up scenario development a lot by this when used in a clever way: Move a scenario into ~campaigns (so that it will be read even without its campaign being loaded), change it to a [test] scenario, and change the ID to 'test'. Then run Wesnoth in test mode. This saves about a minute for each time you want to test changes to your scenario. However it should not be used for balancing as there will be no recallable units...&lt;br /&gt;
&lt;br /&gt;
* The '''[tutorial]''' scenario with the attribute '''id=tutorial''' is an initial scenario. The tutorial is accessed by clicking on the &amp;quot;tutorial&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
* Any '''[scenario]''' scenario with an id listed in the value of ''first_scenario'' in a campaign tag (see [[CampaignWML]]) is an initial scenario accessed by selecting that campaign after clicking on the &amp;quot;campaign&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
== The [scenario] tag ==&lt;br /&gt;
&lt;br /&gt;
The following keys and tags are recognized in '''[scenario]''' tags:&lt;br /&gt;
&lt;br /&gt;
* ''id'' A unique identifier for this scenario.&lt;br /&gt;
&lt;br /&gt;
* ''next_scenario'' The id of the scenario to load when the current one is won. This can be changed dynamically, to build non-linear campaigns.&lt;br /&gt;
&lt;br /&gt;
* ''description'' (translatable) only for multiplayer maps. Will show up as a tooltip when mousing over the minimap in the multiplayer setup screen.&lt;br /&gt;
&lt;br /&gt;
* ''objectives'' sets the objectives for all sides. Useful for giving information about a MP scenario.&lt;br /&gt;
&lt;br /&gt;
* ''name'' (translatable) is shown in several places in the level, including the intro screen. It is also the default name for saves on the level.&lt;br /&gt;
&lt;br /&gt;
* ''map_data'' inputs valid Wesnoth map data. See [[BuildingMaps]] for a description of the Wesnoth map syntax.&lt;br /&gt;
&lt;br /&gt;
* ''turns'' sets an event on turn ''turns'' causing the player to lose. Use ''-1'' to have no turn limit. See also [[EventWML]]&lt;br /&gt;
&lt;br /&gt;
* ''turn_at'' the turn to start on (default=1)&lt;br /&gt;
&lt;br /&gt;
* ''random_start_time'' controls random starting time of day. Possible values are yes and no or list of possible start times; starting from 1 to number of times. for example ''random_starting_time=2,3,5,6'' (default=no) {{DevFeature}}&lt;br /&gt;
&lt;br /&gt;
* ''music'' the music file relative to ''./music/'' to play during the scenario&lt;br /&gt;
&lt;br /&gt;
* '''[music]''' specifies the music tracks to play during this scenario, see [[MusicListWML]].&lt;br /&gt;
&lt;br /&gt;
* ''theme'' the UI theme that should be used when playing this scenario. See [[Using_custom_themes_in_campaigns]]&lt;br /&gt;
&lt;br /&gt;
* ''victory_when_enemies_defeated'' when this is set to 'yes'(default), the player wins once all non-allied units with '''canrecruit=1''' (aka leaders) are killed. (Currently this only controls the win condition for when all enemies are defeated; it does not prevent the player from losing if he has no leader.)&lt;br /&gt;
&lt;br /&gt;
* ''disallow_recall'' when this is set to 'no'(default), the player is allowed to recall units from previous scenarios.&lt;br /&gt;
&lt;br /&gt;
* ''experience_modifier'' the percentage that required XP to level up (for all units in the scenario) is multiplied by. Default 100. Note that when used in a campaign, weird things (like units being above the required XP to level up) can happen if this value is different for different scenarios.&lt;br /&gt;
&lt;br /&gt;
* '''[story]''' describes the intro screen. See [[IntroWML]]&lt;br /&gt;
&lt;br /&gt;
* '''[label]''' sets a label&lt;br /&gt;
** ''x'', ''y'' location to set label&lt;br /&gt;
** ''text'' the label&lt;br /&gt;
&lt;br /&gt;
* '''[time]''', '''[illuminated_time]''' how a day should progress. See [[TimeWML]]&lt;br /&gt;
&lt;br /&gt;
* '''[time_area]''' how a day should progress in a given area. Everywhere not specified in a [time_area] tag is affected by the [time] and [illuminated_time] tags in the [scenario] tag&lt;br /&gt;
** standard location filter&lt;br /&gt;
** '''[time]''', '''[illuminated_time]''' how a day should progress in those locations. See [[TimeWML]]&lt;br /&gt;
&lt;br /&gt;
* '''[side]''' describes one player. See [[SideWML]]&lt;br /&gt;
&lt;br /&gt;
* '''[event]''' describes an event that may be triggered at a certain point of the scenario. See [[EventWML]]&lt;br /&gt;
&lt;br /&gt;
* ''map_generation'' another way to generate a map. The map will be generated randomly&lt;br /&gt;
** &amp;quot;default&amp;quot; the default random map generator&lt;br /&gt;
&lt;br /&gt;
* '''[generator]''' if this is present, the map and scenario will be generated randomly. See [[MapGeneratorWML]]&lt;br /&gt;
&lt;br /&gt;
the following key is additionnally recognized in '''[multiplayer]''' scenarios:&lt;br /&gt;
* ''allow_new_game'' {{DevFeature}} (default=yes) allow/prevent the scenario to be listed in the game creation interface. This is intended for extra scenarios in multiplayer campaigns&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=15930</id>
		<title>InternalActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=15930"/>
		<updated>2007-06-18T00:30:26Z</updated>

		<summary type="html">&lt;p&gt;CIB: changed poison=on to poison=true&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Internal actions ==&lt;br /&gt;
&lt;br /&gt;
Internal actions are actions that WML uses internally that do not directly affect gameplay, for example storing a variable.&lt;br /&gt;
&lt;br /&gt;
The internal actions '''[if]''', '''[while]''', and '''[event]''' describe when/whether sets of actions should be executed.&lt;br /&gt;
&lt;br /&gt;
== [if] ==&lt;br /&gt;
&lt;br /&gt;
Executes different sets of actions based on whether the conditions described in the condition tags are true or not.&lt;br /&gt;
&lt;br /&gt;
Condition tags:&lt;br /&gt;
* '''[have_unit]''' a unit passing this filter with &amp;gt;0 HP exists&lt;br /&gt;
** standard unit filter&lt;br /&gt;
&lt;br /&gt;
* '''[have_location]''' {{DevFeature}} a location passing this filter exists &lt;br /&gt;
** standard location filter&lt;br /&gt;
&lt;br /&gt;
* '''[and]''' If an [and] is present, all must evaluate to true in order for the [if] to evaluate true. Useful as a bracket for complex conditions, but not strictly necessary.&lt;br /&gt;
** condition tags as in [if] - if these evaluate to true, [and] evaluates to true.&lt;br /&gt;
&lt;br /&gt;
* '''[or]''' If an [or] is present, one must evaluate to true in order for the [if] to evaluate true. ([[AdvancedConditionalWML|Example]])&lt;br /&gt;
** condition tags as in [if] - if these evaluate to true, [or] evaluates to true.&lt;br /&gt;
&lt;br /&gt;
* '''[not]''' If a [not] is present, none must evaluate to true in order for the [if] to evaluate true.&lt;br /&gt;
** condition tags as in [if] - if these evaluate to true, [not] evaluates to false.&lt;br /&gt;
&lt;br /&gt;
* '''[variable]''' tests something about the value of a WML variable (see [[VariablesWML]])&lt;br /&gt;
** ''name'' the name of the variable to test the value of&amp;lt;br&amp;gt;Only one of the following keys should be used for comparing the value of the variable to another value:&lt;br /&gt;
** ''equals'' $name is equal (string wise) to this&lt;br /&gt;
** ''not_equals'' $name is not equal to this&lt;br /&gt;
** ''greater_than'' $name is numerically greater than this&lt;br /&gt;
** ''less_than'' $name is less than this&lt;br /&gt;
** ''greater_than_equal_to'' $name is not less than this&lt;br /&gt;
** ''less_than_equal_to'' $name is not greater than this&lt;br /&gt;
** ''numerical_not_equals'' $name is greater than or less than this&lt;br /&gt;
** ''numerical_equals'' $name is not greater than or less than this&lt;br /&gt;
** ''boolean_equals'' {{DevFeature}} $name has the same boolean value (e.g. off, false, 0, no)&lt;br /&gt;
&lt;br /&gt;
After condition tags:&lt;br /&gt;
* '''[then]''' contains a set of action tags which should be executed if all conditions are true, or all conditions in any single [or] are true&lt;br /&gt;
* '''[else]''' contains a set of action tags which should be executed if any condition is false, and all [or] tags are false&lt;br /&gt;
&lt;br /&gt;
== [while] ==&lt;br /&gt;
&lt;br /&gt;
executes commands if all conditions are true.&lt;br /&gt;
Continues to execute them until a condition is not true.&lt;br /&gt;
&lt;br /&gt;
Executes a maximum of 1024 iterations per invocation.&lt;br /&gt;
Condition tags are the same as for [if]&lt;br /&gt;
&lt;br /&gt;
After condition tags:&lt;br /&gt;
* '''[do]''' contains actions that should be executed repeatedly until some condition is false.&lt;br /&gt;
&lt;br /&gt;
The [while] tag is useful for iterating over an array.&lt;br /&gt;
An ''array'' is a list of values.&lt;br /&gt;
The ''number''th value in the array ''array'' is stored in the WML variable '''''array''[number]'''.&lt;br /&gt;
Note that if ''number'' is the value of the variable ''variable'',&lt;br /&gt;
the expression '''$''array''[$variable]''' will return the ''number''th value in ''array''.&lt;br /&gt;
The macros 'FOREACH' and 'NEXT' ([[UtilWML]]) can be used to iterate over an array;&lt;br /&gt;
i.e. run a set of actions once per element of the array.&lt;br /&gt;
&lt;br /&gt;
== [event] ==&lt;br /&gt;
&lt;br /&gt;
This adds a new event to the scenario.&lt;br /&gt;
The event is in the normal format for an '''[event]''' tag (See [[EventWML]]).&lt;br /&gt;
This is useful if you want an event that can only be triggered when a prior event is fulfilled&lt;br /&gt;
&lt;br /&gt;
These tags describe actions that affect the values of WML variables&lt;br /&gt;
(see [[VariablesWML]] for information on WML variables,&lt;br /&gt;
and [[UtilWML]] for convenient macro shortcuts for some of these):&lt;br /&gt;
* '''[set_variable]''' manipulates a WML variable.&lt;br /&gt;
** ''name'' the name of the variable to manipulate&lt;br /&gt;
** ''value'' set the variable to the given value (can be numeric or string). This only interprets dollars signs if it is the very first character, and then the entire value must be a simple variable name. (in 1.3.2, has the same effect as format. Use literal for no substitution)&lt;br /&gt;
** ''literal'' set the variable to the given value (can be numeric or string). This does not interpret any dollars signs. {{DevFeature}}&lt;br /&gt;
** ''format'' set the variable to the given value. Interprets the dollar sign to a higher degree than most actions. (see [[VariablesWML]])&lt;br /&gt;
** ''to_variable'' Fully processes its value as in ''format'', and then gets the variable with that name.&lt;br /&gt;
** ''add'' add the given amount to the variable. To subtract, add a negative number.&lt;br /&gt;
** ''multiply'' multiply the variable by the given number. To divide, multiply by the inverse eg: 4/2 = 4 * 1/2 = 4 * 0.5. To negate, multiply by -1. The result is an integer.&lt;br /&gt;
** ''divide'' {{DevFeature}} divide the variable by the given number. The result is an integer.&lt;br /&gt;
** ''modulo'' {{DevFeature}} returns the remainder of an integer division. Both variables need to be an integer, the result is also an integer. eg 5 % 2 = 1.&lt;br /&gt;
** ''random'' the variable will be randomly set.&amp;lt;br&amp;gt;You may provide a comma separated list of possibilities, e.g. 'random=Bob,Bill,Bella'.&amp;lt;br&amp;gt;You may provide a range of numbers (integers), e.g. 'random=3..5'.&amp;lt;br&amp;gt;You may combine these, e.g. 'random=100,1..9', in which case there would be 1/10th chance of getting 100, just like for each of 1 to 9. Dollars signs are only normally interpreted here, so it is harder to have a dynamically determined range. You would need to create the random-string with ''format''.&lt;br /&gt;
** ''time=stamp'' {{DevFeature}} Retrieves a timestamp in milliseconds, can be used as timing aid. Don't try to use this as random value in MP since it will cause an OOS.&lt;br /&gt;
&lt;br /&gt;
* '''[store_unit]''' stores details about units into game variables.&amp;lt;br&amp;gt;Common usage is to manipulate a unit by using [store_unit] to store it into a variable, followed by manipulation of the variable, and then [unstore_unit] to re-create the unit with the modified variables.&amp;lt;br&amp;gt;Note: stored units also exist on the field, and modifying the stored variable will not automatically change the stats of the units. You need to use [unstore_unit]. See also [unstore_unit], [[DirectActionsWML]], and '''FOREACH''', [[UtilWML]]&lt;br /&gt;
** '''[filter]''' (standard unit filter) all units matching this filter will be stored. If there are multiple units, they will be stored into an array of variables.&lt;br /&gt;
** ''variable'' the name of the variable into which to store the unit(s)&lt;br /&gt;
** ''mode'' defaults to ''always_clear'', which clears the variable, whether or not a match is found. If mode is set to ''replace'', the variable will only be cleared if a match is found. If mode is set to ''append'', the variable will not be cleared.&lt;br /&gt;
** ''kill'' if 'yes' the units that are stored will be removed from play. This is useful for instance to remove access to a player's recall list, with the intent to restore the recall list later.&lt;br /&gt;
:When a unit is stored, the following values may be manipulated with '''[set_variable]'''&lt;br /&gt;
:* description&lt;br /&gt;
:* experience&lt;br /&gt;
:* facing&lt;br /&gt;
:* gender&lt;br /&gt;
:* canrecruit&lt;br /&gt;
:* overlays&lt;br /&gt;
:* goto_x&lt;br /&gt;
:* goto_y&lt;br /&gt;
:* hitpoints&lt;br /&gt;
:* moves&lt;br /&gt;
:* resting&lt;br /&gt;
:* side&lt;br /&gt;
:* type&lt;br /&gt;
:* unrenamable&lt;br /&gt;
:* upkeep&lt;br /&gt;
:* user_description&lt;br /&gt;
:* x&lt;br /&gt;
:* y&lt;br /&gt;
:* [variables]&lt;br /&gt;
:* [status]&lt;br /&gt;
:* [modifications]&lt;br /&gt;
Variables, status, and modifications are children of the stored unit variable.  Example:&lt;br /&gt;
 [set_variable]&lt;br /&gt;
 name=unit_store.status.poisoned&lt;br /&gt;
 value=yes&lt;br /&gt;
 [/set_variable]&lt;br /&gt;
&lt;br /&gt;
:All keys and tags in the unit definition may be manipulated, including some others.  Here is a sample list.  If you have a doubt about what keys are valid or what the valid value range is for each key, code a [store_unit] event, save the game, and examine what keys are in the file.&lt;br /&gt;
:* advanceto&lt;br /&gt;
:* alignment&lt;br /&gt;
:* alpha&lt;br /&gt;
:* attacks_left&lt;br /&gt;
:* canrecruit&lt;br /&gt;
:* controller&lt;br /&gt;
:* cost&lt;br /&gt;
:* description&lt;br /&gt;
:* experience&lt;br /&gt;
:* facing&lt;br /&gt;
:* flying&lt;br /&gt;
:* fog&lt;br /&gt;
:* gender&lt;br /&gt;
:* get_hit_sound&lt;br /&gt;
:* gold&lt;br /&gt;
:* goto_x&lt;br /&gt;
:* goto_y&lt;br /&gt;
:* hitpoints&lt;br /&gt;
:* id&lt;br /&gt;
:* image&lt;br /&gt;
:* image_defensive&lt;br /&gt;
:* income&lt;br /&gt;
:* language_name (same as the name key in the unit config)&lt;br /&gt;
:* level&lt;br /&gt;
:* max_attacks&lt;br /&gt;
:* max_experience&lt;br /&gt;
:* max_hitpoints&lt;br /&gt;
:* max_moves&lt;br /&gt;
:* movement&lt;br /&gt;
:* movement_type&lt;br /&gt;
:* moves&lt;br /&gt;
:* race&lt;br /&gt;
:* resting&lt;br /&gt;
:* shroud&lt;br /&gt;
:* side&lt;br /&gt;
:* team_name&lt;br /&gt;
:* type&lt;br /&gt;
:* unit_description&lt;br /&gt;
:* unrenamable&lt;br /&gt;
:* usage&lt;br /&gt;
:* value&lt;br /&gt;
:* x&lt;br /&gt;
:* y&lt;br /&gt;
:* zoc&lt;br /&gt;
:* [advancement]&lt;br /&gt;
:* [/advancement]&lt;br /&gt;
:* [movement_costs]&lt;br /&gt;
:* [/movement_costs]&lt;br /&gt;
:* [defense]&lt;br /&gt;
:* [/defense]&lt;br /&gt;
:* [resistance]&lt;br /&gt;
:* [/resistance]&lt;br /&gt;
:* [variables]&lt;br /&gt;
:* [/variables]&lt;br /&gt;
:* [status]&lt;br /&gt;
:* [/status]&lt;br /&gt;
:* [attack]&lt;br /&gt;
:* [/attack]&lt;br /&gt;
:* [modifications_description]&lt;br /&gt;
:* [/modifications_description]&lt;br /&gt;
:* [modifications]&lt;br /&gt;
:* [/modifications]&lt;br /&gt;
&lt;br /&gt;
* '''[store_starting_location]''' Stores the starting location of a side's leader in a variable. The variable is a composite type which will have members 'x', 'y', and 'terrain' (the terrain type for a starting location is always 'K' unless it has been changed)&lt;br /&gt;
** ''side'' the side whose starting location is to be stored&lt;br /&gt;
** ''variable'' (default='location'): the name of the variable to store the location in&lt;br /&gt;
* '''[store_locations]''' Stores a series of locations that pass certain criteria into an array. Each member of the array has members 'x' and 'y' (the position) and 'terrain' (the terrain type).&lt;br /&gt;
** standard location filter- a location or location range which specifies the locations to store. You must specify this or no locations will be stored.&lt;br /&gt;
** ''variable'' the name of the variable (array) into which to store the locations&lt;br /&gt;
** ''terrain'' a series of terrain characters. (See [[TerrainLettersWML]] for possible values.) If present, locations will only be chosen if the letter of the terrain type of that location is listed. '''''[[User:SkeletonCrew#Branch_terrain|(SVN terrain only)]]''''' Here the list will be a comma separated list of terrains.&lt;br /&gt;
** ''radius'' if present, any locations which are within ''radius'' hexes of the location filter will also be stored&lt;br /&gt;
** '''[filter]''' (standard unit filter) only locations with units on them that match the filter will be stored. Use a blank filter to only store locations with units.&lt;br /&gt;
* '''[store_villages]''' {{DevFeature}} Stores a series of locations of villages that pass certain criteria into an array. Each member of the array has members 'x' and 'y' (the position) and 'terrain' (the terrain type).&lt;br /&gt;
** ''side'' a side number. If present, only villages owned by this side will be choosen. If side=0, store the unowned villages. &lt;br /&gt;
** ''variable'' the name of the variable (array) into which to store the locations&lt;br /&gt;
** ''terrain'' a series of terrain characters. (See [[TerrainLettersWML]] for possible values.) If present, villages will only be chosen if the letter of the terrain type of that location is listed. '''''[[User:SkeletonCrew#Branch_terrain|(SVN terrain only)]]''''' Here the list will be a comma separated list of terrains.&lt;br /&gt;
* '''[store_gold]''' stores the gold for a certain side in a variable. ({{DevFeature}} : this tag is no longer available)&lt;br /&gt;
** ''side'' (default=1) the side for which the gold should be stored&lt;br /&gt;
** ''variable'' (default='gold') the name of the variable to store the gold in&lt;br /&gt;
* '''[store_side]''' stores information about a certain side in a variable. The variable will contain the member variables 'name', 'team_name', 'gold' and 'income'.&lt;br /&gt;
** ''side'' the side whose information should be stored&lt;br /&gt;
** ''variable'' the name of the variable to store the information in&lt;br /&gt;
* '''[clear_variable]''' This will delete the given variable or array. This is good to use to clean up the set of variables -- e.g. a well-behaved scenario will delete any variables that shouldn't be kept for the next scenario before the end of the scenario.&amp;lt;br&amp;gt; Tags and variables of stored units can also be cleared, meaning that [trait]s and [object]s, for example, can be removed.&lt;br /&gt;
** ''name'' the name of the variable to clear.&lt;br /&gt;
* '''[role]''' tries to find a unit to assign a role to.&amp;lt;br&amp;gt;This is useful if you want to choose a non-major character to say some things during the game. Once a role is assigned, you can use '''role=''' in a unit filter to identify the unit with that role (See [[FilterWML]]).&amp;lt;br&amp;gt;However, there is no guarantee that roles will ever be assigned. You can use '''[have_unit]''' (see [if]) to see whether a role was assigned. This tag uses a Standard Unit Filter with the modification to order the search by type, mark only the first unit found with the role, and the role attribute is not used in the search. If for some reason you want to search for units that have or don't have existing roles, you can use one or more [not] filters. The will check recall lists in addition to units on the map. In normal use, you will probably want to include a ''side'' attribute to force the unit to be on a particular side.&lt;br /&gt;
** ''role'' the value to store as the unit's role. This role is not used in the Standard Unit Filter when doing the search for the unit to assign this role to.&lt;br /&gt;
** ''type'' a comma-separated list of possible types the unit can be. If any types are given, then units will be searched by type in the order listed. If no type is given, then no particular order with respect to type is guaranteed.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[VariablesWML]]&lt;br /&gt;
* [[DirectActionsWML]]&lt;br /&gt;
* [[InterfaceActionsWML]]&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>CIB</name></author>
		
	</entry>
</feed>