<?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=Tsr</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=Tsr"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Tsr"/>
	<updated>2026-05-01T15:40:45Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=FilterWML&amp;diff=34399</id>
		<title>FilterWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=FilterWML&amp;diff=34399"/>
		<updated>2010-03-09T09:36:54Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* Filtering Terrains */  Added village example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Filtering in WML ==&lt;br /&gt;
&lt;br /&gt;
A ''filter'' is a special WML block.&lt;br /&gt;
Filters are used to describe a set of units, hexes, or weapons.&lt;br /&gt;
Filters are defined as matching something if all the keys in the filter match that thing.&lt;br /&gt;
For example, if a unit filter contains two keys,&lt;br /&gt;
a unit must match both of the keys in order to match the filter.&lt;br /&gt;
&lt;br /&gt;
== Filtering Units ==&lt;br /&gt;
&lt;br /&gt;
Filters are often used in action tags (see [[EventWML]]).&lt;br /&gt;
In this case the phrase &amp;quot;standard unit filter&amp;quot; is used in place of the set of standard keys.&lt;br /&gt;
Sometimes a filter is used to find the first unit that matches the filter;&lt;br /&gt;
for example, the '''[recall]''' tag recalls that unit.&lt;br /&gt;
&lt;br /&gt;
Standard unit filters are also used in the tags '''[filter]''' and '''[filter_second]'''.&lt;br /&gt;
These are subtags of '''[event]''' which describe when the event should trigger.&lt;br /&gt;
Most event names (see [[EventWML]]) have units related to them called &amp;quot;primary unit&amp;quot; and &amp;quot;secondary unit&amp;quot;.&lt;br /&gt;
In order for an event to be triggered, ''primary unit'' must match the filter contained in '''[filter]''',&lt;br /&gt;
and ''secondary unit'' must match the filter contained in '''[filter_second]'''.&lt;br /&gt;
&lt;br /&gt;
See [[StandardUnitFilter]] for details.&lt;br /&gt;
&lt;br /&gt;
== Filtering Locations ==&lt;br /&gt;
&lt;br /&gt;
As you have seen, standard unit filter can contain a location filter.&lt;br /&gt;
Several actions, such as '''[terrain]''', also use location filters.&lt;br /&gt;
Location filters are represented on this site by the phrase &amp;quot;standard location filter&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See [[StandardLocationFilter]] for details.&lt;br /&gt;
&lt;br /&gt;
== Filtering Weapons ==&lt;br /&gt;
&lt;br /&gt;
Sometimes weapons are filtered on in WML.  See also [[EventWML]], [[EffectWML]], [[AnimationWML]].&lt;br /&gt;
&lt;br /&gt;
These keys are used as filter input for weapon filters.&lt;br /&gt;
&lt;br /&gt;
* '''range''': a range to filter&lt;br /&gt;
** '''melee''': only melee weapons pass &lt;br /&gt;
** '''ranged''': only ranged weapons pass &lt;br /&gt;
* '''name''': filter on the attack's name.&lt;br /&gt;
See '''data/units/''' or http://www.wesnoth.org/units/&lt;br /&gt;
to find the name of a particular unit's attack.&lt;br /&gt;
* '''type''': filter on the attack's type.&lt;br /&gt;
Values are 'blade', 'pierce', 'impact', 'fire', 'cold', and 'arcane'.&lt;br /&gt;
* '''damage''': {{DevFeature}} filter on damage value. Can be a specific number or a list of ranges like 'damage=0-5,7-99'&lt;br /&gt;
* '''special''': filter on the attack's special power.&lt;br /&gt;
For values see [[AbilitiesWML]].&lt;br /&gt;
&lt;br /&gt;
== Filtering Terrains ==&lt;br /&gt;
&lt;br /&gt;
Use '''[filter_location]''' within '''[filter]''' , for example:&lt;br /&gt;
&lt;br /&gt;
 [event]&lt;br /&gt;
     [filter]&lt;br /&gt;
         [filter_location]&lt;br /&gt;
             terrain=Ch &lt;br /&gt;
         [/filter_location]&lt;br /&gt;
     [/filter]&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
At some places the terrains can be filtered with a &lt;br /&gt;
match list. The list is a comma separated list and matching will stop&lt;br /&gt;
at the first matched [[TerrainCodesWML|terrain string]]. There's one special character&lt;br /&gt;
''!'' which inverts the meaning of a match. Terrain strings can &lt;br /&gt;
use the wildcard * to match zero or more following letters, characters&lt;br /&gt;
behind the * are not allowed and the result is undefined.&lt;br /&gt;
&lt;br /&gt;
Example 1: &amp;lt;br&amp;gt;&lt;br /&gt;
ww* matches ww, www, wwW but not WWW &amp;lt;br&amp;gt;&lt;br /&gt;
!, ww returns false if ww found and true if not &amp;lt;br&amp;gt;&lt;br /&gt;
!, ww, wa, !, aa returns false if ww or wa found and true if aa found and false if none found.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example 2: &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt;^V* matches all village-terrain &amp;lt;br&amp;gt;&lt;br /&gt;
Notice how the * can be used separately for both layers (base and overlay layers are separated by the ^-character).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For a list of terrain types and their string codes see [[TerrainCodesWML|TerrainCodesWML]].&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UnitTypeWML]]&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=EventWML&amp;diff=33735</id>
		<title>EventWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=EventWML&amp;diff=33735"/>
		<updated>2010-02-13T16:08:53Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* Predefined 'name' Key Values */  side x turn Y cleanup&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== The [event] Tag ==&lt;br /&gt;
&lt;br /&gt;
This tag is a subtag of the [scenario], [unit_type] and [era] tags which is used to describe a set of actions which trigger at a certain point in a scenario. When used in a [scenario] tag (also includes [multiplayer], [tutorial] and [test]), the event only occurs in that scenario. When used in a [unit_type] tag, the event will occur in all scenarios in which a unit of that type appears in (only after such a unit appears during the scenario, however). When used in an [era], the event will occur in any scenario which is played using that era.&lt;br /&gt;
&lt;br /&gt;
This tag has keys and child tags that control when and if the event actions will be triggered. Most important of these is the '''name''' key. Without it, no error will be raised but the event will never fire. Therefore, from a practical standpoint, it can be considered mandatory. All of the others can be used or not and the event actions will fire either way.&lt;br /&gt;
&lt;br /&gt;
=== The 'name' Key (Mandatory) ===&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
 name=&amp;lt;value&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is '''not''' like a normal 'name' key. ''It is a basic description of when the event will trigger.'' It also has a very large number of predefined values, one of which must be used for the key to be valid.&lt;br /&gt;
&lt;br /&gt;
'''Lexicon side note:''' ''It is not uncommon to refer to these values as the 'trigger' for an event and, furthermore, to call an event by its 'trigger' name. For example, in an event containing '''name=moveto''', a person might refer to the event as a ''''moveto''' event' and/or refer to the ''''moveto''' trigger' in the event or even talk about the 'event trigger' when referring to the '''moveto''' value of the 'name' key in that event. Some or all of this usage can, in fact, be found throughout this page.''&lt;br /&gt;
&lt;br /&gt;
The '''name''' key can accept a list of comma separated values describing when the event will be triggered.*  These values may be either predefined event types or  custom event names not matching any predefined type.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 name=attacker misses,defender misses&lt;br /&gt;
&lt;br /&gt;
''* Note that unless you use [[#first_time_only|first_time_only=no]], the event will fire only once, '''not''' once for each listed type.''&lt;br /&gt;
&lt;br /&gt;
==== Predefined 'name' Key Values ====&lt;br /&gt;
&lt;br /&gt;
All predefined event types are listed here along with a description of when this value will cause the event to be triggered. Any value ''not'' listed here is a custom event name which can be triggered only by a '''[fire_event]''' tag somewhere else. Spaces in event names can be interchanged with underscores (for example, '''name=new turn''' and '''name=new_turn''' are equivalent).&lt;br /&gt;
&lt;br /&gt;
; preload {{DevFeature}}&lt;br /&gt;
: Triggers before a scenario 'prestarts' and when loading a savegame -- before anything is shown on the screen at all. Can be used to set up the [[LuaWML|Lua]] environment: loading libraries, defining helper functions, etc.&lt;br /&gt;
: '''Note:''' Unlike prestart and start, the preload event '''must be able to fire more than once!''' This is because it is triggered each time a savegame is loaded in addition to the initial time when it loads before the scenario 'prestart'. This means that it is effectively ''mandatory'' to have the [[#first_time_only|first_time_only=no]] key value in a preload event. &lt;br /&gt;
&lt;br /&gt;
; prestart&lt;br /&gt;
: Triggers before a scenario 'starts' -- before anything is shown on the screen at all. Can be used to set up things like village ownership. For things displayed on-screen such as character dialog, use '''start''' instead.&lt;br /&gt;
: '''Note:''' ''This value makes the [[#first_time_only|first_time_only]] key irrelevant since, by definition, it can only fire once.''&lt;br /&gt;
&lt;br /&gt;
; start&lt;br /&gt;
: Triggers after the map is shown but before the scenario begins -- before players can 'do' anything.&lt;br /&gt;
: '''Note:''' ''This value makes the [[#first_time_only|first_time_only]] key irrelevant since, by definition, it can only fire once.''&lt;br /&gt;
&lt;br /&gt;
; new turn&lt;br /&gt;
: Triggers at the start of every turn (not side turn). See also [[#first_time_only|first_time_only=no]]. Before any events of this type trigger, the value of the WML variable '''turn_number''' is set to the number of the turn that is beginning.&lt;br /&gt;
&lt;br /&gt;
; side turn&lt;br /&gt;
: Triggers when a side is about to start its turn. Before events of this type trigger, the value of the WML variable '''side_number''' is set to the number of the side of the player about to take their turn. This is before any healing takes place for that side, before calculating income, and before restoring unit movement and status.&lt;br /&gt;
&lt;br /&gt;
; ai turn&lt;br /&gt;
: Triggered just before the AI is invoked for a side. This is called after ''side turn'', and thus the WML variable '''side_number''' still holds the number of this side. Note that this event might be called several times per turn in case that fallbacks to human or droiding is involved. I.e. it happens at the middle of turn of human side 1 if the human player droids his side. It happens after the selection of ai to play the turn but before AI is told that new turn has come.&lt;br /&gt;
: '''Note:'''  ''This event currently breaks replays since it is not explicitly saved in a replay and there is no AI involved in replays...''&lt;br /&gt;
&lt;br /&gt;
; turn refresh&lt;br /&gt;
: Like '''side turn''', triggers just before a side is taking control but '''after''' healing, calculating income, and restoring unit movement and status.&lt;br /&gt;
&lt;br /&gt;
; turn ''X''&lt;br /&gt;
: Triggers at the start of turn ''X''. It's the first side initialization event. Side initialization events go in the order of: &lt;br /&gt;
: 1) '''turn ''X''''' 2) '''new turn''' 3) '''side turn''' 4) '''side ''X'' turn''' 5) '''side ''X'' turn ''Y''''' 6) '''turn refresh'''&lt;br /&gt;
&lt;br /&gt;
; side ''X'' turn ''Y''&lt;br /&gt;
: This event triggers at the start of turn ''Y'' of side X  {{DevFeature}}&lt;br /&gt;
&lt;br /&gt;
; side ''X'' turn&lt;br /&gt;
: This event triggers at the start of any turn of side X {{DevFeature}}&lt;br /&gt;
: '''Note:''' ''Of course, [[#first_time_only|first_time_only=no]] is needed for this event to be triggered more than once.''&lt;br /&gt;
&lt;br /&gt;
; time over&lt;br /&gt;
: Triggers on turn ''turns''. (''turns'' is specified in [scenario])&lt;br /&gt;
&lt;br /&gt;
; enemies defeated&lt;br /&gt;
: Triggers when all units with '''canrecruit=yes''' (that is, all leaders) not allied with side 1 are killed.&lt;br /&gt;
&lt;br /&gt;
; victory&lt;br /&gt;
: In this scenario, any tag of the form '''[endlevel] result=victory [/endlevel]''' will be automatically preceded by all actions in this tag. It helps debugging if the victory event allows you to safely advance to any of the possible next maps after using the &amp;quot;:n&amp;quot; command. Scenarios where key units are picked up before the victory, or where some action chosen earlier determines which map to advance to, make it hard to quickly test scenarios in a campaign. (See also: [endlevel], [[DirectActionsWML]])&lt;br /&gt;
&lt;br /&gt;
; defeat&lt;br /&gt;
: In this scenario, any tag of the form '''[endlevel] result=defeat [/endlevel]''' will be automatically preceded by all actions in this tag. (See also [endlevel], [[DirectActionsWML]])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Filters can be applied to the following event triggers (see [[FilterWML]]; see also below). The actions specified in the event tag will be executed only if the filter returns true. &lt;br /&gt;
These event triggers are all actions by units ('''moveto''', '''attack''') or things that happen to units ('''recruit''', '''advance'''). When one of these events is triggered, the position of the active unit (referred to as the '''primary unit''') is stored in the variables '''x1''' and '''y1''' and the position of any unit that primary unit does something to is stored in the variables '''x2''' and '''y2''' (this unit is referred to as the '''secondary unit''' below). '' These units are also automatically stored in the variables 'unit' and 'second_unit' as if they had been stored using the '''[store_unit]''' tag. see [[SingleUnitWML]]&lt;br /&gt;
&lt;br /&gt;
; moveto&lt;br /&gt;
: Triggers after the primary unit moves. Typically this is used when the primary unit gets to a particular location and a filter for the location of the primary unit is included; remember that this is the location that the primary unit lands on, not the location it started on or any location it travels on.&amp;lt;br /&amp;gt;''An '''[allow_undo]''' tag anywhere within a moveto event will cancel any lack of undo functionality the event would have caused. Note that undo functionality will only move the unit back to its former location; it will not other changes to the game caused by the event. Thus it is up to the scenario designer to use this tag correctly.'' {{DevFeature}} $x2 and $y2 refer to the hex the unit came from.&lt;br /&gt;
&lt;br /&gt;
; sighted&lt;br /&gt;
: Triggers when the primary unit becomes visible to the secondary unit in particular after not being visible to the secondary unit's side (so if the secondary unit's side doesn't have shroud or fog, the event never triggers). This happens both when the primary unit moves into view during its turn, and when the secondary unit moves to a location where it can see the primary unit. (This editor hasn't tested whether the event triggers multiple times if the primary unit moves into view of multiple units at once, or if not, which one gets chosen to be the secondary unit here.) (Note: it appears that when a sighted event is triggered because an enemy unit moves into your field of view, the game engine cannot determine which unit (on your side) sees the unit that moved, and so it fires a ''name=sighted'' event without setting ''$second_unit''. This means that, for example, using ''speaker=second_unit'' inside a message tag may fail.) (Double note: it also appears that the sighted event in more recent versions of the game (1.6 and 1.7, maybe?) does not fire on enemy turns. That is, it only fires for units that become visible as a result of the motion of another unit, not for units that move into the vision of an enemy. This event is also buggy in general... it's usually better to use a moveto event with a [filter_vision] tag than to use a sighted event (and note that the combination of the two can achieve something like the old sighted event)).&lt;br /&gt;
&lt;br /&gt;
; attack&lt;br /&gt;
: Triggers when the primary unit attacks the secondary unit.&lt;br /&gt;
&lt;br /&gt;
; attack end&lt;br /&gt;
: Similar to '''attack''', but is triggered ''after'' the fight instead of before. Note that if either unit is killed during the fight, this event triggers before any '''die''' events.&lt;br /&gt;
&lt;br /&gt;
; attacker hits&lt;br /&gt;
: Triggers when the the primary unit (the attacker) hits the secondary unit (the defender). The value of the WML variable '''damage_inflicted''' is set to the number of hitpoints inflicted by the attacker.&lt;br /&gt;
&lt;br /&gt;
; attacker misses&lt;br /&gt;
: Same as ''attacker hits'', but is triggered when the attacker misses.&lt;br /&gt;
&lt;br /&gt;
; defender hits&lt;br /&gt;
: Triggers when the primary unit (the attacker) is hit in retaliation by the secondary unit (the defender). The value of the WML variable '''damage_inflicted''' is set to the number of hitpoints inflicted by the defender.&lt;br /&gt;
&lt;br /&gt;
; defender misses&lt;br /&gt;
: Same as ''defender hits'', but is triggered when the defender misses.&lt;br /&gt;
&lt;br /&gt;
; stone&lt;br /&gt;
: Triggers when the primary unit is hit by an attack with the 'stones' ability (See ''stones'', [[AbilitiesWML]]) by the secondary unit (the unit with the 'stones' ability). In {{DevFeature}}, this event name is changed to &amp;quot;petrified&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; last breath&lt;br /&gt;
: Triggers when the primary unit is killed by the secondary unit, but before the death animation is triggered.&lt;br /&gt;
&lt;br /&gt;
; die&lt;br /&gt;
: Triggers when the primary unit is killed by the secondary unit. ''Note: The primary unit is not removed from the game until the end of this event. The primary unit can still be manipulated, will block other units from taking its hex, and will still be found by standard unit filters (except [have_unit]). To prevent this behavior, you can use [kill] to remove the unit immediately. However, this will stop any (still unfired) other events that also match the unit from firing afterwards, so use with caution.''&lt;br /&gt;
&lt;br /&gt;
; capture&lt;br /&gt;
: Triggers when the primary unit captures a village. The village may have been previously neutral, or previously owned by another side; merely moving into your own villages does not constitute a capture.&lt;br /&gt;
&lt;br /&gt;
; recruit&lt;br /&gt;
: Triggers when the primary unit is recruited. (That is, when a unit is recruited it will trigger this event and this event's filter will filter that unit.).&lt;br /&gt;
&lt;br /&gt;
; prerecruit&lt;br /&gt;
: Triggers when the primary unit is recruited but before it is displayed.&lt;br /&gt;
&lt;br /&gt;
; recall&lt;br /&gt;
: Triggers after a unit is recalled.&lt;br /&gt;
&lt;br /&gt;
; prerecall&lt;br /&gt;
: Triggers when a unit is recalled but before it is displayed.&lt;br /&gt;
&lt;br /&gt;
; advance&lt;br /&gt;
: Triggers just before the primary unit is going to advance to another unit.&lt;br /&gt;
&lt;br /&gt;
; post advance&lt;br /&gt;
: Triggers just after the primary unit has advanced to another unit.&lt;br /&gt;
&lt;br /&gt;
; select&lt;br /&gt;
: Triggers when the primary unit is selected. Also triggers when ending a move, as the game keeps the moving unit selected by selecting it again at the end of movement. ''Note: in networked multiplayer, these events are only executed by the client on which the event is triggered, leading to out of sync errors if you modify the game state in the event.''&lt;br /&gt;
&lt;br /&gt;
; menu item ''X''&lt;br /&gt;
: Triggers when a WML menu item with id=''X'' is selected. ''Note: if the menu item has a [command], this event may be executed before or after the command; there is no guarantee.''&lt;br /&gt;
&lt;br /&gt;
=== Custom events.&lt;br /&gt;
&lt;br /&gt;
An event with a custom name may be invoked using the [[InternalActionsWML#.5Bfire_event.5D|[fire_event]]] tag.  Normally you'll use such custom events as named subroutines to be called by events with predefined types.  One common case of this, for example, is that more than one '''sighted''' events might fire the same custom event that changes the scenario objectives.&lt;br /&gt;
&lt;br /&gt;
=== Optional Keys and Tags ===&lt;br /&gt;
&lt;br /&gt;
These keys and tags are more complex ways to filter when an event should trigger:&lt;br /&gt;
&lt;br /&gt;
==== first_time_only ====&lt;br /&gt;
: Whether the event should be removed from the scenario after it is triggered. This key takes a [[ConditionalActionsWML#Boolean_Values|boolean]]; for example:&lt;br /&gt;
: ''first_time_only=yes''&lt;br /&gt;
:: Default behavior if key is omitted. The event will trigger the first time it can and never again.&lt;br /&gt;
: ''first_time_only=no''&lt;br /&gt;
:: The event will trigger every time the criteria are met instead of only the first time.&lt;br /&gt;
&lt;br /&gt;
==== [filter] ====&lt;br /&gt;
: The event will only trigger if the primary unit matches this filter.&lt;br /&gt;
:* [[StandardUnitFilter]]: selection criteria&lt;br /&gt;
&lt;br /&gt;
==== [filter_second] ====&lt;br /&gt;
: Like [filter], but for the secondary unit.&lt;br /&gt;
:* [[StandardUnitFilter]]: selection criteria&lt;br /&gt;
&lt;br /&gt;
==== [filter_attack] ====&lt;br /&gt;
: Can be used to set additional filtering criteria for the primary unit and the secondary unit that are not generally available in a standard unit filter. Can be used in events ''attack'', ''attacker hits'', ''attacker misses'', ''defender hits'', ''defender misses'' and ''attack end''. For more information and other filter keys, see [[FilterWML]].&lt;br /&gt;
:* '''name''': the name of the weapon used.&lt;br /&gt;
:* '''range''': the range of the weapon used.&lt;br /&gt;
:* '''special''': filter on the attack's special power.&lt;br /&gt;
&lt;br /&gt;
==== [filter_second_attack] ====&lt;br /&gt;
: Like [filter_attack], but for the secondary unit.&lt;br /&gt;
:* '''name''': the name of the weapon used.&lt;br /&gt;
:* '''range''': the range of the weapon used.&lt;br /&gt;
:* '''special''': filter on the attack's special power.&lt;br /&gt;
&lt;br /&gt;
==== [event] ====&lt;br /&gt;
: A special case 'action', the [event] tag may be used to create a [[#Nested Events|nested event]].&lt;br /&gt;
&lt;br /&gt;
==== delayed_variable_substitution ====&lt;br /&gt;
: This key is only relevant inside of a [[#Delayed Variable Substitution|nested event]] and controls when variable substitution will occur in those special case actions.&lt;br /&gt;
&lt;br /&gt;
=== Actions triggered by [event] ===&lt;br /&gt;
&lt;br /&gt;
After the trigger conditions have been met, all action tags within the [event] tag are executed in the order they are written in.&lt;br /&gt;
&lt;br /&gt;
There are 3 main types of actions:&lt;br /&gt;
* direct actions ([[DirectActionsWML]]) which have a direct effect on gameplay&lt;br /&gt;
* display actions ([[InterfaceActionsWML]]) which show something to the user&lt;br /&gt;
* internal actions ([[InternalActionsWML]]) which are used by WML internally&lt;br /&gt;
&lt;br /&gt;
Several actions use standard filters to find out which units&lt;br /&gt;
to execute the command on.  These are denoted by the phrases&lt;br /&gt;
&amp;quot;standard unit filter&amp;quot; and &amp;quot;standard location filter&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Nested Events ===&lt;br /&gt;
&lt;br /&gt;
There is one special type of action: event creation.  By placing an '''[event]''' tag inside another '''[event]''' tag, the nested event is spawned (created) when the parent (outer) event is encountered (when executing the contents of the parent event).&lt;br /&gt;
&lt;br /&gt;
([[#Nested Event Example|See Examples]])&lt;br /&gt;
&lt;br /&gt;
==== Delayed Variable Substitution ====&lt;br /&gt;
&lt;br /&gt;
Variable substitution for a nested event can happen either when it is spawned by the parent event or when it is triggered itself. This is controlled with the key '''delayed_variable_substitution''' which is used in the nested event.&lt;br /&gt;
&lt;br /&gt;
If this key is set to ''yes'', the variables in the nested event will contain values from the turn in which the ''nested'' event was triggered. ''This is the default behavior if the key is omitted.'' If set to ''no'', the variables in the nested event are set at the time the ''parent'' event is triggered.&lt;br /&gt;
&lt;br /&gt;
This behavior can be fine tuned with a special syntax when referencing variables. Instead of the normal '''$variable''' syntax, use '''$|variable''' to cause a variable to contain values relevant to the turn in which the nested event was triggered even when '''delayed_variable_substitution''' is set to ''no''. In this way you can have a mix of variables relevant to the parent and nested event trigger times.&lt;br /&gt;
&lt;br /&gt;
([[#Delayed Variable Substitution Example|See Examples]])&lt;br /&gt;
&lt;br /&gt;
== Multiplayer safety ==&lt;br /&gt;
&lt;br /&gt;
In multiplayer it is only safe to use WML that might require synchronization with other players because of input or random numbers (like [message] with input or options or [unstore_unit] where a unit might advance) in the following events. This is because in these cases WML needs data from other players to work right and/or do the same thing for all players. This data is only available after a network synchronization.&lt;br /&gt;
&lt;br /&gt;
List of synchronized events:&lt;br /&gt;
* moveto&lt;br /&gt;
* sighted &lt;br /&gt;
* attack&lt;br /&gt;
* attack_end &lt;br /&gt;
* attacker hits &lt;br /&gt;
* attacker misses &lt;br /&gt;
* defender hits&lt;br /&gt;
* defender misses &lt;br /&gt;
* stone&lt;br /&gt;
* last breath &lt;br /&gt;
* die&lt;br /&gt;
* capture &lt;br /&gt;
* recruit&lt;br /&gt;
* prerecruit &lt;br /&gt;
* recall &lt;br /&gt;
* prerecall &lt;br /&gt;
* advance &lt;br /&gt;
* post_advance &lt;br /&gt;
Events fired from a WML event handler that is synchronized:&lt;br /&gt;
* new turn {{DevFeature}}&lt;br /&gt;
* side turn {{DevFeature}}&lt;br /&gt;
* turn X {{DevFeature}}&lt;br /&gt;
* side X turn {{DevFeature}}&lt;br /&gt;
* side X turn Y {{DevFeature}}&lt;br /&gt;
* turn refresh {{DevFeature}}&lt;br /&gt;
&lt;br /&gt;
There is also the possibility of events that are synchronized when fired by the engine but can be non-synchronized when fired by WML tags from non-synchronized event. So when you are using them you must be extra careful. For example [unstore_unit] may trigger a unit advancement that will fire ''advance'' and ''post advance'' events.&lt;br /&gt;
&lt;br /&gt;
== A Trap for the Unwary ==&lt;br /&gt;
&lt;br /&gt;
It is perfectly possible (and, in fact, useful) to have multiple events with the same predefined name and thus the same trigger condition.  However, it is not defined what order such events will fire in, so you need to code so the order &lt;br /&gt;
will not matter.&lt;br /&gt;
&lt;br /&gt;
Because of the above, you need to beware of using macros to generate events. If you include a macro expanding to an event definition twice, the event will be executed twice (not once) each time the trigger condition fires. Consider this code:&lt;br /&gt;
&lt;br /&gt;
 #define DOUBLE&lt;br /&gt;
     [event]&lt;br /&gt;
         name=multiply_by_2&lt;br /&gt;
         {VARIABLE_OP 2_becomes_4 multiply 2}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
 &lt;br /&gt;
 {DOUBLE}&lt;br /&gt;
 {DOUBLE}&lt;br /&gt;
 &lt;br /&gt;
 {VARIABLE 2_becomes_4 2}&lt;br /&gt;
 		&lt;br /&gt;
 [fire_event]&lt;br /&gt;
     name=multiply_by_2&lt;br /&gt;
 [/fire_event]&lt;br /&gt;
 &lt;br /&gt;
 {DEBUG_MSG &amp;quot;$2_becomes_4 should be 4&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
After it executes, the debug message will reveal that the variable has been set to 8, not 4.&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Notes and Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Primary/Secondary Unit Speaker Example ===&lt;br /&gt;
&lt;br /&gt;
In events, the primary unit can be referred to as '''unit''' and the secondary unit can be referred to as '''second_unit''' in [message] tags using the '''speaker''' key. For example:&lt;br /&gt;
&lt;br /&gt;
 [event]&lt;br /&gt;
     name=die&lt;br /&gt;
     [message]&lt;br /&gt;
         speaker='''second_unit'''&lt;br /&gt;
         message= _ &amp;quot;Hahaha! I finally killed you!&amp;quot;&lt;br /&gt;
     [/message]&lt;br /&gt;
 &lt;br /&gt;
     [message]&lt;br /&gt;
         speaker='''unit'''&lt;br /&gt;
         message= _ &amp;quot;It's not over yet! I'll come back to haunt you!&amp;quot;&lt;br /&gt;
     [/message]&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
=== Nested Event Example ===&lt;br /&gt;
&lt;br /&gt;
An event is created for a portal that opens on turn 10. The parent (or 'outer') event executes on turn 10 at which point the nested moveto event is created. This nested event executes when a player steps on a certain spot.&lt;br /&gt;
&lt;br /&gt;
 [event]&lt;br /&gt;
     name=turn 10&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=moveto&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=5,8&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         # moving to 5,8 will trigger this event only on turn 10 and after&lt;br /&gt;
     [/event]&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
An equivalent way of doing this would be to create a single moveto event with an '''[if]''' statement to check for turn number but using nested '''[event]''' tags is a convenient shortcut to accomplish this task without resorting to '''[if]''' statements.&lt;br /&gt;
&lt;br /&gt;
=== Delayed Variable Substitution Example ===&lt;br /&gt;
&lt;br /&gt;
This code will display the turn on which the nested ''moveto'' event happens.&lt;br /&gt;
&lt;br /&gt;
 [event]&lt;br /&gt;
     name=turn 10&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=moveto&lt;br /&gt;
         delayed_variable_substitution=yes&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=5,8&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         {DEBUG_MSG &amp;quot;Turn $turn_number&amp;quot;} &lt;br /&gt;
    [/event]&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
Since this is the default behavior for the '''delayed_variable_substitution''' key, the following example is identical.&lt;br /&gt;
&lt;br /&gt;
 [event]&lt;br /&gt;
     name=turn 10&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=moveto&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=5,8&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         {DEBUG_MSG &amp;quot;Turn $turn_number&amp;quot;} &lt;br /&gt;
    [/event]&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
This code will always display &amp;quot;Turn 10&amp;quot; when the nested ''moveto'' event happens. This is because the variable substitution is done when the parent event is triggered and spawns the nested event, ''not'' when the nested event is triggered.&lt;br /&gt;
 &lt;br /&gt;
 [event]&lt;br /&gt;
     name=turn 10&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=moveto&lt;br /&gt;
         delayed_variable_substitution=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=5,8&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         {DEBUG_MSG &amp;quot;Turn $turn_number&amp;quot;} &lt;br /&gt;
    [/event]&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
Finally, this example is identical to the first two, in that it will display the turn on which the nested ''moveto'' event happens despite the fact that the '''delayed_variable_substitution''' key is set to ''no''. This is because the special '''$|variable''' syntax is used.&lt;br /&gt;
&lt;br /&gt;
 [event]&lt;br /&gt;
     name=turn 10&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=moveto&lt;br /&gt;
         delayed_variable_substitution=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=5,8&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         {DEBUG_MSG &amp;quot;Turn $|turn_number&amp;quot;} &lt;br /&gt;
    [/event]&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[DirectActionsWML]]&lt;br /&gt;
* [[InternalActionsWML]]&lt;br /&gt;
* [[InterfaceActionsWML]]&lt;br /&gt;
* [[FilterWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=TimeWML&amp;diff=33559</id>
		<title>TimeWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=TimeWML&amp;diff=33559"/>
		<updated>2010-01-04T14:59:24Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* The [time] and [illuminated_time] tags */ Corrected location of shedules.cfg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
&lt;br /&gt;
The time of day influences damage done by lawful and chaotic units; this makes timing of your attack important.&lt;br /&gt;
Graphically time of day is represented by a picture (landscape with sun or moon) in the status table, and by darkening the screen during night turns.&lt;br /&gt;
&lt;br /&gt;
Scenario author can schedule the times of day in scenario; use the pre-defined time macros, or create new times of day.&lt;br /&gt;
&lt;br /&gt;
== The [time] and [illuminated_time] tags ==&lt;br /&gt;
&lt;br /&gt;
The [time] tag is a subtag of the [scenario] tag. However, most scenarios do not use these directly, but usually use the ready macros '''{DAWN}, {MORNING}, {AFTERNOON}, {DUSK}, {FIRST_WATCH}, {SECOND_WATCH}''' and '''{UNDERGROUND}''' to specify the day-night cycle.&lt;br /&gt;
See '''data/core/macros/schedules.cfg''' for the definitions of these IDs.&lt;br /&gt;
&lt;br /&gt;
The [time] tag describes a single turn of a day/night sequence. When a scenario is played, the first turn is described by the first [time] tag; the second described by the second, until there are no more. After all the tags have described a turn, the next turn is described by the first tag again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The [time] tag recognizes the following keys:&lt;br /&gt;
&lt;br /&gt;
* '''id''': the id by which you can reference this time, e.g. in the ''time_of_day'' tag of [[AiWML]].&lt;br /&gt;
* '''name''': (translatable) the name displayed when the cursor is over the day/night image.&lt;br /&gt;
* '''image''': the image displayed at the top of the Status Table during turns of this type.&lt;br /&gt;
* '''mask''': the image displayed over all hexes during turns of this type.&lt;br /&gt;
* '''lawful_bonus''': units with '''alignment=lawful''' do +//lawful_bonus'' % damage during turns of this type. Units with '''alignment=chaotic''' do -''lawful_bonus'' % damage. Units with '''alignment=neutral''' are unaffected by this key. ''lawful_bonus'' can be a negative number. This is useful if you want to give Chaotic units an advantage instead of Lawful ones.&lt;br /&gt;
* '''red''', '''green''', '''blue''': describe the tint of the screen during the time period.  Appears to be an integer value from -255 to 255.  See schedules.cfg for examples.&lt;br /&gt;
* '''sound''': a sound to play (in sounds/) when changing into this time of day.&lt;br /&gt;
&lt;br /&gt;
=== Scheduling time ===&lt;br /&gt;
&lt;br /&gt;
The [scenario] tag contains a few [time] tags (or macros).&lt;br /&gt;
These time tags are used in a loop, that is: first time tag is used during the first turn, then second one,... and when all time tags passed then again the first one, second one, etc.&lt;br /&gt;
&lt;br /&gt;
The typical day/night cycle looks like this:&lt;br /&gt;
&lt;br /&gt;
 {DAWN}&lt;br /&gt;
 {MORNING}&lt;br /&gt;
 {AFTERNOON}&lt;br /&gt;
 {DUSK}&lt;br /&gt;
 {FIRST_WATCH}&lt;br /&gt;
 {SECOND_WATCH}&lt;br /&gt;
&lt;br /&gt;
To avoid day/night cycle, use a neutral time of day, for example:&lt;br /&gt;
&lt;br /&gt;
 {DAWN}&lt;br /&gt;
&lt;br /&gt;
In underground, use a special time of day.&lt;br /&gt;
It works like night; that is it gives advantage to chaotic units and disadvantage to lawful units.&lt;br /&gt;
&lt;br /&gt;
 {UNDERGROUND}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&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>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=InterfaceActionsWML&amp;diff=33558</id>
		<title>InterfaceActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=InterfaceActionsWML&amp;diff=33558"/>
		<updated>2010-01-04T09:03:40Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* Other interface tags */  Added information on animating items using the halo-key&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;
* [[StandardUnitFilter]]: The unit whose profile and name are displayed. Do not use a [filter] tag. 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. You may specify as the value of the speaker attribute a unit id or any of the following special values:&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;
* '''[show_if]''': if present then this message will only be displayed if the conditional statement in this tag is passed (see [[ConditionalActionsWML#Condition_Tags|ConditionalActionsWML]])&lt;br /&gt;
* '''side_for''': (default: all sides) comma-separated list of sides for who message is shown.&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 beside 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.&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]])&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;
* Check [[EventWML#Multiplayer_safety]] to find out in which events you can safely use '''[option]''' and '''[text_input]''' without causing OOS.&lt;br /&gt;
&lt;br /&gt;
=== Formatting ===&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;
* A tilde (~) 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;
* An asterisk (*) as the first character causes the line to be bigger.&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;
{{DevFeature}} In the 1.7 branch these formatting codes are being discarded in favor of [http://library.gnome.org/devel/pango/unstable/PangoMarkupFormat.html Pango markup]. Note that it's easiest to use ' for quoting in Pango markup since &amp;quot; is encoded as &amp;quot;&amp;quot; inside a WML string (so you have to modify the Pango examples accordingly if you want to use &amp;quot; quotes). Running wmllint on your campaign will up-convert it, warning you about unusual cases you must fix by hand.&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;
** '''[show_if]''': A condition that disables the objective if it doesn't hold. Conditional objectives are refreshed at '''[show_objectives]''' time only. {{DevFeature}}&lt;br /&gt;
&lt;br /&gt;
=== Macros ===&lt;br /&gt;
There are a few predefined macros for Objectives that you can use to shorten the code: [http://www.wesnoth.org/macro-reference.xhtml#SET_OBJECTIVES SET_OBJECTIVES], [http://www.wesnoth.org/macro-reference.xhtml#VICTORY_CONDITION VICTORY_CONDITION], and [http://www.wesnoth.org/macro-reference.xhtml#DEFEAT_CONDITION DEFEAT_CONDITION]. Follow the links for each one to see complete syntax and example usage.&lt;br /&gt;
&lt;br /&gt;
== [set_menu_item] ==&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. &amp;lt;tt&amp;gt;''('''Hint:''' There are a number of predefined items that are used in various campaigns that you can make use of. You can find [http://www.wesnoth.org/macro-reference.xhtml#file:items.cfg a list of them] if you look into the items.cfg file in the wesnoth install directory (under /data/core/macros))''&amp;lt;/tt&amp;gt;&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 or if you want to animate an image. ''Example (where the integer after the colon is the duration of each frame): halo=scenery/fire1.png:100,scenery/fire2.png:100,scenery/fire3.png:100,scenery/fire4.png:100,scenery/fire5.png:100,scenery/fire6.png:100,scenery/fire7.png:100,scenery/fire8.png:100''&lt;br /&gt;
** '''team_name''': name of the team for which the item is to be displayed (hidden for others). For multiple teams just put all the names in one string, for example separated by commas.&lt;br /&gt;
** '''visible_in_fog''': whether the item should be visible through fog or not. Default yes.&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;
** '''image''' if specified, only removes the given image item&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-separated list of x locations to move along&lt;br /&gt;
** '''y''': a comma-separated 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-coloring 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. Each '''[hide_unit]''' tag only hides one unit.&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;
** [[StandardUnitFilter]]&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''': repeats the sound for a specified additional number of times (default=0)&lt;br /&gt;
* '''[sound_source]''': 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&lt;br /&gt;
** '''check_shrouded''': {{DevFeature}} possible values &amp;quot;true&amp;quot; and &amp;quot;false&amp;quot; - if true the source will not play if its locations are shrouded&lt;br /&gt;
** '''x,y''': a [[StandardLocationFilter]] for the locations associated with the sound source&lt;br /&gt;
** '''fade_range''' (default = 3): distance in hexes that determines a &amp;quot;circular&amp;quot; area around the one specified by '''full_range''' where sound volume fades out linearly&lt;br /&gt;
** '''full_range''' (default = 14): distance in hexes that determines a &amp;quot;circular&amp;quot; area where source plays with full volume, relative to screen center&lt;br /&gt;
** '''loop''': number of times a sound sample should be looped if it stays visible. -1 means infinite (~65000)&lt;br /&gt;
* '''[remove_sound_source]''': 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]] Standar anims can be triggered with the following keywors ''leading recruited standing idling levelin levelout healing healed poisoned movement defend attack death victory pre_teleport post_teleport''&lt;br /&gt;
** '''[filter]''' with a [[StandardUnitFilter]] as argument, see [[FilterWML]]. By default, the unit at the event location will be animated. You can use this tag to choose any other unit to animate&lt;br /&gt;
** '''[primary_attack]''': if this tag is not present, the filter for animation will be triggered with no attack. If it is here, all attacks from the unit will be filtered, and a matching one will be used to filter the animation&lt;br /&gt;
** '''[secondary_attack]''': same for the second attack&lt;br /&gt;
** '''hits''': the hit type to filter unit on&lt;br /&gt;
** '''text''': a text to hover during the animation&lt;br /&gt;
** '''red''': red value for the text color&lt;br /&gt;
** '''green''': green value for the text color&lt;br /&gt;
** '''blue''': blue value for the text color&lt;br /&gt;
** '''with_bars''': whether to display the status bars or not.&lt;br /&gt;
** '''[animate]''': a sub block with the same syntax as the '''[animate_unit]''' except that the '''[filter]''' block is mandatory to find the unit. This block will find and animate another unit simultaneously&lt;br /&gt;
** '''[facing]''': a [[StandardLocationFilter]] specifying what direction the unit should be facing when animated&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;
** '''visible_in_fog''': whether the label should be visible through fog or not. Default yes.&lt;br /&gt;
* '''[deprecated_message]''' 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;
* '''[wml_message]''' 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. The log domain for it is '''wml''', and the '''debug/dbg''' log level is available for use with the '''logger''' attribute. Depending on the current log level ('''error''' by default), which may be changed with the in-game :log command, or the --log-&amp;lt;level&amp;gt;=wml command line switch, the messages are echoed to the in-game chat.&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;
* '''[open_help]''' opens the in-game help.&lt;br /&gt;
** '''topic''': the id of the topic to open&lt;br /&gt;
* '''[show_objectives]''': {{DevFeature}} refreshes the objectives defined by [objectives] and its [show_if] tags, and displays them. (It is also called whenever the user explicitly asks for the objectives; this matters only if the tag was overridden by a [[LuaWML#register_wml_action|Lua]] script.)&lt;br /&gt;
** '''side''': the side to show the objectives. If not set, all sides are used.&lt;br /&gt;
&lt;br /&gt;
== Useful Macros ==&lt;br /&gt;
There are some predefined macros that you find useful for interface 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;
* '''{FLOATING_TEXT}''' Float some text over a unit similar to the damage numbers.&lt;br /&gt;
* '''{HIGHLIGHT_UNIT}''' Highlight a unit on the map. Use this to show important units&lt;br /&gt;
* '''{HIGHLIGHT_IMAGE}''' Places and highlights an image on the map. Use this to show important items or locations&lt;br /&gt;
* '''{SET_IMAGE}''' Places an image on the map which has no other function.&lt;br /&gt;
* '''{QUAKE &amp;lt;soundfile&amp;gt;}''' Creates a tremor like screenshake and plays &amp;lt;soundfile&amp;gt;. ('''{TREMOR}''' is a deprecated version, equivalent to '''{QUAKE (rumble.ogg)}''')&lt;br /&gt;
* '''{FLASH_WHITE}''' Flash the screen white momentarily. You can also replace WHITE with RED, BLUE or GREEN for a different colour.&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;br /&gt;
[[Category: ActionsWML]]&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Tsr&amp;diff=33245</id>
		<title>User:Tsr</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Tsr&amp;diff=33245"/>
		<updated>2009-12-03T07:09:58Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* Tsr wesnoth info */ Moved NM, added TDEM, etc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Tsr wesnoth info==&lt;br /&gt;
&lt;br /&gt;
Ok, in trying to get things out of my head I've finally decided to create this page. Here I will list the wesnoth related projects I am maintaining, working on and thinking about.&lt;br /&gt;
&lt;br /&gt;
If you want to give feedback, report bugs, etc please do it on [[User_talk:Tsr|my talk page]] or in the linked to forum-threads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Whoami===&lt;br /&gt;
* wiki: [[User:Tsr|Tsr]] (obviously you are reading this page now)&lt;br /&gt;
* forums: [http://www.wesnoth.org/forum/memberlist.php?mode=viewprofile&amp;amp;u=103562 tsr]&lt;br /&gt;
* irc: teaser@freenode.net on #wesnoth-dev, etc (but I am not very often there)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Uploaded add-ons===&lt;br /&gt;
* TDEM (tsr's default era mods) - 1.7.9&lt;br /&gt;
* WCE (wesnoth collaborative editor) - 1.7.9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projects I maintain===&lt;br /&gt;
''These are project that I consider done but that I will work on if there is user input about bugs or new features that I deem worthy to add.''&lt;br /&gt;
&lt;br /&gt;
====The default preset advancement era====&lt;br /&gt;
A concept era where you can choose what advancement path your units will use if they advance during not your turn. Versions exist for both the 1.6 and 1.7 branches of wesnoth. Now part of TDEM ([http://www.wesnoth.org/forum/viewtopic.php?t=27969 forum-thread])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projects I work on===&lt;br /&gt;
''These are projects I am actually working on at the moment, to try and get them into a stable state so that I can move them to the maintaining section above''&lt;br /&gt;
&lt;br /&gt;
====MP-map: 2 is a crowd====&lt;br /&gt;
A watery 1v1 map where your first decision is what keep to go for. There are currently no versions on the add-on servers but there ia version that works on both 1.6 and 1.8  on the forums. The latest and greatest (or so I hope) in in the [http://www.wesnoth.org/forum/viewtopic.php?f=15&amp;amp;t=27679 forum-thread].&lt;br /&gt;
&lt;br /&gt;
====Wesnoth Collaborative Editor====&lt;br /&gt;
This is an online mp collaborative map editor for wesnoth maps. There are some features in it that I will brake out for other uses eventually. It is almost feature complete but needs some more attention before I call it finnished. Be sure to read the README before asking for help. There is only a version for 1.7 (it might work in 1.6 too, I just haven't tried it). ([http://www.wesnoth.org/forum/viewtopic.php?f=15&amp;amp;t=27737 forum-thread])&lt;br /&gt;
&lt;br /&gt;
====Tabletop Default Era====&lt;br /&gt;
This is a modification of the Default era that tries to emulate a classic tabletop fighting game. You get to place your units at the beginning of the game and you can't recruit more units later in the game. Also you have to kill all opponents units to win. Now part of TDEM ([http://www.wesnoth.org/forum/viewtopic.php?t=27969 forum-thread])&lt;br /&gt;
&lt;br /&gt;
====No mirror matches in mp====&lt;br /&gt;
Implement a default-era-tweak in WML that will ensure that there will not be the same faction in opposing teams in mp games. Now part of TDEM ([http://www.wesnoth.org/forum/viewtopic.php?t=27969 forum-thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projects I would like to work on===&lt;br /&gt;
''These are basically ideas that I hope to get around to work on some day, or that I hope that someone else will find is such a good idea that they will implement it''&lt;br /&gt;
&lt;br /&gt;
====More functional and pretty replay archive====&lt;br /&gt;
I would like to build a nicer interface to the replay archive so that we will be able to search for replays based on every aspect you can think of or at least almost - I don't want a cluttered interface either ;)&lt;br /&gt;
Things like - one at the time or combined:&lt;br /&gt;
* Version played (including compatible versions)&lt;br /&gt;
* Players in the game&lt;br /&gt;
* Scenario&lt;br /&gt;
* Era, specific factions&lt;br /&gt;
* Date&lt;br /&gt;
* Position (p1, p2, etc)&lt;br /&gt;
&lt;br /&gt;
====Irdya the faction====&lt;br /&gt;
Inspired by the concept of [http://en.wikipedia.org/wiki/Gaia_hypothesis Gaia] I want to create a wesnoth faction that represents the planet Irdya (or whatever the wesnoth planet is called). It will consist of units that resemble the available terrains. It will not be a mp-balanced faction but something like a monster faction that can be used in campaigns or scenarios. The units will have characteristics from their element (both in fighting quality, movement and appearance). &lt;br /&gt;
&lt;br /&gt;
====Clickable links====&lt;br /&gt;
I think it would be a great idea if we could create links in some places inside the game, like&lt;br /&gt;
* linking to an add-ons forum-thread&lt;br /&gt;
* linking to whatever in the game-chat (but proabably not lobby-chat&lt;br /&gt;
* linking to the [[MP_CodeOfConduct|CoC]] in the mp-servers motd&lt;br /&gt;
&lt;br /&gt;
===Projects I have started and left===&lt;br /&gt;
''These are projects that I for various reasons don't take active part in anymore (or actually there is only one reason, since there is only one project here.''&lt;br /&gt;
&lt;br /&gt;
====The wesnoth MP Code of Conduct====&lt;br /&gt;
Apparently there was a time when the wesnoth mp-servers where populated with so few users that you couldn't really behave like an ass... When that changed the need for information became evident. After some time trying to keep the standards high without any written rules it became evident, even for me that something had to be done. Hence the birth  of the [[MP_CodeOfConduct|CoC]]. (Actually several people had already thought of it; of course, I just happened to be the one that actually wrote the first draft - and I am quite pleased to see that most of it remains)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Random stuff===&lt;br /&gt;
''Things that are related to wesnoth in some ways''&lt;br /&gt;
&lt;br /&gt;
* writing the [[MP_CodeOfConduct|CoC]] earned me the forum title: Forum Regular.&lt;br /&gt;
* creating [[#Wesnoth Collaborative Editor|WCE]] earned me the forum title: WML Pioneer.&lt;br /&gt;
* I once made an alternative animation of the berserker that drinks coke instead of beer (it was in a wesnoth-funding thread and I can't seem to find the animation anywhere)&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Tsr&amp;diff=33222</id>
		<title>User:Tsr</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Tsr&amp;diff=33222"/>
		<updated>2009-12-01T14:53:22Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* Projects I work on */  Added Tabletop Default Era&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Tsr wesnoth info==&lt;br /&gt;
&lt;br /&gt;
Ok, in trying to get things out of my head I've finally decided to create this page. Here I will list the wesnoth related projects I am maintaining, working on and thinking about.&lt;br /&gt;
&lt;br /&gt;
If you want to give feedback, report bugs, etc please do it on [[User_talk:Tsr|my talk page]] or in the linked to forum-threads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Whoami===&lt;br /&gt;
* wiki: [[User:Tsr|Tsr]] (obviously you are reading this page now)&lt;br /&gt;
* forums: [http://www.wesnoth.org/forum/memberlist.php?mode=viewprofile&amp;amp;u=103562 tsr]&lt;br /&gt;
* irc: teaser@freenode.net on #wesnoth-dev, etc (but I am not very often there)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projects I maintain===&lt;br /&gt;
''These are project that I consider done but that I will work on if there is user input about bugs or new features that I deem worthy to add.''&lt;br /&gt;
&lt;br /&gt;
====The default preset advancement era====&lt;br /&gt;
A concept era where you can choose what advancement path your units will use if they advance during not your turn. Versions exist for both the 1.6 and 1.7 branches of wesnoth. ([http://www.wesnoth.org/forum/viewtopic.php?f=19&amp;amp;t=26039 forum-thread])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projects I work on===&lt;br /&gt;
''These are projects I am actually working on at the moment, to try and get them into a stable state so that I can move them to the maintaining section above''&lt;br /&gt;
&lt;br /&gt;
====MP-map: 2 is a crowd====&lt;br /&gt;
A watery 1v1 map where your first decision is what keep to go for. There are currently no versions on the add-on servers but there ia version that works on both 1.6 and 1.8  on the forums. The latest and greatest (or so I hope) in in the [http://www.wesnoth.org/forum/viewtopic.php?f=15&amp;amp;t=27679 forum-thread].&lt;br /&gt;
&lt;br /&gt;
====Wesnoth Collaborative Editor====&lt;br /&gt;
This is an online mp collaborative map editor for wesnoth maps. There are some features in it that I will brake out for other uses eventually. It is almost feature complete but needs some more attention before I call it finnished. Be sure to read the README before asking for help. There is only a version for 1.7 (it might work in 1.6 too, I just haven't tried it). ([http://www.wesnoth.org/forum/viewtopic.php?f=15&amp;amp;t=27737 forum-thread])&lt;br /&gt;
&lt;br /&gt;
====Tabletop Default Era====&lt;br /&gt;
This is a modification of the Default era that tries to emulate a classic tabletop fighting game. You get to place your units at the beginning of the game and you can't recruit more units later in the game. Also you have to kill all opponents units to win. ([http://www.wesnoth.org/forum/viewtopic.php?t=27949 forum-thread] - I didn't start the topic, but it is there...)&lt;br /&gt;
&lt;br /&gt;
===Projects I would like to work on===&lt;br /&gt;
''These are basically ideas that I hope to get around to work on some day, or that I hope that someone else will find is such a good idea that they will implement it''&lt;br /&gt;
&lt;br /&gt;
====More functional and pretty replay archive====&lt;br /&gt;
I would like to build a nicer interface to the replay archive so that we will be able to search for replays based on every aspect you can think of or at least almost - I don't want a cluttered interface either ;)&lt;br /&gt;
Things like - one at the time or combined:&lt;br /&gt;
* Version played (including compatible versions)&lt;br /&gt;
* Players in the game&lt;br /&gt;
* Scenario&lt;br /&gt;
* Era, specific factions&lt;br /&gt;
* Date&lt;br /&gt;
* Position (p1, p2, etc)&lt;br /&gt;
&lt;br /&gt;
====No mirror matches in mp====&lt;br /&gt;
Implement a default-era-tweak in WML that will ensure that there will not be the same faction in opposing teams in mp games.&lt;br /&gt;
&lt;br /&gt;
====Irdya the faction====&lt;br /&gt;
Inspired by the concept of [http://en.wikipedia.org/wiki/Gaia_hypothesis Gaia] I want to create a wesnoth faction that represents the planet Irdya (or whatever the wesnoth planet is called). It will consist of units that resemble the available terrains. It will not be a mp-balanced faction but something like a monster faction that can be used in campaigns or scenarios. The units will have characteristics from their element (both in fighting quality, movement and appearance). &lt;br /&gt;
&lt;br /&gt;
====Clickable links====&lt;br /&gt;
I think it would be a great idea if we could create links in some places inside the game, like&lt;br /&gt;
* linking to an add-ons forum-thread&lt;br /&gt;
* linking to whatever in the game-chat (but proabably not lobby-chat&lt;br /&gt;
* linking to the [[MP_CodeOfConduct|CoC]] in the mp-servers motd&lt;br /&gt;
&lt;br /&gt;
===Projects I have started and left===&lt;br /&gt;
''These are projects that I for various reasons don't take active part in anymore (or actually there is only one reason, since there is only one project here.''&lt;br /&gt;
&lt;br /&gt;
====The wesnoth MP Code of Conduct====&lt;br /&gt;
Apparently there was a time when the wesnoth mp-servers where populated with so few users that you couldn't really behave like an ass... When that changed the need for information became evident. After some time trying to keep the standards high without any written rules it became evident, even for me that something had to be done. Hence the birth  of the [[MP_CodeOfConduct|CoC]]. (Actually several people had already thought of it; of course, I just happened to be the one that actually wrote the first draft - and I am quite pleased to see that most of it remains)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Random stuff===&lt;br /&gt;
''Things that are related to wesnoth in some ways''&lt;br /&gt;
&lt;br /&gt;
* writing the [[MP_CodeOfConduct|CoC]] earned me the forum title: Forum Regular.&lt;br /&gt;
* creating [[#Wesnoth Collaborative Editor|WCE]] earned me the forum title: WML Pioneer.&lt;br /&gt;
* I once made an alternative animation of the berserker that drinks coke instead of beer (it was in a wesnoth-funding thread and I can't seem to find the animation anywhere)&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Tsr&amp;diff=33157</id>
		<title>User:Tsr</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Tsr&amp;diff=33157"/>
		<updated>2009-11-26T00:41:17Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* Projects I would like to work on */  added replay archive and no mirror era&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Tsr wesnoth info==&lt;br /&gt;
&lt;br /&gt;
Ok, in trying to get things out of my head I've finally decided to create this page. Here I will list the wesnoth related projects I am maintaining, working on and thinking about.&lt;br /&gt;
&lt;br /&gt;
If you want to give feedback, report bugs, etc please do it on [[User_talk:Tsr|my talk page]] or in the linked to forum-threads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Whoami===&lt;br /&gt;
* wiki: [[User:Tsr|Tsr]] (obviously you are reading this page now)&lt;br /&gt;
* forums: [http://www.wesnoth.org/forum/memberlist.php?mode=viewprofile&amp;amp;u=103562 tsr]&lt;br /&gt;
* irc: teaser@freenode.net on #wesnoth-dev, etc (but I am not very often there)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projects I maintain===&lt;br /&gt;
''These are project that I consider done but that I will work on if there is user input about bugs or new features that I deem worthy to add.''&lt;br /&gt;
&lt;br /&gt;
====The default preset advancement era====&lt;br /&gt;
A concept era where you can choose what advancement path your units will use if they advance during not your turn. Versions exist for both the 1.6 and 1.7 branches of wesnoth. ([http://www.wesnoth.org/forum/viewtopic.php?f=19&amp;amp;t=26039 forum-thread])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projects I work on===&lt;br /&gt;
''These are projects I am actually working on at the moment, to try and get them into a stable state so that I can move them to the maintaining section above''&lt;br /&gt;
&lt;br /&gt;
====MP-map: 2 is a crowd====&lt;br /&gt;
A watery 1v1 map where your first decision is what keep to go for. There are currently no versions on the add-on servers but there ia version that works on both 1.6 and 1.8  on the forums. The latest and greatest (or so I hope) in in the [http://www.wesnoth.org/forum/viewtopic.php?f=15&amp;amp;t=27679 forum-thread].&lt;br /&gt;
&lt;br /&gt;
====Wesnoth Collaborative Editor====&lt;br /&gt;
This is an online mp collaborative map editor for wesnoth maps. There are some features in it that I will brake out for other uses eventually. It is almost feature complete but needs some more attention before I call it finnished. Be sure to read the README before asking for help. There is only a version for 1.7 (it might work in 1.6 too, I just haven't tried it). ([http://www.wesnoth.org/forum/viewtopic.php?f=15&amp;amp;t=27737 forum-thread])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projects I would like to work on===&lt;br /&gt;
''These are basically ideas that I hope to get around to work on some day, or that I hope that someone else will find is such a good idea that they will implement it''&lt;br /&gt;
&lt;br /&gt;
====More functional and pretty replay archive====&lt;br /&gt;
I would like to build a nicer interface to the replay archive so that we will be able to search for replays based on every aspect you can think of or at least almost - I don't want a cluttered interface either ;)&lt;br /&gt;
Things like - one at the time or combined:&lt;br /&gt;
* Version played (including compatible versions)&lt;br /&gt;
* Players in the game&lt;br /&gt;
* Scenario&lt;br /&gt;
* Era, specific factions&lt;br /&gt;
* Date&lt;br /&gt;
* Position (p1, p2, etc)&lt;br /&gt;
&lt;br /&gt;
====No mirror matches in mp====&lt;br /&gt;
Implement a default-era-tweak in WML that will ensure that there will not be the same faction in opposing teams in mp games.&lt;br /&gt;
&lt;br /&gt;
====Irdya the faction====&lt;br /&gt;
Inspired by the concept of [http://en.wikipedia.org/wiki/Gaia_hypothesis Gaia] I want to create a wesnoth faction that represents the planet Irdya (or whatever the wesnoth planet is called). It will consist of units that resemble the available terrains. It will not be a mp-balanced faction but something like a monster faction that can be used in campaigns or scenarios. The units will have characteristics from their element (both in fighting quality, movement and appearance). &lt;br /&gt;
&lt;br /&gt;
====Clickable links====&lt;br /&gt;
I think it would be a great idea if we could create links in some places inside the game, like&lt;br /&gt;
* linking to an add-ons forum-thread&lt;br /&gt;
* linking to whatever in the game-chat (but proabably not lobby-chat&lt;br /&gt;
* linking to the [[MP_CodeOfConduct|CoC]] in the mp-servers motd&lt;br /&gt;
&lt;br /&gt;
===Projects I have started and left===&lt;br /&gt;
''These are projects that I for various reasons don't take active part in anymore (or actually there is only one reason, since there is only one project here.''&lt;br /&gt;
&lt;br /&gt;
====The wesnoth MP Code of Conduct====&lt;br /&gt;
Apparently there was a time when the wesnoth mp-servers where populated with so few users that you couldn't really behave like an ass... When that changed the need for information became evident. After some time trying to keep the standards high without any written rules it became evident, even for me that something had to be done. Hence the birth  of the [[MP_CodeOfConduct|CoC]]. (Actually several people had already thought of it; of course, I just happened to be the one that actually wrote the first draft - and I am quite pleased to see that most of it remains)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Random stuff===&lt;br /&gt;
''Things that are related to wesnoth in some ways''&lt;br /&gt;
&lt;br /&gt;
* writing the [[MP_CodeOfConduct|CoC]] earned me the forum title: Forum Regular.&lt;br /&gt;
* creating [[#Wesnoth Collaborative Editor|WCE]] earned me the forum title: WML Pioneer.&lt;br /&gt;
* I once made an alternative animation of the berserker that drinks coke instead of beer (it was in a wesnoth-funding thread and I can't seem to find the animation anywhere)&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Tsr&amp;diff=33156</id>
		<title>User:Tsr</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Tsr&amp;diff=33156"/>
		<updated>2009-11-25T09:46:17Z</updated>

		<summary type="html">&lt;p&gt;Tsr: New page: ==Tsr wesnoth info==  Ok, in trying to get things out of my head I've finally decided to create this page. Here I will list the wesnoth related projects I am maintaining, working on and th...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Tsr wesnoth info==&lt;br /&gt;
&lt;br /&gt;
Ok, in trying to get things out of my head I've finally decided to create this page. Here I will list the wesnoth related projects I am maintaining, working on and thinking about.&lt;br /&gt;
&lt;br /&gt;
If you want to give feedback, report bugs, etc please do it on [[User_talk:Tsr|my talk page]] or in the linked to forum-threads.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Whoami===&lt;br /&gt;
* wiki: [[User:Tsr|Tsr]] (obviously you are reading this page now)&lt;br /&gt;
* forums: [http://www.wesnoth.org/forum/memberlist.php?mode=viewprofile&amp;amp;u=103562 tsr]&lt;br /&gt;
* irc: teaser@freenode.net on #wesnoth-dev, etc (but I am not very often there)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projects I maintain===&lt;br /&gt;
''These are project that I consider done but that I will work on if there is user input about bugs or new features that I deem worthy to add.''&lt;br /&gt;
&lt;br /&gt;
====The default preset advancement era====&lt;br /&gt;
A concept era where you can choose what advancement path your units will use if they advance during not your turn. Versions exist for both the 1.6 and 1.7 branches of wesnoth. ([http://www.wesnoth.org/forum/viewtopic.php?f=19&amp;amp;t=26039 forum-thread])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projects I work on===&lt;br /&gt;
''These are projects I am actually working on at the moment, to try and get them into a stable state so that I can move them to the maintaining section above''&lt;br /&gt;
&lt;br /&gt;
====MP-map: 2 is a crowd====&lt;br /&gt;
A watery 1v1 map where your first decision is what keep to go for. There are currently no versions on the add-on servers but there ia version that works on both 1.6 and 1.8  on the forums. The latest and greatest (or so I hope) in in the [http://www.wesnoth.org/forum/viewtopic.php?f=15&amp;amp;t=27679 forum-thread].&lt;br /&gt;
&lt;br /&gt;
====Wesnoth Collaborative Editor====&lt;br /&gt;
This is an online mp collaborative map editor for wesnoth maps. There are some features in it that I will brake out for other uses eventually. It is almost feature complete but needs some more attention before I call it finnished. Be sure to read the README before asking for help. There is only a version for 1.7 (it might work in 1.6 too, I just haven't tried it). ([http://www.wesnoth.org/forum/viewtopic.php?f=15&amp;amp;t=27737 forum-thread])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projects I would like to work on===&lt;br /&gt;
''These are basically ideas that I hope to get around to work on some day, or that I hope that someone else will find is such a good idea that they will implement it''&lt;br /&gt;
&lt;br /&gt;
====Irdya the faction====&lt;br /&gt;
Inspired by the concept of [http://en.wikipedia.org/wiki/Gaia_hypothesis Gaia] I want to create a wesnoth faction that represents the planet Irdya (or whatever the wesnoth planet is called). It will consist of units that resemble the available terrains. It will not be a mp-balanced faction but something like a monster faction that can be used in campaigns or scenarios. The units will have characteristics from their element (both in fighting quality, movement and appearance). &lt;br /&gt;
&lt;br /&gt;
====Clickable links====&lt;br /&gt;
I think it would be a great idea if we could create links in some places inside the game, like&lt;br /&gt;
* linking to an add-ons forum-thread&lt;br /&gt;
* linking to whatever in the game-chat (but proabably not lobby-chat&lt;br /&gt;
* linking to the [[MP_CodeOfConduct|CoC]] in the mp-servers motd&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Projects I have started and left===&lt;br /&gt;
''These are projects that I for various reasons don't take active part in anymore (or actually there is only one reason, since there is only one project here.''&lt;br /&gt;
&lt;br /&gt;
====The wesnoth MP Code of Conduct====&lt;br /&gt;
Apparently there was a time when the wesnoth mp-servers where populated with so few users that you couldn't really behave like an ass... When that changed the need for information became evident. After some time trying to keep the standards high without any written rules it became evident, even for me that something had to be done. Hence the birth  of the [[MP_CodeOfConduct|CoC]]. (Actually several people had already thought of it; of course, I just happened to be the one that actually wrote the first draft - and I am quite pleased to see that most of it remains)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Random stuff===&lt;br /&gt;
''Things that are related to wesnoth in some ways''&lt;br /&gt;
&lt;br /&gt;
* writing the [[MP_CodeOfConduct|CoC]] earned me the forum title: Forum Regular.&lt;br /&gt;
* creating [[#Wesnoth Collaborative Editor|WCE]] earned me the forum title: WML Pioneer.&lt;br /&gt;
* I once made an alternative animation of the berserker that drinks coke instead of beer (it was in a wesnoth-funding thread and I can't seem to find the animation anywhere)&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Talk:ImprovingConsoleOfFormulaAI&amp;diff=29110</id>
		<title>Talk:ImprovingConsoleOfFormulaAI</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Talk:ImprovingConsoleOfFormulaAI&amp;diff=29110"/>
		<updated>2009-03-22T22:48:49Z</updated>

		<summary type="html">&lt;p&gt;Tsr: New page: I don't know if I'm allowed to do this, but anyway.  About your idea to implement a REPEAT command for the formula-console I think it would be much handier if you'd allow the user to go ba...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I don't know if I'm allowed to do this, but anyway.&lt;br /&gt;
&lt;br /&gt;
About your idea to implement a REPEAT command for the formula-console I think it would be much handier if you'd allow the user to go back (say, up to 20 times) and forth in the history using the arrow-keys (like in a regular console). The benefits are twofold: 1. more flexible 2. can easily be ported to chat-console or command-console.&lt;br /&gt;
&lt;br /&gt;
/tsr&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Play&amp;diff=25331</id>
		<title>Play</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Play&amp;diff=25331"/>
		<updated>2008-04-16T06:11:59Z</updated>

		<summary type="html">&lt;p&gt;Tsr: link to MP_CodeOfConduct&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Getting Battle for Wesnoth ==&lt;br /&gt;
* [[Description|About the project]]&lt;br /&gt;
* [[Download|Downloads and Source Code Page]]&lt;br /&gt;
* [[CompilingWesnoth| Compiling Wesnoth]]&lt;br /&gt;
&lt;br /&gt;
== Playing Battle for Wesnoth ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;thumb tright&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
[http://www.wesnoth.org/images/sshots/wesnoth-1.4-8.jpg http://www.wesnoth.org/images/sshots/wesnoth-1.4-8-175.jpg]&lt;br /&gt;
&amp;lt;div class=&amp;quot;thumbcaption&amp;quot;&amp;gt;The Elves Besieged&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[GettingStarted|Get Started]]&lt;br /&gt;
* [[WesnothManual|Game Manual]]&lt;br /&gt;
* [[BasicStrategy|Basic Tactics]]&lt;br /&gt;
* [[MainlineCampaigns|Walkthroughs of Official Campaigns]]&lt;br /&gt;
* [[UserScenarios | User-made Add-On Campaigns]]&lt;br /&gt;
* [[Competitive_Gaming | Competitive Gaming]]&lt;br /&gt;
* [[MP_CodeOfConduct | How to behave on the Multiplayer server ]]&lt;br /&gt;
&lt;br /&gt;
* [[FAQ]]&lt;br /&gt;
&lt;br /&gt;
== Advanced Players ==&lt;br /&gt;
* [[CommandMode|Debugging and Multiplayer Command Reference]]&lt;br /&gt;
* [[AdvancedTactics|Advanced Tactics]]&lt;br /&gt;
* [http://units.wesnoth.org/ Units Reference]&lt;br /&gt;
* [[MultiplayerServers|Multiplayer Servers]]&lt;br /&gt;
* [[How to play...|The &amp;quot;How to play&amp;quot; Series]]&lt;br /&gt;
&lt;br /&gt;
== The world of Wesnoth ==&lt;br /&gt;
&amp;lt;div class=&amp;quot;thumb tright&amp;quot;&amp;gt;&amp;lt;div&amp;gt;&lt;br /&gt;
[http://www.wesnoth.org/images/sshots/wesnoth-map-1.jpg http://www.wesnoth.org/images/sshots/wesnoth-map-1-175.jpg]&lt;br /&gt;
&amp;lt;div class=&amp;quot;thumbcaption&amp;quot;&amp;gt;Wesnoth and Surrounding Lands&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [[History of Wesnoth|The history of Wesnoth]]&lt;br /&gt;
* [[Geography of Wesnoth|The geography of Wesnoth]]&lt;br /&gt;
* [[WesnothFigures|Notable figures of Wesnoth]]&lt;br /&gt;
* [[Races|The races of creatures in Wesnoth]]&lt;br /&gt;
* [[Poetry of Wesnoth|Wesnothian poetry]]&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
* [[WhatArePlayersSaying|Comments from Wesnoth Players]]&lt;br /&gt;
* [[WesnothReviews|Third party Wesnoth reviews]]&lt;br /&gt;
* [[Screenshots]]&lt;br /&gt;
* [[FAQ#Do_you_want_help_making_this_game.3F_How_can_I_help.3F|Help to improve the game]]&lt;br /&gt;
* A Wesnoth [[Glossary]]&lt;br /&gt;
* [[The Observer|The Observer]] -- The Unofficial Wesnoth Newspaper&lt;br /&gt;
* [http://wesnoth.dbzer0.com/blog/ The Wesnoth Journals] -- A collaborative Wesnoth blog. &lt;br /&gt;
* [[RelatedTools|Related Tools]]&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Playing Wesnoth]]&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WML_Engine_Rewrite&amp;diff=25092</id>
		<title>WML Engine Rewrite</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WML_Engine_Rewrite&amp;diff=25092"/>
		<updated>2008-04-04T20:45:19Z</updated>

		<summary type="html">&lt;p&gt;Tsr: spelling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Following an irc discussion with the game developers, I have decided to change&lt;br /&gt;
my project. See the original wiki page, [[Map Editor Ilor]], for my questionaire&lt;br /&gt;
answers.&lt;br /&gt;
&lt;br /&gt;
==Wesnoth Markup Language (WML) engine overhaul.==&lt;br /&gt;
&lt;br /&gt;
===Abstract===&lt;br /&gt;
WML is a core element of Wesnoth. This custom markup language is used for &lt;br /&gt;
various data files, save games, and network handling. It s a text format, internally stored in the form of &amp;quot;config&amp;quot; objects, and used throughout the entire Wesnoth code for many different purposes. This current representation is, however, rather inefficient, both in terms of memory consumption and processing time. Additionally, some parts of game code dealing with processing WML nodes are written in a crude way that is inefficient and difficult to maintain, notably the main WML event processing function. The aim of this project is to provide a replacement implementation of the WML engine, with better speed and lower memory consumption, as well as refactoring many of the main WML-related functions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Description===&lt;br /&gt;
The inefficiency of WML has been a major issue in wesnothd, the dedicated Wesnoth server. An alternative, stripped down implementation called simple_wml  has been introduced there recently by Sirp, and is several times faster and uses less memory. However, while it shows how inefficient the current implementation is, simple_wml is not a suitable replacement for config because it lacks a great deal of existing functionality, and is difficult to use. The replacement WML implementation will have to be mostly compatible with the current config class, to avoid making a huge amount of changes throughout the entire codebase using WML. Some will be needed anyway, but if possible they should be simple enough to automate or semi-automate.&lt;br /&gt;
&lt;br /&gt;
There are some design decisions to be made regarding technical details of internal WML representation. It should be made easy to replace some crucial bits of the implementation so that different approaches can be compared side by side later, when the project is nearing completion.&lt;br /&gt;
&lt;br /&gt;
====Timeline====&lt;br /&gt;
The project milestones would be as follows:&lt;br /&gt;
* Refactor the WML commands handling code. Design can take place before the actual beginning of GSoC, the implementation itself should be relatively easy if somewhat time-consuming. I expect this part to be done and tested around half of June.&lt;br /&gt;
* Design and implement a method of benchmarking WML performance speed- and memory-wise. This will be important as improved efficiency is a main goal of the project, and since the actual game performance is influenced by many factors, a standalone benchmark will be very useful. Additionally, the benchmarking code can serve as a reasonably comprehensive test suite for the new WML implementation. This part should not take much time, and more tests can always be added later. Most likely the development of the benchmark will be parallel to the next item.&lt;br /&gt;
* Design and implement the new internal representation of WML documents and nodes. This is the main part of the project, and will take most of the time. A working, possibly incomplete and not yet optimized version should be ready for the mid-term evaluation, i.e. second week of June&lt;br /&gt;
* The final part of the project will involve further optimizations of the code, performing benchmark tests and polishing the interfaces. Then the code will be wired into the Wesnoth codebase, which should be possible to do as automatically as possible. Some final tests of the entire game with the new WML code will be done to see what gains have been made. By the time GSoC ends, the new WML implementation should replace or be ready to replace the current config implementation.&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Template:WML_Tags&amp;diff=17336</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=17336"/>
		<updated>2007-08-22T09:47:23Z</updated>

		<summary type="html">&lt;p&gt;Tsr: fixed link for store_side -&amp;gt; internal&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;
[[VariablesWML|array]],&lt;br /&gt;
[[AttackWML|attack]],&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;
[[StatisticalScenarioWML|deaths]],[[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]], [[HelpWML|format]], [[AttackWML|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]];&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;
[[AttackWML|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;
[[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]], [[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]], [[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]], [[SideWML|side]], [[ThemeWML|side_playing]], [[SavefileWML|snapshot]],&lt;br /&gt;
[[InterfaceActionsWML|sound]], [[ReplayWML|source]], [[AbilitiesWMLTechnical1.1.3|specials]]&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_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]],&lt;br /&gt;
[[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>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=16188</id>
		<title>InternalActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=InternalActionsWML&amp;diff=16188"/>
		<updated>2007-06-28T20:58:59Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* [event] */ Clarified time=stamp&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 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;
&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>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=FAQ&amp;diff=11991</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=FAQ&amp;diff=11991"/>
		<updated>2006-10-07T15:56:17Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* How do i connect to a multiplayer server, when i sit behind a restrictive Firewall? */  Added TCP detail&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Frequently Asked Questions=&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
===What is Battle for Wesnoth?===&lt;br /&gt;
Battle for Wesnoth is a fantasy turn-based strategy game.&lt;br /&gt;
&lt;br /&gt;
===What license is the game distributed under?===&lt;br /&gt;
The project is distributed under the [http://www.fsf.org/copyleft/gpl.html GPL]. All contributors retain copyright on the portions of the project that they contribute.&lt;br /&gt;
&lt;br /&gt;
===How to get informed about new releases?===&lt;br /&gt;
Subscribe to new releases at [http://freshmeat.net/subscribe/38720/?url=%2Fprojects%2Fwesnoth%2F Freshmeat].&lt;br /&gt;
&lt;br /&gt;
===A new version is out, but where is the download for [Windows, Mac OS, etc.]?===&lt;br /&gt;
The downloads are NOT part of the official project.  The BFW team only releases the game's source code.  Binary executables or applications are always contributed by community volunteers.  If not for these volunteers, there would never be any downloads for us to enjoy.  The volunteers compile the game and upload it on their own time, and sometimes they cannot do this in a timely fashion (or at all, at times)  Although there are usual packagers designated for each operating system, there are times when other members of the community are asked to step in and contribute when the usual people cannot.&lt;br /&gt;
&lt;br /&gt;
Every time a new version is released, the usual volunteers are always notified by the project leaders.  '''Please refrain from making forum posts asking where your download is''' because it doesn't help anything - the packagers already know, and they will get to it as soon as they can.  In the past, the Windows and Mac communities have come together to produce home-grown unofficial builds for the community to use, and the renewed interest in community and learning how to compile is generally a good thing.&lt;br /&gt;
&lt;br /&gt;
===Why doesn't Wesnoth have my favorite feature?===&lt;br /&gt;
Because we are building this game for ourselves, to suit our own preferences. We're not building the game for you, in large part because this is our hobby, not our job; whether you like it or not is immaterial to us.&lt;br /&gt;
You may wonder, then, what the point is of soliciting ideas, as we do on the forum.  We, the developers, have certainly come up with many good ideas on our own, but our players often do as well, and generally ones we don't think of ourselves.  If a player comes up with an idea we like, we might implement it.  Not because they asked for it, but because of its own merits as an addition to our game.&lt;br /&gt;
&lt;br /&gt;
The beautiful thing about the license our game is distributed under, as compared to closed-source, commercial games, is that if you want that feature badly enough, you can take the code and art of our game and modify it yourself; you are free to re-use any work in Wesnoth, as long as you follow the rules of the [http://www.fsf.org/copyleft/gpl.html GPL].  From this, you can build a game exactly the way that you like. Just don't expect us to build that game for you.  Building this game is our hobby, not our profession, and you did not pay us to make it; rather, we are the ones who have paid for it, in time and labor.&lt;br /&gt;
&lt;br /&gt;
===Do you want help making this game? How can I help?===&lt;br /&gt;
Yes, we want your help. Whether you're a programmer, artist, musician, writer, translator, level designer, playtester, or just have some great suggestions, you're welcome to contribute. How?  You can:&lt;br /&gt;
* join the [http://www.wesnoth.org/wiki/Project Project]&lt;br /&gt;
* share your point of view at the [http://www.wesnoth.org/forum/ Forum]&lt;br /&gt;
* talk with us on [irc://irc.wesnoth.org/wesnoth IRC]&lt;br /&gt;
* report bugs you find at [[ReportingBugs]]&lt;br /&gt;
* update the wiki&lt;br /&gt;
* play against us via the Multiplayer menu&lt;br /&gt;
* vote for Wesnoth at your favorite gaming web site&lt;br /&gt;
* Spread the word!&lt;br /&gt;
&lt;br /&gt;
=== What are the system requirements? ===&lt;br /&gt;
&lt;br /&gt;
We are not completely certain, but an x86 running at 400 MHz with 128MB RAM should be adequate for versions 1.02 and below. For versions 1.1 and up we recommend a computer with at least 1 GHz and 512 MB RAM if you run KDE or Gnome as Windowmanager (The game itself needs about 100 MB RAM). Slower machines will have trouble scrolling large maps or processing AI turns with many units.  See the [http://www.wesnoth.org/forum/viewtopic.php?t=7384 forum thread] about minimum and recommended system requirements.&lt;br /&gt;
&lt;br /&gt;
=== I'm bored; how do I speed the game up? ===&lt;br /&gt;
&lt;br /&gt;
There are several preferences you can change to shorten the time that the AI takes to make its moves. &amp;quot;Accelerated Speed&amp;quot; will make units move and fight faster. &amp;quot;Skip AI Moves&amp;quot; will not show the AI's units moving from hex to hex. Finally, you can turn off all combat animations via the &amp;quot;Show Combat&amp;quot; option on the Advanced tab.&lt;br /&gt;
&lt;br /&gt;
=== My computer is too slow; how do I speed the game up? ===&lt;br /&gt;
&lt;br /&gt;
First, turn off the music and sound effects. Turning off the color cursors will make your cursor respond faster. If scrolling the map is slow, run the game in &amp;quot;Full Screen&amp;quot; mode, not in a window.  Turn off combat animations via the &amp;quot;Show Combat&amp;quot; option on the Advanced tab.  You can try turning off halos and combat results, but this might make gameplay more difficult.&lt;br /&gt;
&lt;br /&gt;
== Gameplay and Controls ==&lt;br /&gt;
&lt;br /&gt;
=== How do I learn to play? ===&lt;br /&gt;
&lt;br /&gt;
If you just want to jump right in, start the game and play the tutorial.  If you like reading documentation, see [[WesnothManual]], which is also distributed as a PDF file.  At any time while playing, you can select help from the menu button (or hit F1). The online help is quite extensive and provides information on terrains, weapons, traits, abilities, units and a good overview of how to play.&lt;br /&gt;
&lt;br /&gt;
=== My unit leveled up but didn't improve. What happened? ===&lt;br /&gt;
&lt;br /&gt;
This is called &amp;quot;After Maximum Level Advancement&amp;quot; or AMLA for short. While most level 0, 1, and 2 units can advance, some cannot.  However, some level 3 units can advance to level 4, or even 5. You can see whether a unit can advance further by right clicking and selecting &amp;quot;description.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After a unit reaches the highest level it can get, every time it gains 100 experience it gains 3 hitpoints. It does not heal when this happens. This is a minor bonus so that experience gained by maxed out units is not altogether wasted. It is generally better to give experience to lower level units, rather than continue to advanced units that have reached their maximum level.&lt;br /&gt;
&lt;br /&gt;
If the unit in question is the Necrophage, this is not a bug.  The Necrophage eats the corpses of the dead, allowing it to periodically completely heal.  Leveling into itself is how this is carried out.&lt;br /&gt;
&lt;br /&gt;
=== I tried to trap an enemy with several weak units, but it still escaped. What happened? ===&lt;br /&gt;
&lt;br /&gt;
Most units exert a zone of control (or ZOC).  IF an enemy moves into one of the six adjacent hexes, the zone of control will prevent it from moving any farther.  However some weak units are level 0, meaning they are so weak that they do not have a ZOC. You can still surround an enemy unit entirely with level 0 units to keep it from escaping, but if there is any gap in your ranks, it could escape.&lt;br /&gt;
&lt;br /&gt;
Also, some units have the &amp;quot;skirmish&amp;quot; ability, which allows them to ignore ZOCs.&lt;br /&gt;
&lt;br /&gt;
=== How can I see where an enemy unit can move next turn? ===&lt;br /&gt;
&lt;br /&gt;
During you turn you can click on an enemy unit. Wesnoth will highlight all the hexes the unit can move to in the next turn. This is useful when trying to arrange your units to block an enemy's movement.&lt;br /&gt;
&lt;br /&gt;
=== There's too much luck in this game! ===&lt;br /&gt;
&lt;br /&gt;
Sooner or later, you will become frustrated when your archmage with four 70% attacks misses all four times.  This does not mean that the AI is cheating or the random number generator is futzed.  It means you are noticing random negative events more than positive ones.  During the development of the game, many mathematicians have done sophisticated statistical analysis of the combat system.  Likewise, programmers have examined the random number generator.  No flaws have been found, so streaks of &amp;quot;bad&amp;quot; and &amp;quot;good&amp;quot; luck should just be accepted as part of having randomness in Wesnoth.&lt;br /&gt;
&lt;br /&gt;
Since Wesnoth is GPLed, it is possible that a new development team will someday &amp;quot;fork&amp;quot; the source and produce a version more like Heroes of Might &amp;amp; Magic, with less or no randomness.  Until then, don't charge with your horsemen against troll rocklobbers at night...&lt;br /&gt;
&lt;br /&gt;
=== The (random unit) is overpowered/underpowered! ===&lt;br /&gt;
&lt;br /&gt;
The development team has spent years tweaking the units in the game.  Each unit has had its gold cost, attack types, combat damage, defensive values, resistances, upgrade paths, and other stats carefully scrutinized and loudly discussed in the forum.  However, the game code and the units were being modified right up until the 1.0 release, so some unbalanced units may have slipped through.&lt;br /&gt;
&lt;br /&gt;
If you have evidence to back up your claim, search the forum for past discussions about this unit, and then try posting.&lt;br /&gt;
&lt;br /&gt;
=== The (random scenario) is too hard/easy! ===&lt;br /&gt;
&lt;br /&gt;
See above answer about random units.&lt;br /&gt;
&lt;br /&gt;
=== What do the different difficulty levels do? ===&lt;br /&gt;
&lt;br /&gt;
That depends on the scenario. Usually, the opponent will get more money and be able to recruit higher-level units at higher difficulty levels, and you will have fewer turns available.&lt;br /&gt;
&lt;br /&gt;
== Maps, Scenarios and Campaigns ==&lt;br /&gt;
&lt;br /&gt;
=== How do I beat scenario _______ ? ===&lt;br /&gt;
&lt;br /&gt;
If you are stuck on a scenario in a campaign, you'll probably find a walkthrough at [[MainlineScenarios]].  Or check out the &amp;quot;Strategies and Tips&amp;quot; forum at http://www.wesnoth.org/forum/viewforum.php?f=3&lt;br /&gt;
&lt;br /&gt;
=== Are there any tools to help me create maps and scenarios? ===&lt;br /&gt;
Yes, there is a tool called wesnoth_editor. It is a normal map-editor that should be a good help for creating the plain maps. For creating the scenarios there already is a scenario-editor included in the mac build. But this editor is rather outdated and it exists only for MacOS X. At the moment some community members are working on creating a nice and working scenario editor. You can have a look at the [http://www.wesnoth.org/forum/viewtopic.php?t=6925 forum post] about this tool. You will also find more info at [[CampGen]].&lt;br /&gt;
&lt;br /&gt;
=== How do I download user campaigns? ===&lt;br /&gt;
Choose &amp;quot;Campaigns&amp;quot; in the main Wesnoth menu. Then scroll down to the bottom and choose &amp;quot;Get More Campaigns...&amp;quot; or since 1.1.5 there is a &amp;quot;Get add-ons&amp;quot; button in the main menu. This connects you to the campaign server. In the campaign server you can view a list of all available campaigns and download them, as well as posting or deleting your own campaigns.&lt;br /&gt;
&lt;br /&gt;
If you are behind a firewall you may not be able to connect to the campaign server.  In this case try to download the campaign directly from the campaign server through the web interface at http://wolff.to/campaigns/list.html.  If you know how to change your firewall settings, then you should open port 15003 (version 1.1.1 and up) or port 15002 (versions 1.1.0 and lower).  For added security, you can restrict traffic over those ports to the campaign server's IP address (currently 88.191.12.200).&lt;br /&gt;
&lt;br /&gt;
=== I already created a campaign and published it on the campaign server. How can I get translations for the campaign? ===&lt;br /&gt;
Just have a look at [[WesCamp]]. This project is the easiest way to get translations for your campaign. All the info you need you can find at [[WesCamp]].&lt;br /&gt;
&lt;br /&gt;
===How do I place an object or unit on my map with the map editor?===&lt;br /&gt;
You can't.  You need to make a multiplayer scenario file.  There are more details on the [[BuildingMaps|maps]] page.&lt;br /&gt;
&lt;br /&gt;
== Multiplayer ==&lt;br /&gt;
&lt;br /&gt;
===How do i connect to a multiplayer server, when i sit behind a restrictive Firewall?===&lt;br /&gt;
&lt;br /&gt;
You have to open for TCP on port 14999 to play multiplayer games over the internet.  For added security, you can restrict access to the server's IP address (currently 84.207.24.9 for the official server).&lt;br /&gt;
&lt;br /&gt;
===How to find players for multiplayer game?===&lt;br /&gt;
Hang around for a while on multiplayer servers and you might find someone to play with. If you observe other people playing you will get informed when someone joins the servers. Maybe you find someone willing to play in the irc channel dedicated to mp: #wesnoth-mp at irc.freenode.net.&lt;br /&gt;
You can also join #wesnoth at irc.freenode.net.&lt;br /&gt;
&lt;br /&gt;
===How to save and load a multiplayer game===&lt;br /&gt;
&lt;br /&gt;
Save the game. Give it a good name, so that you can find it among the other saved games.&lt;br /&gt;
&lt;br /&gt;
Create new game. (Give it a name like &amp;quot;private game for X and Y&amp;quot;, so that other players will not try joining it, and you do not have to explain or kick them.) The first item in the map/scenario list is &amp;quot;Saved games&amp;quot;, select this. Choose the saved game. Wait for the other player(s) to connect. Start the game.&lt;br /&gt;
&lt;br /&gt;
===How can I make my computer into a dedicated Wesnoth server?===&lt;br /&gt;
&lt;br /&gt;
To setup a dedicated Wesnoth server, you have to compile the game with the &amp;quot;--enable-server&amp;quot; flag, and after you install, simply run wesnothd from the console.  This will start the server, listening on TCP port 15000.  To compile the server only you can use the flags &amp;quot;--disable-game --enable server&amp;quot;.  If you aren't using a linux or mac operating system, there are a few ways you can compile on Windows...here is one way http://www.wesnoth.org/wiki/CompilingWesnoth/CrossCompiling&lt;br /&gt;
&lt;br /&gt;
===Which versions of Wesnoth can play together?===&lt;br /&gt;
&lt;br /&gt;
I'm on a MAC, and my friends are on XP. I would like to play together with them. Is this currently possible? &lt;br /&gt;
&lt;br /&gt;
YES! All you need is to have the same version number.&lt;br /&gt;
&lt;br /&gt;
For a list of Mac-XP-compatible games (including BfW) see: http://www.insidemacgames.com/forum/index.php?showtopic=21818&lt;br /&gt;
&lt;br /&gt;
== Translations ==&lt;br /&gt;
&lt;br /&gt;
===I selected an asian translation and am not able to see the letters correctly. What happened?===&lt;br /&gt;
&lt;br /&gt;
Since the size of the necessary fonts is too large, you'll need to download them separately (if you don't already have them). After that, simply copy the font to the '''fonts/''' directory in your wesnoth installation.&lt;br /&gt;
* Chinese font: [ftp://cle.linux.org.tw/pub/fonts/ttf/unicode/Arphic/gkai00mp.ttf gkai00mp.ttf]&lt;br /&gt;
* Japanese font: [http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/sqs-xml/sqs-font/sazanami-gothic.ttf sazanami-gothic.ttf]&lt;br /&gt;
&lt;br /&gt;
If you have futher questions have a look at [[WesnothAsianLanguages|this]] page.&lt;br /&gt;
&lt;br /&gt;
== Other Questions You Have ==&lt;br /&gt;
&lt;br /&gt;
The best way to get answers to less-frequently asked questions is by visiting the [http://www.wesnoth.org/forum BFW forum].  There are plenty of people willing to help.  Make sure you read ALL of the forum sticky notes and announcements before posting.&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Download&amp;diff=11977</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Download&amp;diff=11977"/>
		<updated>2006-10-06T20:15:52Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* Development */ added 1.1.11 in the special note header&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Battle for Wesnoth downloads page.  The BFW project team only officially releases the source code.  Binary packages are only provided by community volunteers and hosted here.&lt;br /&gt;
&lt;br /&gt;
If the latest binaries are not currently available for your OS, please check back in a few days to see if they have been placed here. Packagers have been informed of the release, please be patient.  In the meantime, read the [[FAQ#A_new_version_is_out.2C_but_where_is_the_download_for_.5BWindows.2C_Mac_OS.2C_etc..5D.3F|FAQ]].&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Jump to: [[Download#Stable_.281.0.x_branch.29|Stable Branch]] | [[Download#Development|Development Branch]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stable (1.0.x branch) ==&lt;br /&gt;
The stable files are meant to be used as a stable and rather balanced version of the game. Each version of the 1.0.x branch is compatible to each other. This will not happen in the development branch.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.2 is the latest stable version, updated with several important bugfixes. This version is recommended for most players since the 1.0.x online multiplayer community is very large and user-made campaign server has a robust content selection. &lt;br /&gt;
&lt;br /&gt;
==== Source code ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.0.2.tar.gz?download Current stable version] (1.0.2, 38.2 MB)&lt;br /&gt;
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code&lt;br /&gt;
&lt;br /&gt;
==== [[BeOS]] ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth-1.0.2-BeOS-x86.pkg.zip?download Current stable version] (1.0.2, 42.3MB)&lt;br /&gt;
&lt;br /&gt;
==== GNU/Linux ====&lt;br /&gt;
* There are specific binaries for many different GNU/Linux Distributions. Not all are always up to date with the current release. Please have a look at the [[WesnothBinariesLinux|Linux binary page]] for more informations about the binaries for your Distribution.&lt;br /&gt;
&lt;br /&gt;
==== Mac OS X ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.0.2.dmg?download Current stable version] (1.0.2, PPC, 53.6 MB)&lt;br /&gt;
* [http://lwa.retiaire.org/wesnoth/Wesnoth_MacOSX_1.0.2-lwa.dmg Current stable version - alternate] (1.0.2, PPC, 44MB)&lt;br /&gt;
* [http://lwa.retiaire.org/wesnoth/Wesnoth_MacOSX_1.0.2_lite-lwa.dmg Current stable version - lite] (1.0.2, PPC, no art or music, 25MB)&lt;br /&gt;
&lt;br /&gt;
==== MS Windows ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-windows-1.0.2.exe?download Current stable version] (1.0.2, 37.0MB)&lt;br /&gt;
&lt;br /&gt;
==== FreeBSD ====&lt;br /&gt;
* /usr/ports/games/wesnoth (1.0.1, 37.3MB)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.0.2.tar.gz.md5?download Source code md5sum]&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth-1.0.2-BeOS-x86.pkg.zip.md5?download BeOS md5sum]&lt;br /&gt;
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Source_code Xdelta for the source code]&lt;br /&gt;
* [http://www.wesnoth.org/wiki/Download_Xdeltas#MS_Windows Xdelta for the Windows binary]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
'''Special note for 1.1.8-1.1.11'''&lt;br /&gt;
&lt;br /&gt;
These versions are &amp;quot;stable beta&amp;quot; or &amp;quot;release candidate&amp;quot; versions.  They exist so we can iron out bugs, but they will be very close to the final stable 1.2 release.  They are generally balanced, stable, and bug-free, but we need your help to catch any remaining problems (which may or may not exist).  Do not be afraid to download or play one of these later versions.  The next paragraph is our &amp;quot;stock&amp;quot; paragraph about the development version, but because it is so late in the development cycle it's currently not 100% true (whereas it was very true for earlier releases).&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Version 1.1.x is the latest development version, boasting updated graphics and new exciting features. However, there may be occasional bugs or performance problems in the development versions since heavy changes are taking place all the time. For balanced and stable gaming, it is recommended you use the latest version of the 1.0.x branch.  This version is recommended for coders and campaign developers, as well as those who want to preview the future of Wesnoth.&lt;br /&gt;
&lt;br /&gt;
==== Source code ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.11.tar.gz?download Current Version] (1.1.11, 73 MB)&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.10.tar.gz?download Previous Version] (1.1.10, 72 MB)&lt;br /&gt;
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code&lt;br /&gt;
&lt;br /&gt;
==== MS Windows ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.11-windows.exe?download Current Version] (1.1.11, 60.7 MB)&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.10-windows.exe?download Previous Version] (1.1.10, 59.3 MB)&lt;br /&gt;
&lt;br /&gt;
==== Mac OS X ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.1.11.dmg?download Current Version] (1.1.11, Universal, 75.6MB)&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.1.11_lite.dmg?download Current Version - lite] (1.1.11, Universal, no art or music, 45.7MB)&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.1.10.dmg?download Previous Version] (1.1.10, Universal, 74MB&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.1.10_lite.dmg?download Previous Version - lite] (1.1.10, Universal, no art or music, 44.1MB)&lt;br /&gt;
&lt;br /&gt;
==== GNU/Linux ====&lt;br /&gt;
* There are binaries for many different GNU/Linux Distributions. Not all are always up to date with the current release. Please have a look at the [[WesnothBinariesLinux|Linux binary page]] for more information about the binaries for your Distribution.&lt;br /&gt;
&lt;br /&gt;
==== AmigaOS4 ====&lt;br /&gt;
* [http://www.amigasoft.net/downloads/Wesnoth.lzh Older Version] (1.1.7, 79MB)&lt;br /&gt;
&lt;br /&gt;
==== OS/2 &amp;amp; eComStation ====&lt;br /&gt;
* [http://download.smedley.info/wesnoth-1.1.8-os2.zip Previous Version] (1.1.8, 66MB)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.11.tar.gz.md5?download md5sum for current source code]&lt;br /&gt;
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Source_code Xdelta for the source code]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=89495 SourceForge page for current and all previous versions]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
This program is free software; you can redistribute it and/or modify it under the terms of the [http://www.fsf.org/copyleft/gpl.html GNU General Public License version 2], as published by the [http://www.fsf.org/ Free Software Foundation].&lt;br /&gt;
This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [http://changelog.wesnoth.org Changelog]&lt;br /&gt;
* [[WesnothBinaries| More binaries]]&lt;br /&gt;
* [[WesnothSVN]] - bleeding edge version from SVN&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Download&amp;diff=11824</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Download&amp;diff=11824"/>
		<updated>2006-09-21T13:21:40Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* Source code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Battle for Wesnoth downloads page.  The BFW project team only officially releases the source code.  Binary packages are only provided by community volunteers and hosted here.&lt;br /&gt;
&lt;br /&gt;
If the latest binaries are not currently available for your OS, please check back in a few days to see if they have been placed here. Packagers have been informed of the release, please be patient.  In the meantime, read the [[FAQ#A_new_version_is_out.2C_but_where_is_the_download_for_.5BWindows.2C_Mac_OS.2C_etc..5D.3F|FAQ]].&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Jump to: [[Download#Stable_.281.0.x_branch.29|Stable Branch]] | [[Download#Development|Development Branch]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stable (1.0.x branch) ==&lt;br /&gt;
The stable files are meant to be used as a stable and rather balanced version of the game. Each version of the 1.0.x branch is compatible to each other. This will not happen in the development branch.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.2 is the latest stable version, updated with several important bugfixes. This version is recommended for most players since the 1.0.x online multiplayer community is very large and user-made campaign server has a robust content selection. &lt;br /&gt;
&lt;br /&gt;
==== Source code ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.0.2.tar.gz?download Current stable version] (1.0.2, 38.2 MB)&lt;br /&gt;
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code&lt;br /&gt;
&lt;br /&gt;
==== [[BeOS]] ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth-1.0.2-BeOS-x86.pkg.zip?download Current stable version] (1.0.2, 42.3MB)&lt;br /&gt;
&lt;br /&gt;
==== GNU/Linux ====&lt;br /&gt;
* There are specific binaries for many different GNU/Linux Distributions. Not all are always up to date with the current release. Please have a look at the [[WesnothBinariesLinux|Linux binary page]] for more informations about the binaries for your Distribution.&lt;br /&gt;
&lt;br /&gt;
==== Mac OS X ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.0.2.dmg?download Current stable version] (1.0.2, PPC, 53.6 MB)&lt;br /&gt;
* [http://lwa.retiaire.org/wesnoth/Wesnoth_MacOSX_1.0.2-lwa.dmg Current stable version - alternate] (1.0.2, PPC, 44MB)&lt;br /&gt;
* [http://lwa.retiaire.org/wesnoth/Wesnoth_MacOSX_1.0.2_lite-lwa.dmg Current stable version - lite] (1.0.2, PPC, no art or music, 25MB)&lt;br /&gt;
&lt;br /&gt;
==== MS Windows ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-windows-1.0.2.exe?download Current stable version] (1.0.2, 37.0MB)&lt;br /&gt;
&lt;br /&gt;
==== FreeBSD ====&lt;br /&gt;
* /usr/ports/games/wesnoth (1.0.1, 37.3MB)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.0.2.tar.gz.md5?download Source code md5sum]&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth-1.0.2-BeOS-x86.pkg.zip.md5?download BeOS md5sum]&lt;br /&gt;
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Source_code Xdelta for the source code]&lt;br /&gt;
* [http://www.wesnoth.org/wiki/Download_Xdeltas#MS_Windows Xdelta for the Windows binary]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
'''Special note for 1.1.8-1.1.10'''&lt;br /&gt;
&lt;br /&gt;
These versions are &amp;quot;stable beta&amp;quot; or &amp;quot;release candidate&amp;quot; versions.  They exist so we can iron out bugs, but they will be very close to the final stable 1.2 release.  They are generally balanced, stable, and bug-free, but we need your help to catch any remaining problems (which may or may not exist).  Do not be afraid to download or play one of these later versions.  The next paragraph is our &amp;quot;stock&amp;quot; paragraph about the development version, but because it is so late in the development cycle it's currently not 100% true (whereas it was very true for earlier releases).&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Version 1.1.x is the latest development version, boasting updated graphics and new exciting features. However, there may be occasional bugs or performance problems in the development versions since heavy changes are taking place all the time. For balanced and stable gaming, it is recommended you use the latest version of the 1.0.x branch.  This version is recommended for coders and campaign developers, as well as those who want to preview the future of Wesnoth.&lt;br /&gt;
&lt;br /&gt;
==== Source code ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.10.tar.gz?download Current Version] (1.1.10, 72 MB)&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.9.tar.gz?download Previous Version] (1.1.9, 70 MB)&lt;br /&gt;
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code&lt;br /&gt;
&lt;br /&gt;
==== MS Windows ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.9-windows.exe?download Current Version] (1.1.9, 59.1 MB)&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.8_windows.exe?download Previous Version] (1.1.8, 58.7 MB)&lt;br /&gt;
&lt;br /&gt;
==== Mac OS X ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.1.9.dmg?download Current Version] (1.1.9, Universal, 73.2MB)&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.1.9_lite.dmg?download Current version - lite] (1.1.9, Universal, no art or music, 43.3MB)&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.1.8.dmg?download Previous Version] (1.1.8, Universal, 69MB) ([http://www.wesnoth.org/forum/viewtopic.php?t=12237&amp;amp;start=11 note for Japanese players])&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.1.8_lite.dmg?download Previous version - lite] (1.1.8, Universal, no art or music, 39MB)&lt;br /&gt;
&lt;br /&gt;
==== GNU/Linux ====&lt;br /&gt;
* There are binaries for many different GNU/Linux Distributions. Not all are always up to date with the current release. Please have a look at the [[WesnothBinariesLinux|Linux binary page]] for more information about the binaries for your Distribution.&lt;br /&gt;
&lt;br /&gt;
==== AmigaOS4 ====&lt;br /&gt;
* [http://www.amigasoft.net/downloads/Wesnoth.lzh Older Version] (1.1.7, 79MB)&lt;br /&gt;
&lt;br /&gt;
==== OS/2 &amp;amp; eComStation ====&lt;br /&gt;
* [http://download.smedley.info/wesnoth-1.1.8-os2.zip Previous Version] (1.1.8, 66MB)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.9.tar.gz.md5?download md5sum for current source code]&lt;br /&gt;
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Source_code Xdelta for the source code]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=89495 SourceForge page for current and all previous versions]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
This program is free software; you can redistribute it and/or modify it under the terms of the [http://www.fsf.org/copyleft/gpl.html GNU General Public License version 2], as published by the [http://www.fsf.org/ Free Software Foundation].&lt;br /&gt;
This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [http://changelog.wesnoth.org Changelog]&lt;br /&gt;
* [[WesnothBinaries| More binaries]]&lt;br /&gt;
* [[WesnothSVN]] - bleeding edge version from SVN&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Download&amp;diff=11823</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Download&amp;diff=11823"/>
		<updated>2006-09-21T13:17:10Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* Development */  Incorporated 1.1.10&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Battle for Wesnoth downloads page.  The BFW project team only officially releases the source code.  Binary packages are only provided by community volunteers and hosted here.&lt;br /&gt;
&lt;br /&gt;
If the latest binaries are not currently available for your OS, please check back in a few days to see if they have been placed here. Packagers have been informed of the release, please be patient.  In the meantime, read the [[FAQ#A_new_version_is_out.2C_but_where_is_the_download_for_.5BWindows.2C_Mac_OS.2C_etc..5D.3F|FAQ]].&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Jump to: [[Download#Stable_.281.0.x_branch.29|Stable Branch]] | [[Download#Development|Development Branch]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stable (1.0.x branch) ==&lt;br /&gt;
The stable files are meant to be used as a stable and rather balanced version of the game. Each version of the 1.0.x branch is compatible to each other. This will not happen in the development branch.&lt;br /&gt;
&lt;br /&gt;
Version 1.0.2 is the latest stable version, updated with several important bugfixes. This version is recommended for most players since the 1.0.x online multiplayer community is very large and user-made campaign server has a robust content selection. &lt;br /&gt;
&lt;br /&gt;
==== Source code ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.0.2.tar.gz?download Current stable version] (1.0.2, 38.2 MB)&lt;br /&gt;
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code&lt;br /&gt;
&lt;br /&gt;
==== [[BeOS]] ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth-1.0.2-BeOS-x86.pkg.zip?download Current stable version] (1.0.2, 42.3MB)&lt;br /&gt;
&lt;br /&gt;
==== GNU/Linux ====&lt;br /&gt;
* There are specific binaries for many different GNU/Linux Distributions. Not all are always up to date with the current release. Please have a look at the [[WesnothBinariesLinux|Linux binary page]] for more informations about the binaries for your Distribution.&lt;br /&gt;
&lt;br /&gt;
==== Mac OS X ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.0.2.dmg?download Current stable version] (1.0.2, PPC, 53.6 MB)&lt;br /&gt;
* [http://lwa.retiaire.org/wesnoth/Wesnoth_MacOSX_1.0.2-lwa.dmg Current stable version - alternate] (1.0.2, PPC, 44MB)&lt;br /&gt;
* [http://lwa.retiaire.org/wesnoth/Wesnoth_MacOSX_1.0.2_lite-lwa.dmg Current stable version - lite] (1.0.2, PPC, no art or music, 25MB)&lt;br /&gt;
&lt;br /&gt;
==== MS Windows ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-windows-1.0.2.exe?download Current stable version] (1.0.2, 37.0MB)&lt;br /&gt;
&lt;br /&gt;
==== FreeBSD ====&lt;br /&gt;
* /usr/ports/games/wesnoth (1.0.1, 37.3MB)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.0.2.tar.gz.md5?download Source code md5sum]&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth-1.0.2-BeOS-x86.pkg.zip.md5?download BeOS md5sum]&lt;br /&gt;
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Source_code Xdelta for the source code]&lt;br /&gt;
* [http://www.wesnoth.org/wiki/Download_Xdeltas#MS_Windows Xdelta for the Windows binary]&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
'''Special note for 1.1.8-1.1.10'''&lt;br /&gt;
&lt;br /&gt;
These versions are &amp;quot;stable beta&amp;quot; or &amp;quot;release candidate&amp;quot; versions.  They exist so we can iron out bugs, but they will be very close to the final stable 1.2 release.  They are generally balanced, stable, and bug-free, but we need your help to catch any remaining problems (which may or may not exist).  Do not be afraid to download or play one of these later versions.  The next paragraph is our &amp;quot;stock&amp;quot; paragraph about the development version, but because it is so late in the development cycle it's currently not 100% true (whereas it was very true for earlier releases).&lt;br /&gt;
&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
Version 1.1.x is the latest development version, boasting updated graphics and new exciting features. However, there may be occasional bugs or performance problems in the development versions since heavy changes are taking place all the time. For balanced and stable gaming, it is recommended you use the latest version of the 1.0.x branch.  This version is recommended for coders and campaign developers, as well as those who want to preview the future of Wesnoth.&lt;br /&gt;
&lt;br /&gt;
==== Source code ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.10.tar.gz?download Current Version] (1.1.10, 70 MB)&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.9.tar.gz?download Current Version] (1.1.9, 70 MB)&lt;br /&gt;
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code&lt;br /&gt;
&lt;br /&gt;
==== MS Windows ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.9-windows.exe?download Current Version] (1.1.9, 59.1 MB)&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.8_windows.exe?download Previous Version] (1.1.8, 58.7 MB)&lt;br /&gt;
&lt;br /&gt;
==== Mac OS X ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.1.9.dmg?download Current Version] (1.1.9, Universal, 73.2MB)&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.1.9_lite.dmg?download Current version - lite] (1.1.9, Universal, no art or music, 43.3MB)&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.1.8.dmg?download Previous Version] (1.1.8, Universal, 69MB) ([http://www.wesnoth.org/forum/viewtopic.php?t=12237&amp;amp;start=11 note for Japanese players])&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/Wesnoth_MacOSX_1.1.8_lite.dmg?download Previous version - lite] (1.1.8, Universal, no art or music, 39MB)&lt;br /&gt;
&lt;br /&gt;
==== GNU/Linux ====&lt;br /&gt;
* There are binaries for many different GNU/Linux Distributions. Not all are always up to date with the current release. Please have a look at the [[WesnothBinariesLinux|Linux binary page]] for more information about the binaries for your Distribution.&lt;br /&gt;
&lt;br /&gt;
==== AmigaOS4 ====&lt;br /&gt;
* [http://www.amigasoft.net/downloads/Wesnoth.lzh Older Version] (1.1.7, 79MB)&lt;br /&gt;
&lt;br /&gt;
==== OS/2 &amp;amp; eComStation ====&lt;br /&gt;
* [http://download.smedley.info/wesnoth-1.1.8-os2.zip Previous Version] (1.1.8, 66MB)&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous ====&lt;br /&gt;
* [http://prdownloads.sourceforge.net/wesnoth/wesnoth-1.1.9.tar.gz.md5?download md5sum for current source code]&lt;br /&gt;
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Source_code Xdelta for the source code]&lt;br /&gt;
* [http://sourceforge.net/project/showfiles.php?group_id=89495 SourceForge page for current and all previous versions]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
This program is free software; you can redistribute it and/or modify it under the terms of the [http://www.fsf.org/copyleft/gpl.html GNU General Public License version 2], as published by the [http://www.fsf.org/ Free Software Foundation].&lt;br /&gt;
This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [http://changelog.wesnoth.org Changelog]&lt;br /&gt;
* [[WesnothBinaries| More binaries]]&lt;br /&gt;
* [[WesnothSVN]] - bleeding edge version from SVN&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ThemeWML&amp;diff=11299</id>
		<title>ThemeWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ThemeWML&amp;diff=11299"/>
		<updated>2006-08-19T22:41:08Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* [menu] */ spelling 'senter' -&amp;gt; 'center'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== the toplevel [theme] tag ==&lt;br /&gt;
&lt;br /&gt;
Themes are used both for the wesnoth game and the wesnoth editor.&lt;br /&gt;
Themes allow flexible configuration of how everything is laid out on-screen.&lt;br /&gt;
&lt;br /&gt;
The only key in [theme] is ''name''. This is the name of the theme.&lt;br /&gt;
&lt;br /&gt;
The only tag in [theme] is '''[resolution]''', but each theme can have multiple [resolution] tags.&lt;br /&gt;
The [resolution] tags are scanned until the first one which is of the same or lower resolution than is currently being used is found, and this is used as our theme.&lt;br /&gt;
This allows us to define themes to work differently on different resolutions, &lt;br /&gt;
and will allow us to support both high and low resolutions elegantly.&lt;br /&gt;
&lt;br /&gt;
The following keys and tags are recognized for [resolution]:&lt;br /&gt;
&lt;br /&gt;
* ''width//,//height'' dimensions in pixels&lt;br /&gt;
&lt;br /&gt;
All subtags of [resolution] use the following keys:&lt;br /&gt;
* ''rect'' defines the rectangle to display on. Parts of a ''rect=a,b,c,d'' clause may be:&lt;br /&gt;
** number : absolute positions&lt;br /&gt;
** ''='' : same value as the same field in reference rect (alignment with reference)&lt;br /&gt;
** +number or -number : for a and b, add this value to reference's c and d respectively (spacing from reference)&lt;br /&gt;
; for c and d, add this value to self's a and b (specify by width and height)&lt;br /&gt;
** =+number or =-number : add this value to same field in reference rect (eg. consider reference as a container box)&lt;br /&gt;
* ''xanchor//,//yanchor'' control the behavior of how this rectangle changes as the resolution changes.&lt;br /&gt;
** 'left' its distance from the left side of the screen always remain the same, while changes in the resolution will change its size by the same amount (top for the y axis).&lt;br /&gt;
** 'right' its size always remain the same, as well as its distance to the right side of the screen (bottom for the y axis).&lt;br /&gt;
** 'fixed' its co-ordinates in that axis remain constant&lt;br /&gt;
** 'proportional' its co-ordinates multiplied by the ratio of the resolution being used to the canonical resolution.&lt;br /&gt;
&lt;br /&gt;
== [main_map] ==&lt;br /&gt;
&lt;br /&gt;
defines where the main game display (i.e. all the hexagons and units) is displayed.&lt;br /&gt;
&lt;br /&gt;
== [mini_map] ==&lt;br /&gt;
&lt;br /&gt;
determines where the mini map is displayed&lt;br /&gt;
&lt;br /&gt;
== [panel] ==&lt;br /&gt;
&lt;br /&gt;
displays an image as a panel on-screen.&lt;br /&gt;
* ''image'' the image used for the panel&lt;br /&gt;
&lt;br /&gt;
== [label] ==&lt;br /&gt;
&lt;br /&gt;
displays a text label on screen.&lt;br /&gt;
* ''prefix'' a string that will be printed before the text in all language&lt;br /&gt;
* ''text'' a text string id to be displayed&lt;br /&gt;
* ''postfix'' a string that will be printed after the text in all language&lt;br /&gt;
* ''icon'' an image that will be displayed instead of the text if it is available&lt;br /&gt;
* ''font_size'' the size of font to use for the label&lt;br /&gt;
&lt;br /&gt;
== [menu] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* ''title'' the id of the string to write on the button&lt;br /&gt;
* ''title_literal'' a string that will be displayed &amp;quot;as is&amp;quot; in all language after the title&lt;br /&gt;
* ''image'' the image to use if available&lt;br /&gt;
* ''is_context_menu'' if set to true this menu will not be placed, but displayed on a right click&lt;br /&gt;
* ''items'' comma separated list of actions to put in the menu. if there is only one action, it will be executed immediately and no menu will be displayed&lt;br /&gt;
** 'cycle' move to next movable unit&lt;br /&gt;
** 'endunitturn' consume this unit's move and cycle to the next one&lt;br /&gt;
** 'leader' center on the leader&lt;br /&gt;
** 'undo' undo last action&lt;br /&gt;
** 'redo' redo undone action&lt;br /&gt;
** 'zoomin' zoom the map in&lt;br /&gt;
** 'zoomout' zoom the map out&lt;br /&gt;
** 'zoomdefault' return to default zoom&lt;br /&gt;
** 'fullscreen' switch fulscreen mode&lt;br /&gt;
** 'accelerated' switch turbo mode&lt;br /&gt;
** 'resistance' show resistance table of current unit&lt;br /&gt;
** 'terraintable' show terrain table of current unit&lt;br /&gt;
** 'describeunit' show unit description&lt;br /&gt;
** 'renameunit' change unit name&lt;br /&gt;
** 'save' save the game&lt;br /&gt;
** 'recruit' recruit a unit&lt;br /&gt;
** 'repeatrecruit' repeat last recruitement&lt;br /&gt;
** 'recall' recall a unit from previous scenarion&lt;br /&gt;
** 'endturn' end current turn&lt;br /&gt;
** 'togglegrid' toggle grid display&lt;br /&gt;
** 'statustable' show status table&lt;br /&gt;
** 'mute' mute all sounds&lt;br /&gt;
** 'speak' send message to other players&lt;br /&gt;
** 'createunit' debug create a unit on the map&lt;br /&gt;
** 'preferences' open preference dialog&lt;br /&gt;
** 'objectives' show objective window&lt;br /&gt;
** 'unitlist' list units&lt;br /&gt;
** 'statistics' show game statistics&lt;br /&gt;
** 'quit' quit the game&lt;br /&gt;
** 'labelterrain' label current location&lt;br /&gt;
** 'clearlabels' clear all labels on map&lt;br /&gt;
** 'showenemymoves' show grids reachable by the enemy&lt;br /&gt;
** 'bestenemymoves' show grids reachable by the enemy with no zone of control&lt;br /&gt;
** 'editnewmap' editor only start a new map&lt;br /&gt;
** 'editloadmap' editor only loads an existing map&lt;br /&gt;
** 'editsavemap' editor only saves the current map&lt;br /&gt;
** 'editsaveas' editor only saves the current map, let you choose a filename&lt;br /&gt;
** 'editsetstartpos' editor only set a starting position for a team&lt;br /&gt;
** 'editfloodfill' editor only flood the map with a terrain&lt;br /&gt;
** 'toggleshroud' toggle the &amp;quot;moving removes shroud&amp;quot; behaviour&lt;br /&gt;
** 'updateshroud' removes all possible shroud&lt;br /&gt;
** 'AUTOSAVES' expands to a list of all Auto-Save games prior to this one (1.1.3+)&lt;br /&gt;
&lt;br /&gt;
== [status] ==&lt;br /&gt;
&lt;br /&gt;
This tag describes the Status Table.&lt;br /&gt;
This tag contains many other tags, which determine where other game statistics, such as the current turn, and a description of selected units go.&lt;br /&gt;
For instance, the [time_of_day] tag will determine where the time of day image goes.&lt;br /&gt;
Each subtag of [status] can contain the following attributes&lt;br /&gt;
&lt;br /&gt;
** ''font_size'' the size of font to use for the status&lt;br /&gt;
** ''rect'' the rectangle as for the main_map attribute&lt;br /&gt;
** ''xanchor'' the x-wise anchoring as for the main_map attribute&lt;br /&gt;
** ''yanchor'' the y-wise anchoring as for the main_map attribute&lt;br /&gt;
** ''prefix'' the string to display before the actual status, this is the string id for internationalisation&lt;br /&gt;
** ''prefix_literal'' a string to put after the prefix, but before the label for all languages.&lt;br /&gt;
** ''postfix_literal'' a string to put after the status&lt;br /&gt;
** ''postfix'' the string to display after the postfix_literal, this is the string id for internationalisation&lt;br /&gt;
&lt;br /&gt;
the following tags are recognized for [status]:&lt;br /&gt;
* '''[unit_description]''' the user description of the current unit&lt;br /&gt;
* '''[unit_type]''' the type of the current unit&lt;br /&gt;
* '''[unit_level]''' the level of the current unit&lt;br /&gt;
* '''[unit_traits]''' the traits of the current unit&lt;br /&gt;
* '''[unit_status]''' the status of the current unit&lt;br /&gt;
* '''[unit_alignment]''' the alignment of the current unit&lt;br /&gt;
* '''[unit_abilities]''' the abilities of the current unit&lt;br /&gt;
* '''[unit_hp]''' the HP of the current unit&lt;br /&gt;
* '''[unit_xp]''' the XP of the current unit&lt;br /&gt;
* '''[unit_moves]''' the moves remaining for the current unit&lt;br /&gt;
* '''[unit_weapons]''' the attacks of the current unit&lt;br /&gt;
* '''[unit_image]''' the icon for the current unit&lt;br /&gt;
* '''[unit_profile]'''&lt;br /&gt;
* '''[time_of_day]''' the time of day on the current location&lt;br /&gt;
* '''[turn]''' the turn number and turn remaining&lt;br /&gt;
* '''[gold]''' the gold remaining&lt;br /&gt;
* '''[villages]''' the number of villages owned&lt;br /&gt;
* '''[num_units]''' the number of units owned&lt;br /&gt;
* '''[upkeep]''' the money needed to keep your units every turn&lt;br /&gt;
* '''[expenses]''' the money lost each turn when you don't have enough income&lt;br /&gt;
* '''[income]''' the income per turn (can be positive)&lt;br /&gt;
* '''[terrain]''' the text description of the current terrain&lt;br /&gt;
* '''[position]''' the current terrain's position&lt;br /&gt;
* '''[side_playing]''' the current playing side&lt;br /&gt;
* '''[observers]''' the current observers&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[ThemeSystem]]&lt;br /&gt;
* [[Using custom themes in campaigns]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Talk:UsefulWMLFragments&amp;diff=11171</id>
		<title>Talk:UsefulWMLFragments</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Talk:UsefulWMLFragments&amp;diff=11171"/>
		<updated>2006-08-14T08:33:30Z</updated>

		<summary type="html">&lt;p&gt;Tsr: 2 suggestions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm thinking that it would be good to have all pages linked also link back. It would also be good to add this page to the Category: WML, opinions? /tsr&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Talk:EffectWML&amp;diff=11159</id>
		<title>Talk:EffectWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Talk:EffectWML&amp;diff=11159"/>
		<updated>2006-08-12T17:34:25Z</updated>

		<summary type="html">&lt;p&gt;Tsr: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ok, don't know if this is the correct place, but I'll give it a try. I noticed that this page doesn't have the WML-menu that the other WML-pages have. I don't know how to fix this, but if anyone shows me I'd be happy to do it. /tsr&lt;br /&gt;
&lt;br /&gt;
It's the ''&amp;lt;nowiki&amp;gt;{{WML Tags}}&amp;lt;/nowiki&amp;gt;'' that includes the menu (placed at the top, as you can see on the other pages). /zookeeper&lt;br /&gt;
&lt;br /&gt;
Ok, thanks, now it's fixed. /tsr&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=EffectWML&amp;diff=11158</id>
		<title>EffectWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=EffectWML&amp;diff=11158"/>
		<updated>2006-08-12T17:33:08Z</updated>

		<summary type="html">&lt;p&gt;Tsr: Added the wml-menu&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;
* ''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;
* &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.&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. (depreciated in v1.3+ or SVN trunk)&lt;br /&gt;
** ''[set_specials]'' (v1.3+ or SVN trunk only) 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'' (v1.3+ or SVN trunk only) 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'' {{DevFeature}} change the attack's attack_weight. See [[AttackWML]] for explainations about attack_weight.&lt;br /&gt;
** ''defense_weight'' {{DevFeature}} 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_max'' it the unit ends up with more than its max HP after these modifications, and this key is present, 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; {{DevFeature}} 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; {{DevFeature}} 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; {{DevFeature}} 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;
&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>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Talk:EffectWML&amp;diff=11120</id>
		<title>Talk:EffectWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Talk:EffectWML&amp;diff=11120"/>
		<updated>2006-08-10T13:39:41Z</updated>

		<summary type="html">&lt;p&gt;Tsr: WML-menu where are you?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ok, don't know if this is the correct place, but I'll give it a try. I noticed that this page doesn't have the WML-menu that the other WML-pages have. I don't know how to fix this, but if anyone shows me I'd be happy to do it. /tsr&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=InterfaceActionsWML&amp;diff=11119</id>
		<title>InterfaceActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=InterfaceActionsWML&amp;diff=11119"/>
		<updated>2006-08-10T13:36:15Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* See Also */ Added Category WML&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;
* ''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;
* ''sound'' a sound effect (wav file) to play as the message is displayed. {{DevFeature}} 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;
** '''[command]''' an element containing actions which are executed if the option is selected.&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;
* {{DevFeature}} 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;
&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'' {{DevFeature}} 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;
* '''[scroll_to_unit]''' Scroll to a given unit&lt;br /&gt;
** standard unit filter&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;
* '''[music]''' Switches to playing different music&lt;br /&gt;
** ''name'' the filename of the music to play (in ''music/'' as .ogg)&lt;br /&gt;
** {{DevFeature}} 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'' {{DevFeature}} 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;
&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>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=EffectWML&amp;diff=11118</id>
		<title>EffectWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=EffectWML&amp;diff=11118"/>
		<updated>2006-08-10T13:34:46Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* See Also */ Added Category WML&lt;/p&gt;
&lt;hr /&gt;
&lt;div&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;
* ''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;
* &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.&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. (depreciated in v1.3+ or SVN trunk)&lt;br /&gt;
** ''[set_specials]'' (v1.3+ or SVN trunk only) 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'' (v1.3+ or SVN trunk only) 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'' {{DevFeature}} change the attack's attack_weight. See [[AttackWML]] for explainations about attack_weight.&lt;br /&gt;
** ''defense_weight'' {{DevFeature}} 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_max'' it the unit ends up with more than its max HP after these modifications, and this key is present, 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; {{DevFeature}} 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; {{DevFeature}} 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; {{DevFeature}} 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;
&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>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=DescriptionWML&amp;diff=11117</id>
		<title>DescriptionWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=DescriptionWML&amp;diff=11117"/>
		<updated>2006-08-10T13:31:42Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* See Also */ Added Category WML&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Description texts ==&lt;br /&gt;
&lt;br /&gt;
A description is a part of the value of a menu attribute.&lt;br /&gt;
It is used to represent a single option in the menu which consists of an image(called the ''icon'') followed by text.&lt;br /&gt;
&lt;br /&gt;
A description has the format&lt;br /&gt;
&lt;br /&gt;
* ''';''' if another description precedes it&lt;br /&gt;
&lt;br /&gt;
* '''*''' if it should be the default selection&lt;br /&gt;
&lt;br /&gt;
* '''&amp;amp;''image''=''text''''' image with text description&lt;br /&gt;
&lt;br /&gt;
* '''&amp;amp;''image''=''text''=''text2''''' image with two text descriptions&lt;br /&gt;
&lt;br /&gt;
Single text items are always enclosed in '''&amp;quot;''', and concatenated with '''+'''. This is useful so the text can contain translateable items (the '''_''' before a text), and so it can span multiple lines.&lt;br /&gt;
&lt;br /&gt;
for example:&lt;br /&gt;
&lt;br /&gt;
 difficulty_descriptions=&amp;quot;&amp;amp;&amp;quot; + &amp;quot;elvish-fighter.png&amp;quot; + &amp;quot;=&amp;quot; + _&amp;quot;Fighter&amp;quot; + &amp;quot;=&amp;quot; + _&amp;quot;(easiest)&amp;quot; +&lt;br /&gt;
 	&amp;quot;;*&amp;quot; + &amp;quot;&amp;amp;&amp;quot; + &amp;quot;elvish-hero.png&amp;quot; + &amp;quot;=&amp;quot; + _&amp;quot;Hero&amp;quot; +&lt;br /&gt;
 	&amp;quot;;&amp;quot; + &amp;quot;&amp;amp;&amp;quot; + &amp;quot;elvish-champion.png&amp;quot; + &amp;quot;=&amp;quot; + _&amp;quot;Champion&amp;quot; + &amp;quot;=&amp;quot; + _&amp;quot;(hardest)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The utility macros (see [[UtilWML]]) '''{MENU_IMG_TXT ''icon'' ''text''}'''&lt;br /&gt;
and '''{MENU_IMG_TXT2 ''icon'' ''text'' ''text-2''}'''&lt;br /&gt;
can be used to create descriptions more easily. The above example would become:&lt;br /&gt;
&lt;br /&gt;
 difficulty_descriptions={MENU_IMG_TXT2 &amp;quot;elvish-fighter.png&amp;quot; _&amp;quot;Fighter&amp;quot; _&amp;quot;(easiest)&amp;quot;} +&lt;br /&gt;
 	&amp;quot;;*&amp;quot; + {MENU_IMG_TXT &amp;quot;elvish-hero.png&amp;quot; _&amp;quot;Hero&amp;quot;} + &amp;quot;;&amp;quot; +&lt;br /&gt;
 	{MENU_IMG_TXT2 &amp;quot;elvish-champion.png&amp;quot; _&amp;quot;Champion&amp;quot; _&amp;quot;(hardest)&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[CampaignWML]]&lt;br /&gt;
* [[EraWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=AiWML&amp;diff=11114</id>
		<title>AiWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=AiWML&amp;diff=11114"/>
		<updated>2006-08-10T13:26:26Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* See Also */  Added Category WML&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== AI phases ==&lt;br /&gt;
&lt;br /&gt;
When the AI does its turn, it has several 'phases'.&lt;br /&gt;
In debug mode, these phases are shown in the upper-left corner.&lt;br /&gt;
&lt;br /&gt;
=== Combat phase ===&lt;br /&gt;
It decides who is in range to attack, and whether it's worth attacking them&lt;br /&gt;
&lt;br /&gt;
=== Healing phase ===&lt;br /&gt;
It locates injured units and sees if they can be moved to villages to heal&lt;br /&gt;
&lt;br /&gt;
=== Village capturing phase ===&lt;br /&gt;
It locates units, and sees if they are in range of villages which they can capture&lt;br /&gt;
&lt;br /&gt;
=== Retreating phase ===&lt;br /&gt;
It sees if any units are in grave danger/hopelessly outnumbered, and if they are, it retreats them&lt;br /&gt;
&lt;br /&gt;
=== Movement/targetting phase ===&lt;br /&gt;
It decides upon 'targets', assigns those targets values, and moves units toward targets based on how easy it is to get to the targets, and how valuable the targets are.&lt;br /&gt;
&lt;br /&gt;
== the [ai] tag ==&lt;br /&gt;
&lt;br /&gt;
The [ai] tag is used inside a [side] tag, and it's contents define how the AI controlling that side acts. You can use multiple [ai] tags and have them apply during different turns or times of day, for example to set an undead side's caution higher and aggression lower during the day, or to boost the aggressiveness of a side when they receive reinforcements on a specific turn.&lt;br /&gt;
&lt;br /&gt;
The following key/tags can be used in an '''[ai]''' tag:&lt;br /&gt;
* ''time_of_day'' the time(s) of day when the AI should use the parameters given in this [ai] tag. Possible values are listed in data/schedules.cfg (See [[TimeWML]]).&lt;br /&gt;
&lt;br /&gt;
* ''turns'' during which turns the AI should use the parameters given in this [ai] tag. This takes the same syntax of dashes(-) and commas(,) as is described under Filtering Locations in [[FilterWML]], except of course they apply to turns not locations.&lt;br /&gt;
&lt;br /&gt;
* ''ai_algorithm'' allows an alternate AI algorithm (cannot be created with WML) to be used. Besides the default, the game comes with only ''idle_ai'', which makes the AI do nothing and can be used to create a passive, unmoving side. Cannot be applied only to a set of turns or a given time of day using the keys ''turns'' and ''time_of_day'', but must be given either in an [ai] tag without the aforementioned keys or outside [ai] tags inside the [side] tag.&lt;br /&gt;
&lt;br /&gt;
* ''python_script'' is used when '''ai_algorithm''' has the value '''python_ai''', and specifies the name of the python script the AI should use. The script is looked for in the same pathes as units, specified with '''binary_path'''.&lt;br /&gt;
&lt;br /&gt;
* ''recruitment_pattern'' This key takes a list containing the possible inputs 'scout', 'fighter', 'archer', 'healer' and 'mixed fighter'. This tells the AI in what order it should recruit different types of units. The AI considers each unit to be one of these types. The type is listed in the unit file in data/units/ (See also [[UnitWML]]).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt; ''aggression'' This key affects how an AI player will fight.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
It determines how an AI considers the difference between its units and its opponents&lt;br /&gt;
by taking the value ''1 - AI unit value in proportion to opponent unit value''.&lt;br /&gt;
('Unit value' here means that the AI weights its decision on the chance to kill&lt;br /&gt;
a unit or be killed, using a combination of its own units.)&lt;br /&gt;
So, to make an AI which considers its units worthless i.e.&lt;br /&gt;
only cares about how much damage attacks inflict,&lt;br /&gt;
set aggression at ''1 - 0 = 1.0''.&lt;br /&gt;
This is the highest meaningful value for aggression; although it is insane, it is used on many HttT levels.&lt;br /&gt;
If an AI set on this value can inflict 1 damage and take 0, or inflict 2 damage and take 20 himself,&lt;br /&gt;
he'll take the latter option.&lt;br /&gt;
To make an AI which considers its units equally as valuable as its opponent's i.e.&lt;br /&gt;
only attacks if he feels he can inflict more damage than he receives,&lt;br /&gt;
set aggression at ''1 - 1 = 0.0''.&lt;br /&gt;
Although an AI which considers its opponent's units worthless is impossible under this scheme,&lt;br /&gt;
an AI which, for example, considers its units twice as valuable as its opponent's&lt;br /&gt;
can be represented by aggression ''1 - 2 = -1.0''.&lt;br /&gt;
having to be able to inflict more damage than he takes for it to be worth his while.&lt;br /&gt;
The default is ''1 - 1/2 = 0.5'', which means the AI is content with dealing only&lt;br /&gt;
half the damage to his opponent of that which he himself takes.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''caution'' A number 0.0 or higher (default=0.25) that affects how cautious the AI is in various ways. If it is higher, the AI will want to retreat more (especially to a better defensive terrain), it will dislike moving out of a defensive terrain to attack more, and, if grouping is enabled, it forms bigger groups to protect from enemies when going to a target.&lt;br /&gt;
&lt;br /&gt;
* ''village_value'' A number 0 or higher (default=1) which determines how much the AI tries to capture villages.&lt;br /&gt;
&lt;br /&gt;
* ''leader_value'' A number 0 or higher (default=3) which determines how much the AI targets enemy leaders.&lt;br /&gt;
&lt;br /&gt;
* ''villages_per_scout'' A number 0 or higher which determines how many scouts the AI recruits. Defaults to 4.  If 0, the AI doesn't recruit scouts to capture villages.&lt;br /&gt;
&lt;br /&gt;
* ''recruitment_ignore_bad_movement'' if 'yes', the AI will not analyse the terrain to see if the unit is suitable for it.&lt;br /&gt;
&lt;br /&gt;
* ''recruitment_ignore_bad_combat'' if 'yes', the AI will not analyse the units the enemy has fielded to see if the unit is suitable for fighting them.&lt;br /&gt;
&lt;br /&gt;
* ''passive_leader'' if 'yes' the AI leader will never move or attack, except to obey [leader_goal]s.&lt;br /&gt;
&lt;br /&gt;
* ''attack_depth'' a number from 1 to 6, default 5.  This is how many units will be thought about to attack a single unit.  If the attack is completed, the AI on another round of thinking may still decide to attack that unit again with other units.  Note that in battles, a unit usually can't be attacked from all six sides anyway, so any high attack_depth will be about the same.  If attack_depth is low, the AI won't want to attack unwounded units very much, because it doesn't think it can kill them in the attack.&lt;br /&gt;
&lt;br /&gt;
* ''simple_targetting'' When the AI decides what targets to move towards with which units, it considers all its units that can move, sequentially.  For each unit, it decides what the best target for it to go towards is.  If not 'yes', it will check if any other units would be better to go towards that target than the unit it is currently considering.&lt;br /&gt;
&lt;br /&gt;
* ''scout_village_targetting'' The AI multiplies the value of village targets for scouts by this value. The default is 3.&lt;br /&gt;
&lt;br /&gt;
* ''grouping'' how the AI should try to group units&lt;br /&gt;
** 'offensive' (the default): Makes the AI try to group units together before attacking.&lt;br /&gt;
** 'defensive': Makes the AI group units together very conservatively, and only advances much beyond its castle if it has overwhelming force.&lt;br /&gt;
** 'no': Makes the AI not use grouping behaviour. This is what it used to be like.&lt;br /&gt;
&lt;br /&gt;
* ''protect_leader'' and ''protect_leader_radius'' - the way these parameters work, is to target any enemy units that come within 'protect_leader_radius' of the AI leader with a value of 'protect_leader' on the units. The default for these values are 1.0 and 20.&lt;br /&gt;
&lt;br /&gt;
* '''[protect_location]''' gives the AI a location to protect. Note that the AI will NOT station any units around the location, it will only send units to attack any enemy units that come within the guarding radius of the target.&lt;br /&gt;
** ''x'', ''y'' standard coordinates. These indicate the location the AI is protecting,&lt;br /&gt;
** ''radius'' indicates the radius around it to protect&lt;br /&gt;
** ''value'' indicates the importance of protecting this location&lt;br /&gt;
&lt;br /&gt;
* '''[protect_unit]''' gives the AI a set of units to protect. Note once again that the AI will not place units around the unit if there are no enemies nearby.&lt;br /&gt;
** standard unit filter- the unit(s) to protect&lt;br /&gt;
** ''radius'' indicates the radius around it to protect&lt;br /&gt;
** ''value'' indicates the importance of protecting this unit&lt;br /&gt;
&lt;br /&gt;
* '''[target]''' Any number of [target] tags can be used to set a target for the AI. For anything related to 'values', set them relative to other targets. An AI is willing to dedicate twice as many resources and travel twice as far to get a target worth '2.0' as it is a target worth '1.0'.&lt;br /&gt;
** standard unit filter&lt;br /&gt;
** value: A number greater than 0 (default=1) which determines how much the AI tries to kill all units which pass the filter.&lt;br /&gt;
&lt;br /&gt;
* '''[avoid]''' Makes the AI avoid a specific location or unit.&lt;br /&gt;
** ''x'', ''y'' standard coordinates- A location for the AI to avoid moving to.  The AI will never move a unit to this location except for trying to move its leader to a keep.&lt;br /&gt;
** standard unit filter- A set of units for the AI to avoid moving to. This feature is currently not implemented.&lt;br /&gt;
&lt;br /&gt;
* '''[leader_goal]''' Makes the AI try to move its leader to a specific location (as in the goal of The Elves Besieged).&lt;br /&gt;
** ''x'', ''y'' the location for the AI to move its leader to&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Creating_Shadows_Under_Units&amp;diff=10027</id>
		<title>Creating Shadows Under Units</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Creating_Shadows_Under_Units&amp;diff=10027"/>
		<updated>2006-06-12T13:22:41Z</updated>

		<summary type="html">&lt;p&gt;Tsr: /* The Current Method: */ added information on gaussian blur for the GIMP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;by Richard Kettering (Jetryl)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Wesnoth's shadows have evolved through several different iterations of &amp;quot;how they are drawn&amp;quot;.  This tutorial covers both a quick history of what was done in the past to draw shadows, and what the current &amp;quot;official&amp;quot; method is.  As a general note, it should be mentioned that the shadows are part of the same image file as the unit graphics.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===History:===&lt;br /&gt;
&lt;br /&gt;
Wesnoth, at first, used a binary transparency system - a pixel was either completely opaque, or completely see-through (transparent).  This is not unlike what .gif images use, in terms of the final effect.  The first system actually assigned one color (pure black, for those who are interested) as the transparent color, and anywhere where such a pixel was found in a game image, the engine would not draw it.&lt;br /&gt;
&lt;br /&gt;
The next step was fairly obvious - wesnoth uses the PNG image format, which allows a special part of the image to be built-in to the file.  This is essentially another image which tells the computer how transparent each pixel in the image is, and it is called an Alpha Channel.  This &amp;quot;alpha channel&amp;quot; is a grayscale image, meaning that each pixel can be set to be not only either completely opaque or completely transparent, but also anywhere in-between.  At first, we converted all of our images to PNG, but used only binary transparency.  Our shadows were jet black, and obscured the ground completely.&lt;br /&gt;
&lt;br /&gt;
As code support came, we switched to our next system, in which many of our images are in at the time of this writing.  This set the shadow of a unit to be 60% opaque, allowing the ground beneath to show through, and looked rather good.&lt;br /&gt;
&lt;br /&gt;
As our terrain improved, however, this began to show its limitations.  The shadows had hard edges which were forced to lie on pixel boundaries.  This looks unnatural for some of the situations in which we use it, and as such, we moved to our current system.  This is simple, has a clear procedure which can be followed to generate it rapidly and correctly, and looks good in all situations.  In the following image, compare the dwarf done with the old method, and the elven sylph done with the new method.  It's a subtle, but potent difference, and is especially evident when the colored rings are drawn under our units to signify which team they're on:&lt;br /&gt;
&lt;br /&gt;
http://exong.net/wesnoth-attach/files/unitshadows1_148.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The obvious complaint about the current system is that it might be hard to edit, compared with the previous system.  The solution is simple - just delete the previous shadow and recreate one from scratch.  Because of how these shadows are made, it is relatively clear which pixels had been opaque in the source layer before blurring, and if a few pixels are different in a new frame, it is often unnoticeable.  At most, the process of creating a new shadow will take a few minutes, and for animations, it has the benefit of forcing someone to draw a shadow from scratch (which should be done anyways).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The Current Method:===&lt;br /&gt;
&lt;br /&gt;
The first two steps in this method are for converting old shadows to the new system.  To adapt it to creating a shadow from scratch, start with a new empty layer in your graphics program, and begin at step three.  In this tutorial, I'll be using the process I used to create shadows for Neoriceisgood's Saurian Flanker as an example:&lt;br /&gt;
&lt;br /&gt;
1]  Select all of the pixels which make up the old shadow:&lt;br /&gt;
&lt;br /&gt;
http://exong.net/wesnoth-attach/files/unitshadows2_123.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2]  &amp;quot;Cut&amp;quot; these into another layer in your graphics program.  In photoshop, a wonderful tool for this is in the following menu: '''Layer -&amp;gt; New -&amp;gt; Layer via Cut'''.  This acts like cutting the selection from one layer and pasting it as another in the exact same position it was in before.&lt;br /&gt;
&lt;br /&gt;
3]  Take this new layer, and draw over all of it in solid black with the pencil tool.  When doing this, if you are converting an old shadow, you can use the old one as a guide for where the new shadow should fall.  Regardless of what you're creating, however, there is an unusual thing to do in this step, and that is to draw in the entire area that a shadow would fall - not merely the area that is unobscured by the unit, but also in the area that you cannot see.  This is important for a later step.&lt;br /&gt;
&lt;br /&gt;
Note that this layer should be moved below all the other layers in the file.  It's also very helpful to temporarily make the other layers mostly transparent, as this can guide you in intuiting where the shadow should fall on an imaginary ground:&lt;br /&gt;
&lt;br /&gt;
http://exong.net/wesnoth-attach/files/unitshadows3_202.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
4]  I generally duplicate this layer, when finished, and hide the duplicate &amp;quot;backup&amp;quot; layer.&lt;br /&gt;
&lt;br /&gt;
5] Apply a gaussian blur to this layer, with a width of 0.5 pixels (if you're using GIMP use 1.5 pixels):&lt;br /&gt;
&lt;br /&gt;
http://exong.net/wesnoth-attach/files/unitshadows4_193.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
6] Change the opacity of this layer to precisely 60%.  If your graphics editor speaks in transparency instead, then set it to 40%, which is the same thing.  Either one of these means that 40% of what is underneath will shine through the black.  '''It's very important, however, not to deviate from using solid black, and not to deviate from using 60% opacity unless you have a good reason.'''  Using these makes our unit imagery consistent.&lt;br /&gt;
&lt;br /&gt;
http://exong.net/wesnoth-attach/files/unitshadows5_481.png&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This, then, is what the final result of the example images in this tutorial looks like:&lt;br /&gt;
&lt;br /&gt;
http://exong.net/wesnoth-attach/files/unitshadows6_182.png&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Create]]&lt;br /&gt;
* [[Art Tutorials]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Art Tutorials]]&lt;/div&gt;</summary>
		<author><name>Tsr</name></author>
		
	</entry>
</feed>