<?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=Holius</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=Holius"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Holius"/>
	<updated>2026-04-05T19:57:40Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WML_for_Complete_Beginners:_Chapter_2&amp;diff=60068</id>
		<title>WML for Complete Beginners: Chapter 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WML_for_Complete_Beginners:_Chapter_2&amp;diff=60068"/>
		<updated>2018-11-30T14:24:51Z</updated>

		<summary type="html">&lt;p&gt;Holius: /* The Userdata Directory */ version update 1.12 -&amp;gt; 1.14&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Chapter 2: The Userdata Directory and the Campaign Folder==&lt;br /&gt;
&lt;br /&gt;
So now that you understand the basic syntax of WML, it's time to learn where The Battle for Wesnoth stores files so that we can begin creating our campaign.&lt;br /&gt;
&lt;br /&gt;
===The Userdata Directory===&lt;br /&gt;
&lt;br /&gt;
There are two main directories that Wesnoth creates on your computer. The '''installation directory''' contains all the files for the core game. The '''userdata directory''' stores all your personal Wesnoth data, which includes your installed add-ons, your settings and preferences, and your saved games. The userdata directory is where we will store your work throughout this tutorial.&lt;br /&gt;
&lt;br /&gt;
The location of your userdata directory differs depending on your operating system, and in the case of Microsoft Windows, the version of your operating system. Refer to the following table to determine where your userdata directory is located:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
!Windows XP&lt;br /&gt;
|~/My Documents/My Games/Wesnoth 1.14/&lt;br /&gt;
|-&lt;br /&gt;
!Windows Vista and above&lt;br /&gt;
|~/Documents/My Games/Wesnoth 1.14/&lt;br /&gt;
|-&lt;br /&gt;
!Mac OS X&lt;br /&gt;
|~/Library/Application Support/Wesnoth 1.14/&lt;br /&gt;
|-&lt;br /&gt;
!Linux&lt;br /&gt;
|~/.local/share/wesnoth/1.14/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
''Note:'' On Windows, if you chose 'Store userdata in the install location' during setup, the userdata directory is usually in&amp;lt;br&amp;gt;&lt;br /&gt;
~/AppData/Local/VirtualStore/Program Files (x86)/Battle for Wesnoth 1.14.5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now navigate to your userdata folder. Provided that you have already run the Wesnoth application at least once before, you should see a total of five folders (&amp;quot;cache&amp;quot;, &amp;quot;data&amp;quot;, &amp;quot;editor&amp;quot;, &amp;quot;persist&amp;quot;, and &amp;quot;saves&amp;quot;) in this directory, along with two files (&amp;quot;preferences&amp;quot; and &amp;quot;save_index.gz&amp;quot;). If you see all seven of these, everything is good. If you do not see all seven, try running the Wesnoth application. If that does not work, try restarting your computer. If neither of these steps work, reinstall Wesnoth.&lt;br /&gt;
&lt;br /&gt;
Of the seven objects contained in the userdata folder, you will only ever need to directly interact with two: the &amp;quot;data&amp;quot; folder and the &amp;quot;editor&amp;quot; folder.&lt;br /&gt;
&lt;br /&gt;
====The data folder====&lt;br /&gt;
&lt;br /&gt;
:The data folder (more exactly the data/add-ons/ folder) is where all installed add-ons are kept. This is where we will be building our campaign, when we get to that. If you have previously installed any Wesnoth add-ons, they should show up in this folder.&lt;br /&gt;
&lt;br /&gt;
====The editor folder====&lt;br /&gt;
&lt;br /&gt;
:The editor folder is where all maps created with the in-game map editor are stored. If you have ever created and saved a map in-game, you should see the map file in this directory.&lt;br /&gt;
&lt;br /&gt;
===The Campaign Folder===&lt;br /&gt;
&lt;br /&gt;
Like I told you earlier, all add-ons are installed in the data/add-ons folder inside the userdata directory. That means that your campaign will also be located inside the data/add-ons folder. If you're not already there, enter the data/add-ons folder now.&lt;br /&gt;
&lt;br /&gt;
Next, create a new folder inside the data/add-ons folder. Name this new folder &amp;quot;my_first_campaign&amp;quot; exactly as I wrote it here (but don't include the quotation marks). Make sure you spelled it right, that you didn't accidentally capitalize any letters and that you included the underscores between the words in the folder name, because if you don't your campaign won't work when you try to play it. &lt;br /&gt;
&lt;br /&gt;
Now enter the &amp;quot;my_first_campaign&amp;quot; folder and create seven new folders. Name these folders &amp;quot;images&amp;quot;, &amp;quot;macros&amp;quot;, &amp;quot;maps&amp;quot;, &amp;quot;scenarios&amp;quot;, &amp;quot;translations&amp;quot;, &amp;quot;units&amp;quot; and &amp;quot;utils&amp;quot; (again, make sure you spelled everything right, that you didn't accidentally capitalize anything, and that you didn't include the quotation marks).&lt;br /&gt;
&lt;br /&gt;
All campaigns share this common folder structure.&lt;br /&gt;
&lt;br /&gt;
Continue to [[WML for Complete Beginners: Chapter 3]]&lt;br /&gt;
&lt;br /&gt;
Or head back to [[WML for Complete Beginners: Chapter 1]]&lt;br /&gt;
&lt;br /&gt;
Return to Main Index:&lt;br /&gt;
[[WML for Complete Beginners]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WML_for_Complete_Beginners]]&lt;/div&gt;</summary>
		<author><name>Holius</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=AI_Recruitment&amp;diff=59038</id>
		<title>AI Recruitment</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=AI_Recruitment&amp;diff=59038"/>
		<updated>2017-11-30T15:28:17Z</updated>

		<summary type="html">&lt;p&gt;Holius: fix errors (title levels)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A new [[RCA_AI#The_Candidate_Actions_.28CAs.29_of_the_main_loop_Stage_in_the_RCA_AI|recruitment candidate action]] (CA) was introduced and made the default in Wesnoth 1.11.  It is much more configurable than previous versions and supports multiple leader recruiting.  This page describes how it works and the parameters available for customizing it.&lt;br /&gt;
&lt;br /&gt;
==How it works==&lt;br /&gt;
===Map analysis===&lt;br /&gt;
In a first step, the CA analyzes the map and tries to find &amp;quot;important hexes&amp;quot;. Those are locations on the map where a fight will occur with high probability. The important hexes are later used in combat simulations to calculate an average defense rating for the combatants.&lt;br /&gt;
&lt;br /&gt;
When the game is running in debug mode ''and'' the game is started with the parameter &amp;lt;code&amp;gt;--log-info=ai/recruitment&amp;lt;/code&amp;gt; the important hexes are marked with white 'x' markers on the map.&lt;br /&gt;
&lt;br /&gt;
===Score Map===&lt;br /&gt;
&lt;br /&gt;
A score map is created for all leaders who are able to recruit. All unit types from the recruit and recall lists are mapped to a score. &lt;br /&gt;
&lt;br /&gt;
In the end, the scores represent the desired unit ratios on the map. This means the AI will ''not'' just recruit the unit with the highest score, but in such a way that the mix of units on the map comes as close as possible to the mix represented by the scores.&lt;br /&gt;
The scores are filled with values coming from combat analyses (see below).&lt;br /&gt;
&lt;br /&gt;
After that the AI modifies the scores in several ways:&lt;br /&gt;
* Similar units get a penalty for being similar. Similar units are units in one advancement tree.&lt;br /&gt;
 Example (Archer can advance to Ranger):&lt;br /&gt;
 			before	after&lt;br /&gt;
 Elvish Fighter: 	  50	 50&lt;br /&gt;
 Elvish Archer:		  50	 25&lt;br /&gt;
 Elvish Ranger:		  50	 25&lt;br /&gt;
* The aspects ''recruitment_more'', ''recruitment_diversity'' and ''recruitment_randomness'' are handled ([[#Other_Recruitment_Related_Aspects|see below]]).&lt;br /&gt;
&lt;br /&gt;
===Combat Analysis===&lt;br /&gt;
For each unit type the AI leaders can recruit, the CA simulates fights against all enemy units on the map. If there are less then 5 enemy units, the enemy recruitment list(s) are also taken into account.&lt;br /&gt;
&lt;br /&gt;
After combat analysis the score map may look like this:&lt;br /&gt;
&lt;br /&gt;
 Goblin Spearman score:		16.1252&lt;br /&gt;
 Naga Fighter score:		0&lt;br /&gt;
 Orcish Archer score:		61.6442&lt;br /&gt;
 Orcish Assassin score:		88.0737&lt;br /&gt;
 Orcish Grunt score:		100&lt;br /&gt;
 Troll Whelp score:		26.7646&lt;br /&gt;
 Wolf Rider score:		0&lt;br /&gt;
&lt;br /&gt;
====Implementation details for interested readers====&lt;br /&gt;
&lt;br /&gt;
The combat analysis uses the function ''compare_unit_types(A, B)''. It takes two unit types and simulates a fight, using a cache because simulation is expensive. The function returns a positive value if unit type ''A'' is better than ''B'' and a negative value if unit type ''B'' is better than ''A''. If the return value is 2.0, it means that unit type A is twice as good as unit type B.&lt;br /&gt;
&lt;br /&gt;
Here is a important code snippet from ''compare_unit_types()'':&lt;br /&gt;
 double value_of_a = damage_to_b / (b_max_hp * a_cost);&lt;br /&gt;
 double value_of_b = damage_to_a / (a_max_hp * b_cost);&lt;br /&gt;
 &lt;br /&gt;
 if (value_of_a &amp;gt; value_of_b) {&lt;br /&gt;
   return value_of_a / value_of_b;&lt;br /&gt;
 } else if (value_of_a &amp;lt; value_of_b) {&lt;br /&gt;
   return -value_of_b / value_of_a;&lt;br /&gt;
 } else {&lt;br /&gt;
   return 0.;&lt;br /&gt;
 }&lt;br /&gt;
''damage_to_b'' comes from simulations and is the average damage dealt by ''A'' when ''A'' attacks (''A'' chooses weapon) plus the average damage dealt by ''A'' when ''B'' attacks (''B'' chooses weapon). ''damage_to_a'' is equivalent.&lt;br /&gt;
&lt;br /&gt;
The return value of ''compare_unit_types()'' is multiplied by the enemy's current hitpoints and added to the score map.&lt;br /&gt;
&lt;br /&gt;
Included in the damage calculations are average defense (coming from &amp;quot;important hexes&amp;quot;), resistance, resistance abilities, average time of day, drain, poison, berserk, swarm and slows.&lt;br /&gt;
&lt;br /&gt;
At this point the scores can be quite inconvenient for a generalized treatment. They could all be negative, very high or too similar. Thus, the scores are transformed linearly. The resulting scores are numbers between 0.0 and 100.0.&lt;br /&gt;
The minimum depends on the aspect ''recruitment_diversity''.&lt;br /&gt;
&lt;br /&gt;
Simplified code snippet:&lt;br /&gt;
 double new_100 = max_score;&lt;br /&gt;
 double new_0 = max_score - (recruitment_diversity * (max_score - average_score));&lt;br /&gt;
 &lt;br /&gt;
 BOOST_FOREACH(double&amp;amp; score, scores) {&lt;br /&gt;
   score = 100 * ((score - new_0) / (new_100 - new_0)); // linear transformation&lt;br /&gt;
   if (score &amp;lt; 0.) {&lt;br /&gt;
     score = 0.;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==Aspect ''recruitment_instructions''==&lt;br /&gt;
&lt;br /&gt;
This is a powerful aspect for controlling recruitment via WML.  Its syntax is quite complex and requires the [[Wesnoth_AI_Framework#The_.5Bai.5D_Tag_.E2.80.94_Aspects|''composite'' aspect configuration]].  At its core are the ''[recruit]'' tags, which are the instructions to the candidate action defining which units are to be recruited.&lt;br /&gt;
 [ai]&lt;br /&gt;
   [aspect]&lt;br /&gt;
     id=recruitment_instructions&lt;br /&gt;
     [facet]&lt;br /&gt;
        turns=&lt;br /&gt;
        [value]&lt;br /&gt;
          &amp;lt;span style=&amp;quot;color:#999999&amp;quot;&amp;gt;#(here multiple [recruit] and/or [limit]-tags)&amp;lt;/span&amp;gt;&lt;br /&gt;
          [recruit]&lt;br /&gt;
            &amp;lt;span style=&amp;quot;color:#999999&amp;quot;&amp;gt;#(attributes)&amp;lt;/span&amp;gt;&lt;br /&gt;
          [/recruit]&lt;br /&gt;
          [limit]&lt;br /&gt;
            &amp;lt;span style=&amp;quot;color:#999999&amp;quot;&amp;gt;#(attributes)&amp;lt;/span&amp;gt;&lt;br /&gt;
          [/limit]          &lt;br /&gt;
        [value]&lt;br /&gt;
     [/facet]&lt;br /&gt;
   [/aspect]&lt;br /&gt;
 [/ai]&lt;br /&gt;
&lt;br /&gt;
Attributes inside '''[facet]''':&lt;br /&gt;
* '''turns'''=&amp;quot;&amp;quot;: (string) This key takes a comma separated list containing numbers specifying the turns. '-' can be used between two values to define a range. An empty string means ''all turns''.&lt;br /&gt;
* The [[Wesnoth_AI_Framework#The_.5Bai.5D_Tag_.E2.80.94_Aspects|other keys possible in [facet] tags]] can, in principle, also be used, but note that ''invalidate_on_gamestate_change'' and ''invalidate_on_minor_gamestate_change'' have no effect on [recruit] tags.  They are read at the beginning of the turn and are immutable for the remainder of the turn.&lt;br /&gt;
&lt;br /&gt;
Attributes inside '''[recruit]''':&lt;br /&gt;
* '''id''': (string) {{DevFeature1.13|5}} By specifying an ID it becomes possible to manipulate the [recruit] tags using [[DirectActionsWML#.5Bmodify_ai.5D|modify_ai]]. This is entirely optional.&lt;br /&gt;
* '''type='''&amp;quot;&amp;quot;: (string) This key takes a comma separated list containing unit types, usages or levels. Common values for ''usage'' are 'scout', 'fighter', 'archer', 'healer' and 'mixed fighter'. An empty string means 'all units'. If more than one unit is specified, the AI decides what to recruit according to the score map.&lt;br /&gt;
* '''number'''=-1: (integer) A number ''n'' greater than 0 instructs the AI to recruit ''n'' units. '-1' means 'as much as possible'. '0' means 'do not recruit'.&lt;br /&gt;
* '''importance'''=1: (integer) Priority of the recruitment.  The AI first recruits units with the highest importance, until the specified limits are reached. If gold is lacking or the castle is full, only the most important units are recruited, all other [recruit] jobs are dropped.&lt;br /&gt;
* '''leader_id'''=&amp;quot;&amp;quot;: (string) ''id'' of the leader to execute this recruitment. Empty string means 'all leaders'.  Note that this is only a recommendation to the AI. If the specified leader has no free hexes available, the AI uses other leaders to do the job.&lt;br /&gt;
* '''total'''=no: (boolean) If set to 'yes', the AI counts the own units on the map which match at least one of the given types and then recruits the difference between ''number'' and the counted amount.&lt;br /&gt;
* '''blocker'''=yes: (boolean) If set to 'yes', the AI stops recruiting if this job cannot be done (for example, because of lack of gold or a [limit]). If set to 'no', the AI drops this job and tries to continue with less important ones.&lt;br /&gt;
* '''pattern'''=no: (boolean) If set to 'yes', the unit to recruit is not chosen by the AI, but randomly according to the frequency in the type attribute. For example, when &amp;lt;code&amp;gt;type=Orcish Grunt, Orcish Grunt, scout&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;number=6&amp;lt;/code&amp;gt;, the AI recruits 6 units, with the probability that one unit is a grunt being twice as high as that of a scout. If the ''type'' attribute is empty, the AI recruits randomly. (See also [[#Other_Recruitment_Related_Aspects|''recruitment_pattern'']])&lt;br /&gt;
&lt;br /&gt;
Attributes inside '''[limit]''':&lt;br /&gt;
* '''id''': (string) {{DevFeature1.13|5}} By specifying an ID it becomes possible to manipulate the [limit] tags using [[DirectActionsWML#.5Bmodify_ai.5D|modify_ai]]. This is entirely optional.&lt;br /&gt;
* '''type'''=&amp;quot;&amp;quot;: (string) This key takes a comma separated list containing unit types, usages or levels. An empty string means 'all units'.&lt;br /&gt;
* '''max'''=0: (int) The maximum of units of the given type(s).&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
* [limit] has higher priority than [recruit].&lt;br /&gt;
* The ''recruitment_save_gold'' aspect has higher priority than [recruit]. So if exact recruiting is wished, deactivate ''recruitment_save_gold'' ([[#Aspect_recruitment_save_gold|see below]]).&lt;br /&gt;
* If recruitment is specified for a turn, the AI does '''not recruit any other unit''' by default. (So if the AI is told to recruit 1 scout in turn 1, then the AI will only recruit 1 scout and no other units). To prevent this behavior one can add this [recruit] tag:&lt;br /&gt;
 [recruit]&lt;br /&gt;
    importance=0&lt;br /&gt;
 [/recruit]&lt;br /&gt;
The AI then falls back to normal recruiting when all other [recruit] tags are dealt with. This is also the content of the [default] facet for the aspect.&lt;br /&gt;
* Even if only a [limit] tag is used in the aspect declaration, the [default] facet will get overwritten. Include the [recruit] tag mentioned in the previous point to let the AI recruit something. {{DevFeature1.13|5}} As of 1.13.5, if there is a [limit] tag but no [recruit] tag, an empty [recruit] tag is implied, allowing the AI to recruit. If both [limit] and [recruit] tags are present, no additional [recruit] tag is ever implied.&lt;br /&gt;
* Only one facet at a time can be active. When there are more [facet]s defined in a turn, only one will be used (usually the first one). Use several [recruit] and/or [limit] tags in the same facet instead.&lt;br /&gt;
* Do not define more than one [recruit] tag with the same importance. Also note that the aspect ''recruitment_pattern'' expands into a [recruit] tag with importance=1.&lt;br /&gt;
* {{DevFeature1.13|5}} The tags '''[total]''' and '''[pattern]''' may be used instead of [recruit]. These have basically the same meaning and contents as [recruit], but imply either total=yes or pattern=yes. They are converted to [recruit] tags and can be manipulated as such by modify_ai.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
Recruit 3 grunts (and nothing else) on turns 3-5.&lt;br /&gt;
 [ai]&lt;br /&gt;
   [aspect]&lt;br /&gt;
     id=recruitment_instructions&lt;br /&gt;
     [facet]&lt;br /&gt;
       '''turns=3-5'''&lt;br /&gt;
       [value] &lt;br /&gt;
         [recruit]&lt;br /&gt;
           '''type=Orcish Grunt'''&lt;br /&gt;
           '''number=3'''&lt;br /&gt;
         [/recruit]&lt;br /&gt;
       [/value]&lt;br /&gt;
     [/facet]&lt;br /&gt;
   [/aspect]&lt;br /&gt;
 [/ai]&lt;br /&gt;
Recruit as many scouts as possible until there are 4 scouts in total, then recruit other units.&lt;br /&gt;
 [ai]&lt;br /&gt;
   [aspect]&lt;br /&gt;
     id=recruitment_instructions&lt;br /&gt;
     [facet]&lt;br /&gt;
       [value] &lt;br /&gt;
         [recruit]&lt;br /&gt;
           type=scout&lt;br /&gt;
           number=4&lt;br /&gt;
           '''total=yes'''&lt;br /&gt;
           importance=1&lt;br /&gt;
         [/recruit]&lt;br /&gt;
         '''[recruit]'''&lt;br /&gt;
           '''importance=0'''&lt;br /&gt;
         '''[/recruit]'''&lt;br /&gt;
       [/value]&lt;br /&gt;
     [/facet]&lt;br /&gt;
   [/aspect]&lt;br /&gt;
 [/ai]&lt;br /&gt;
Recruit 6 grunts or level 2 units (whatever seems better to the AI) and nothing else.&lt;br /&gt;
 [ai]&lt;br /&gt;
   [aspect]&lt;br /&gt;
     id=recruitment_instructions&lt;br /&gt;
     [facet]&lt;br /&gt;
       [value] &lt;br /&gt;
         [recruit]&lt;br /&gt;
           '''type=Orcish Grunt, 2'''&lt;br /&gt;
           number=6&lt;br /&gt;
         [/recruit]&lt;br /&gt;
       [/value]&lt;br /&gt;
     [/facet]&lt;br /&gt;
   [/aspect]&lt;br /&gt;
 [/ai]&lt;br /&gt;
Recruit 5 scouts with 'leader1' and 5 grunts with 'leader2'. Try to recruit the grunts even if 'leader1' cannot recruit all of the scouts.&lt;br /&gt;
 [ai]&lt;br /&gt;
   [aspect]&lt;br /&gt;
     id=recruitment_instructions&lt;br /&gt;
     [facet]&lt;br /&gt;
       [value] &lt;br /&gt;
         [recruit]&lt;br /&gt;
           type=scout&lt;br /&gt;
           number=5&lt;br /&gt;
           '''importance=2'''&lt;br /&gt;
           '''leader_id=leader1'''&lt;br /&gt;
           '''blocker=no'''&lt;br /&gt;
         [/recruit]&lt;br /&gt;
         [recruit]&lt;br /&gt;
           type=Orcish Grunt&lt;br /&gt;
           number=5&lt;br /&gt;
           '''importance=1'''&lt;br /&gt;
           '''leader_id=leader2'''&lt;br /&gt;
         [/recruit]&lt;br /&gt;
       [/value]&lt;br /&gt;
     [/facet]&lt;br /&gt;
   [/aspect]&lt;br /&gt;
 [/ai]&lt;br /&gt;
Always recruit random units.&lt;br /&gt;
 [ai]&lt;br /&gt;
   [aspect]&lt;br /&gt;
     id=recruitment_instructions&lt;br /&gt;
     [facet]&lt;br /&gt;
       [value] &lt;br /&gt;
         [recruit]&lt;br /&gt;
           '''type='''&lt;br /&gt;
           '''pattern=yes'''&lt;br /&gt;
           importance=1&lt;br /&gt;
         [/recruit]&lt;br /&gt;
       [/value]&lt;br /&gt;
     [/facet]&lt;br /&gt;
   [/aspect]&lt;br /&gt;
 [/ai]&lt;br /&gt;
Do not recruit on turn 4.&lt;br /&gt;
 [ai]&lt;br /&gt;
   [aspect]&lt;br /&gt;
     id=recruitment_instructions&lt;br /&gt;
     [facet]&lt;br /&gt;
       '''turns=4'''&lt;br /&gt;
       [value] &lt;br /&gt;
         [recruit]&lt;br /&gt;
           importance=1&lt;br /&gt;
           '''number=0'''&lt;br /&gt;
         [/recruit]&lt;br /&gt;
       [/value]&lt;br /&gt;
     [/facet]&lt;br /&gt;
   [/aspect]&lt;br /&gt;
 [/ai]&lt;br /&gt;
Do not have more than 6 units on the map.&lt;br /&gt;
 [ai]&lt;br /&gt;
   [aspect]&lt;br /&gt;
     id=recruitment_instructions&lt;br /&gt;
     [facet]&lt;br /&gt;
       [value] &lt;br /&gt;
         [limit]&lt;br /&gt;
           type=    &amp;lt;span style=&amp;quot;color:#999999&amp;quot;&amp;gt;#empty type means all units&amp;lt;/span&amp;gt;&lt;br /&gt;
           max=6&lt;br /&gt;
         [/limit]&lt;br /&gt;
         [recruit]         &amp;lt;span style=&amp;quot;color:#999999&amp;quot;&amp;gt;#Do not forget to include the default&amp;lt;/span&amp;gt;&lt;br /&gt;
           importance=0    &amp;lt;span style=&amp;quot;color:#999999&amp;quot;&amp;gt;#[recruit]-tag. Otherwise the AI won't&amp;lt;/span&amp;gt;&lt;br /&gt;
         [/recruit]        &amp;lt;span style=&amp;quot;color:#999999&amp;quot;&amp;gt;#recruit anything.&amp;lt;/span&amp;gt;&lt;br /&gt;
       [/value]&lt;br /&gt;
     [/facet]&lt;br /&gt;
   [/aspect]&lt;br /&gt;
 [/ai]&lt;br /&gt;
&lt;br /&gt;
The following does not work because only one [facet] can be active.&lt;br /&gt;
 [ai]&lt;br /&gt;
   [aspect]&lt;br /&gt;
     id=recruitment_instructions&lt;br /&gt;
     [facet]&lt;br /&gt;
       '''turns=1-10'''&lt;br /&gt;
       [value] &lt;br /&gt;
         [recruit]&lt;br /&gt;
           type=scout&lt;br /&gt;
           number=5&lt;br /&gt;
           '''importance=1'''&lt;br /&gt;
         [/recruit]&lt;br /&gt;
       [/value]&lt;br /&gt;
     [/facet]&lt;br /&gt;
     [facet]&lt;br /&gt;
       '''turns=3'''&lt;br /&gt;
       [value] &lt;br /&gt;
         [recruit]&lt;br /&gt;
           type=Orcish Grunt&lt;br /&gt;
           number=3&lt;br /&gt;
           '''importance=2'''&lt;br /&gt;
         [/recruit]&lt;br /&gt;
       [/value]&lt;br /&gt;
     [/facet]&lt;br /&gt;
   [/aspect]&lt;br /&gt;
 [/ai]&lt;br /&gt;
Instead, one has to use &amp;lt;code&amp;gt;turns=1-2,4-10&amp;lt;/code&amp;gt; in the first facet.&lt;br /&gt;
&lt;br /&gt;
==Aspect ''recruitment_save_gold''==&lt;br /&gt;
&lt;br /&gt;
===How it works===&lt;br /&gt;
&lt;br /&gt;
For several reasons it can be a good idea not to spend all gold at once:&lt;br /&gt;
* To save upkeep&lt;br /&gt;
* To wait for the enemy to recruit first and thus to counter more easily&lt;br /&gt;
* To save gold for the next scenario when the enemy is almost defeated&lt;br /&gt;
It can also be a good idea (especially for the AI) to recruit in waves (instead of recruiting one unit or so each turn).  If this type of behavior is desired, there is the aspect ''recruitment_save_gold''.&lt;br /&gt;
&lt;br /&gt;
The Recruitment CA is always in one of the following states:&lt;br /&gt;
* NORMAL&lt;br /&gt;
* SAVE_GOLD&lt;br /&gt;
* SPEND_ALL_GOLD&lt;br /&gt;
* LEADER_IN_DANGER&lt;br /&gt;
Except for state 'LEADER_IN_DANGER', the states are persistent over turns.&lt;br /&gt;
&lt;br /&gt;
The AI keeps track of a ''unit_ratio''. This is &amp;lt;code&amp;gt;our_total_unit_costs / enemy_total_unit_costs&amp;lt;/code&amp;gt;, where the costs are the sum of the cost of all units on the map weighted by their HP.  The AI also attempts to estimate the total income over the next 5 turns.&lt;br /&gt;
&lt;br /&gt;
If the AI is in state NORMAL '''and''' the unit_ratio exceeds a predefined threshold (defined in ''begin'', see below) '''and''' the estimated income is positive, the AI switches to state SAVE_GOLD. Now the AI does not recruit units anymore until ''unit_ratio'' falls below another predefined threshold (defined in ''end''). Then the AI switches back to state NORMAL and recruits again.&lt;br /&gt;
&lt;br /&gt;
With this behavior the AI can save quite a lot of gold. If the gold then accumulates to more than another predefined value (''spend_all_gold''), it switches into state SPEND_ALL_GOLD and recruits a big army to start an offensive wave.&lt;br /&gt;
&lt;br /&gt;
The AI ignores all those gold saving strategies when it is in state LEADER_IN_DANGER. This happens when an enemy is close to the AI leader (within 5 hexes).&lt;br /&gt;
&lt;br /&gt;
'''Important note:''' While one might assume that the AI plays better when it tries to save some gold, tests show that this is generally not the case. They indicate that, for the current AI, it is always better for the AI to have as many units on the map as possible. This aspect is therefore deactivated by default.&lt;br /&gt;
&lt;br /&gt;
===The Aspect===&lt;br /&gt;
This aspect also requires the [[Wesnoth_AI_Framework#The_.5Bai.5D_Tag_.E2.80.94_Aspects|composite syntax]].&lt;br /&gt;
 [ai]&lt;br /&gt;
   [aspect]&lt;br /&gt;
     id=recruitment_save_gold&lt;br /&gt;
     [facet]&lt;br /&gt;
       [value]&lt;br /&gt;
         &amp;lt;span style=&amp;quot;color:#999999&amp;quot;&amp;gt;#(attributes)&amp;lt;/span&amp;gt;&lt;br /&gt;
       [/value]&lt;br /&gt;
     [/facet]&lt;br /&gt;
   [/aspect]&lt;br /&gt;
 [/ai]&lt;br /&gt;
Attributes inside '''[value]''':&lt;br /&gt;
* '''active'''=0: (int) From this turn on the aspect is active. The AI always spends all gold until then. &amp;lt;code&amp;gt;active=0&amp;lt;/code&amp;gt; can be used to deactivate gold saving.&lt;br /&gt;
* '''begin''': (double) See explanation above.&lt;br /&gt;
* '''end''': (double) See explanation above.&lt;br /&gt;
* '''spend_all_gold''': (int) See explanation above. If set to '-1', the AI never switches to state SPEND_ALL_GOLD.&lt;br /&gt;
* '''save_on_negative_income''': (boolean) If this is set to yes, the AI switches to state SAVE_GOLD even if the income is negative (estimated over 5 turns, village gain and unit loss estimation included).&lt;br /&gt;
&lt;br /&gt;
===Example===&lt;br /&gt;
 [ai]&lt;br /&gt;
   [aspect]&lt;br /&gt;
     id=recruitment_save_gold&lt;br /&gt;
     [facet]&lt;br /&gt;
       [value]&lt;br /&gt;
         active=2&lt;br /&gt;
         begin=1.5&lt;br /&gt;
         end=1.1&lt;br /&gt;
         spend_all_gold=-1&lt;br /&gt;
         save_on_negative_income=no&lt;br /&gt;
       [/value]&lt;br /&gt;
     [/facet]&lt;br /&gt;
   [/aspect]&lt;br /&gt;
 [/ai]&lt;br /&gt;
&lt;br /&gt;
A macro can be used to deactivate recruitment_save_gold:&lt;br /&gt;
&lt;br /&gt;
 {AI_ASPECT recruitment_save_gold {AI_DEACTIVATE_SAVE_GOLD} }&lt;br /&gt;
&lt;br /&gt;
==Other Recruitment Related Aspects==&lt;br /&gt;
&lt;br /&gt;
*'''recruitment_diversity'''=2.0: (double) When this value is high, the AI recruits more units which are currently rare on the map. When the value is 0.0, the AI only recruits the best unit. See [[#Implementation_details_for_interested_readers|above]] for implementation details.&lt;br /&gt;
*'''recruitment_more'''=&amp;quot;&amp;quot;: (string) This key takes a comma separated list containing unit types, usages or levels. This is meant to let a scenario editor make an easy hack for making the AI recruit more units of a specific type. (25 will be added to the unit type's score.) The same unit type can also be used several time.  For example, with &amp;lt;code&amp;gt;recruitment-more=&amp;quot;Orcish Grunt, Orcish Grunt&amp;quot;&amp;lt;/code&amp;gt; it is possible to add a total of 50 to the Grunt's score.&lt;br /&gt;
*'''recruitment_randomness'''=50: (int) A random value between 0 and ''recruitment_randomness'' is added to each score. Use a high value, such as '200', to increase randomness.&lt;br /&gt;
*'''recruitment_pattern'''=&amp;quot;&amp;quot;: (string) This key takes a comma separated list containing unit types, usages or levels. Common values for ''usage'' are 'scout', 'fighter', 'archer', 'healer' and 'mixed fighter'. This tells the AI with what probability it should recruit different types of units. The usage is listed in the unit type config files (see data/core/units/ for mainline units; see also [[UnitTypeWML]]).&lt;br /&gt;
**For example, &amp;lt;code&amp;gt;recruitment_pattern=fighter,fighter,2&amp;lt;/code&amp;gt; means that the AI recruits on average twice as many fighters as level 2 units. It does not mean that it recruits two fighters first, then a level 2 unit, then two fighters again, etc.&lt;br /&gt;
**Internally ''recruitment_pattern'' expands into a ''recruitment_instructions'' facet with &amp;lt;code&amp;gt;pattern=yes&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;importance=1&amp;lt;/code&amp;gt;. Make sure that there is no ''recruitment_instructions'' facet with &amp;lt;code&amp;gt;importance=1&amp;lt;/code&amp;gt; when using ''recruitment_pattern''.&lt;br /&gt;
*'''villages_per_scout'''=4: (int) A number 0 or higher which determines how many scouts the AI recruits. If set to '0', the AI does not recruit scouts to capture villages.&lt;br /&gt;
&lt;br /&gt;
==Making recruitment strong==&lt;br /&gt;
&lt;br /&gt;
The default values for the recruitment aspects are chosen to provide variety in the units the AI recruits.  Tests have shown that it plays slightly better (against other AIs, at least) when it mostly recruits the units that score highest in the evaluation explained above.  The best values found are:&lt;br /&gt;
* '''recruitment_diversity=0.8''': Let the AI recruit the best units only.&lt;br /&gt;
* '''recruitment_randomness=0''': Let the recruitment not be random.&lt;br /&gt;
* '''villages_per_scout=0''': The AI plays slightly better with fewer or no scouts.&lt;br /&gt;
* '''deactivate recruitment_save_gold''': The AI plays better when it spends all money.&lt;br /&gt;
&lt;br /&gt;
In Multiplayer games, the AI 'Strong AI (RCA)' can be chosen with the settings as described here.  {{DevFeature1.13|5}}  As this is only a very minor modification of the default AI, this AI has been changed to a [[Wesnoth_AI#AIs_Available_in_the_Multiplayer_Setup_Menu|Dev AI]] (available in debug mode only) and has been renamed to 'Default AI (RCA) with Alternate Recruiting'.&lt;br /&gt;
&lt;br /&gt;
==Some notes on multiple leaders==&lt;br /&gt;
&lt;br /&gt;
The new recruitment CA is able to recruit with multiple leaders — even with different recruitment lists for each leader.  However there are some drawbacks:&lt;br /&gt;
* In the current version, the leaders recruit almost the same amount of units by default. This can partly be configured with the ''recruitment_instructions'' aspect and its attribute ''leader_id''.&lt;br /&gt;
** Note however that, as mentioned above, ''leader_id'' in ''recruitment_instructions'' is only a recommendation. For example, a leader recruits more units when enemies are near.&lt;br /&gt;
* Multiple leaders with different recruitment lists in combination with a &amp;lt;code&amp;gt;recruitment_pattern&amp;lt;/code&amp;gt; may not result in the expected behavior. For the AI it is more important that the leaders recruit the same amount of units than fulfilling the ratios given in ''recruitment_pattern''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''See also:''' [[Wesnoth AI]]&lt;br /&gt;
[[Category:AI]]&lt;/div&gt;</summary>
		<author><name>Holius</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=AI_Arena&amp;diff=59037</id>
		<title>AI Arena</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=AI_Arena&amp;diff=59037"/>
		<updated>2017-11-30T15:12:29Z</updated>

		<summary type="html">&lt;p&gt;Holius: fix errors (title levels)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|'''Note'''&lt;br /&gt;
|-&lt;br /&gt;
|The AI Arena should still be usable, but it is currently not maintained. If you encounter any problems with the Arena itself or the content of this page, please let us know either on the forums or the developer IRC channel.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== AI Arena is an interactive AI testing framework ==&lt;br /&gt;
It is implemented as a test scenario &amp;lt;i&amp;gt;ai_arena_small&amp;lt;/i&amp;gt; (available from r34329 (31 Mar 09) )&lt;br /&gt;
&lt;br /&gt;
This documentation is accurate as of r34889 (14 Apr 09)&lt;br /&gt;
&lt;br /&gt;
To launch it, run Wesnoth with a -t parameter (must not come as last parameter). For example:&lt;br /&gt;
&lt;br /&gt;
 ./wesnoth-debug -t ai_arena_small -d&lt;br /&gt;
&lt;br /&gt;
The scenario is located in data/ai/scenarios/scenario-AI_Arena_small.cfg&lt;br /&gt;
&lt;br /&gt;
It is based on the Den of Onis.&lt;br /&gt;
&lt;br /&gt;
The map includes three sides:&lt;br /&gt;
&lt;br /&gt;
1: Human (AI developer)&lt;br /&gt;
&lt;br /&gt;
2: Challenger AI (Side which which is tested, 'north team')&lt;br /&gt;
&lt;br /&gt;
3: Champion AI (Side which commands the enemy of the AI being tested, 'south team')&lt;br /&gt;
&lt;br /&gt;
All leaders start off-map in pocketed locations.&lt;br /&gt;
&lt;br /&gt;
You can access an interactive menu by right-clicking a map tile.&lt;br /&gt;
&lt;br /&gt;
There are menu options which allows AI developer to pick the challenge (each challenge has a small description and a unique number), and to pick the AI that will try the challenge (AI developer can select from a list a .cfg location which contains the bare *contents* of the SIDE tag with [[SideWML]] and [[AiWML]] configuration - without the SIDE tag itself). The test will be loaded (units will appear inside the Arena) and selected AI will be hot-redeployed). &lt;br /&gt;
&lt;br /&gt;
Then, the AI developer can end his turn and watch the AI's actions.&lt;br /&gt;
&lt;br /&gt;
== Creating new challenges ==&lt;br /&gt;
Please feel free to add more 'AI challenges' and improve existing ones. Each challenge should be AI-independent.&lt;br /&gt;
&lt;br /&gt;
To create a challenge which will be committed into Wesnoth repository:&lt;br /&gt;
&lt;br /&gt;
# Look at the content ai/scenarios/ai_arena_small directory&lt;br /&gt;
# Assign a unique CODE number (4 digits) for your challenge. Pick a NAME (suitable as part of WML event name) for your challenge. Write a small DESCRIPTION for your challenge&lt;br /&gt;
# Create a new file in ai/scenarios/ai_arena_small directory.&lt;br /&gt;
 [event]&lt;br /&gt;
     name=preload&lt;br /&gt;
     [lua]&lt;br /&gt;
         code = &amp;lt;&amp;lt; register_test('CODE-NAME','DESCRIPTION'); &amp;gt;&amp;gt;&lt;br /&gt;
     [/lua]&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
     name=CODE-NAME&lt;br /&gt;
     first_time_only=no&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
Use the second event to create the situation. If you do not intend to commit that file, you may use any filename and event name you like, just make sure that this is legal WML event name and make sure that it matches in both events.&lt;br /&gt;
&lt;br /&gt;
Note: Add code to clean all your labels to cleanup function. (since there is (so far) no way to delete all labels on the map)&lt;br /&gt;
&lt;br /&gt;
== Creating new AI configurations == &lt;br /&gt;
&lt;br /&gt;
Example of AI configuration file:&lt;br /&gt;
 ai_algorithm =formula_ai&lt;br /&gt;
 [ai]&lt;br /&gt;
    eval_list=yes&lt;br /&gt;
    [register_candidate_move]&lt;br /&gt;
        name=poisoner&lt;br /&gt;
        type=attack&lt;br /&gt;
        evaluation=&amp;quot;{ai/formula/poisoner_eval.fai}&amp;quot;&lt;br /&gt;
        action=&amp;quot;{ai/formula/poisoner_attack.fai}&amp;quot;&lt;br /&gt;
    [/register_candidate_move]&lt;br /&gt;
 [/ai]&lt;br /&gt;
Then use it by typing a name in the interactive menu, or add a reference to it to the AI Arena scenario&lt;br /&gt;
&lt;br /&gt;
== Where to put new AI configurations ==&lt;br /&gt;
&lt;br /&gt;
If it should be available for selection as a multiplayer AI and AI Arena in both non-debug and debug modes, put it in &lt;br /&gt;
 data/ai/ais/&lt;br /&gt;
&lt;br /&gt;
If it should be available for selection as a multiplayer AI and AI Arena only in debug mode, put it in &lt;br /&gt;
 data/ai/dev/&lt;br /&gt;
&lt;br /&gt;
== Where to put all formulas which may be used by the AIs ==&lt;br /&gt;
&lt;br /&gt;
 data/ai/formula/&lt;br /&gt;
&lt;br /&gt;
[[Category:AI]]&lt;/div&gt;</summary>
		<author><name>Holius</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=LuaAI&amp;diff=59036</id>
		<title>LuaAI</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=LuaAI&amp;diff=59036"/>
		<updated>2017-11-30T14:59:46Z</updated>

		<summary type="html">&lt;p&gt;Holius: fix errors (title levels)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wesnoth provides the functionality to both access and define all types of [[Wesnoth_AI_Framework#Types_of_AI_Components|AI components]] using [[LuaWML|Lua]].  Instructions for using these components to customize the default AI and to create custom AIs are explained on other pages.  See [[Wesnoth AI]] for a summary of the available documentation.  This page is a reference guide to the Lua AI functions, variables and component syntax.&lt;br /&gt;
&lt;br /&gt;
== Lua AI Functions ==&lt;br /&gt;
&lt;br /&gt;
The code of [[Creating_Custom_AIs#Creating_Custom_Candidate_Actions|custom Lua candidate actions]] (CAs) has access to the ''ai'' table.  This is a Lua table containing functions for getting information about the game state and for executing AI moves.  Together with the other [[LuaWML|Wesnoth Lua functions]] they can be used in the CA [[Creating_Custom_AIs#Evaluation_Function|evaluation]] and [[Creating_Custom_AIs#Execution_Function|execution]] functions to code the desired AI behavior.&lt;br /&gt;
&lt;br /&gt;
=== ''ai'' Table Functions Returning Game State Information ===&lt;br /&gt;
&lt;br /&gt;
The ''ai'' table contains a large number of functions returning game state information.  Some of those are simple scalar values which are self-explanatory, while others can be tables with many elements and complex structure.  We will not show the structure of all these tables here.  If you need to know the exact structure of such a table, use the method described below for [[#Debug_access_to_the_AI_tree|accessing the AI tree]].&lt;br /&gt;
&lt;br /&gt;
==== Retrieving Aspect Values ====&lt;br /&gt;
&lt;br /&gt;
The contents of many of the [[AiWML#List_of_AI_Aspects|AI aspects]] can be read using ''ai'' table commands of the form&lt;br /&gt;
* '''ai.get_&amp;lt;aspect_name&amp;gt;()''', for example&lt;br /&gt;
** '''ai.get_aggression()'''&lt;br /&gt;
** '''ai.get_caution()'''&lt;br /&gt;
Note that this returns the result of the aspect evaluation given the game state at the time of the last [[Wesnoth_AI_Framework#Some_more_on_the_invalidation_keys|invalidation of the aspect]], not its definition.  For example, '''ai.get_avoid()''' returns the list of avoided hexes, rather than the [[StandardLocationFilter|Standard Location Filter]] used to find them, and [[#Dynamic_Lua_Aspects|dynamic Lua aspects]] return the function evaluation result, not the function itself.&lt;br /&gt;
&lt;br /&gt;
The full list of functions returning aspect values is&lt;br /&gt;
 Functions returning scalar values (numbers, strings or booleans):&lt;br /&gt;
 ai.get_aggression()&lt;br /&gt;
 ai.get_attack_depth()&lt;br /&gt;
 ai.get_caution()&lt;br /&gt;
 ai.get_grouping()&lt;br /&gt;
 ai.get_leader_aggression()&lt;br /&gt;
 ai.get_leader_ignores_keep()&lt;br /&gt;
 ai.get_leader_value()&lt;br /&gt;
 ai.get_number_of_possible_recruits_to_force_recruit()&lt;br /&gt;
 ai.get_passive_leader()&lt;br /&gt;
 ai.get_passive_leader_shares_keep()&lt;br /&gt;
 ai.get_recruitment_ignore_bad_combat()&lt;br /&gt;
 ai.get_recruitment_ignore_bad_movement()&lt;br /&gt;
 ai.get_scout_village_targeting()&lt;br /&gt;
 ai.get_simple_targeting()&lt;br /&gt;
 ai.get_support_villages()&lt;br /&gt;
 ai.get_village_value()&lt;br /&gt;
 ai.get_villages_per_scout()&lt;br /&gt;
 &lt;br /&gt;
 Functions returning tables:&lt;br /&gt;
 ai.get_attacks()&lt;br /&gt;
 ai.get_avoid()&lt;br /&gt;
 ai.get_leader_goal()&lt;br /&gt;
 ai.get_recruitment_pattern()&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|5}}&lt;br /&gt;
&lt;br /&gt;
These functions are now deprecated. The new standard way of accessing aspect values is through the &amp;lt;code&amp;gt;ai.aspects&amp;lt;/code&amp;gt; table, for example &amp;lt;code&amp;gt;ai.aspects.aggression&amp;lt;/code&amp;gt;. All aspects can be accessed this way, including some that don't have function forms, such as the advancements aspect. {{DevFeature1.13|6}} The corresponding get_aspect_name functions are now deprecated, with the exception of &amp;lt;code&amp;gt;ai.get_attacks()&amp;lt;/code&amp;gt; which returns an analysis of all possible attacks; this differs from &amp;lt;code&amp;gt;ai.aspects.attacks&amp;lt;/code&amp;gt; which only returns the allowed units for use in attacks (in &amp;quot;own&amp;quot; and &amp;quot;enemy&amp;quot; subtables).&lt;br /&gt;
&lt;br /&gt;
==== Functions Returning Other Game State Information ====&lt;br /&gt;
&lt;br /&gt;
* '''ai.get_targets()''': Get the AI targets.  See [[#Lua_Goals_and_Targets|below]] for details.&lt;br /&gt;
* '''ai.side''': side number of the AI&lt;br /&gt;
* '''ai.suitable_keep(''unit'')''': This returns the location of the closest keep to the unit passed as argument.  Note that this returns the ''x'' and ''y'' coordinates of the keep as two separate arguments, so it needs to be called as &amp;lt;syntaxhighlight lang='lua' inline&amp;gt;local x, y = ai.suitable_keep(unit)&amp;lt;/syntaxhighlight&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Finally, the following functions related to move maps (tables that relate the current positions of units and the hexes they can move to) also exist:&lt;br /&gt;
* '''ai.get_new_dst_src()'''&lt;br /&gt;
* '''ai.get_new_enemy_dst_src()'''&lt;br /&gt;
* '''ai.get_new_enemy_src_dst()'''&lt;br /&gt;
* '''ai.get_new_src_dst()'''&lt;br /&gt;
* '''ai.is_dst_src_valid()'''&lt;br /&gt;
* '''ai.is_enemy_dst_src_valid()'''&lt;br /&gt;
* '''ai.is_enemy_src_dst_valid()'''&lt;br /&gt;
* '''ai.is_src_dst_valid()'''&lt;br /&gt;
* '''ai.recalculate_enemy_move_maps()'''&lt;br /&gt;
* '''ai.recalculate_move_maps()'''&lt;br /&gt;
If you need to know what they do and the exact structure of their return values, use the method described below for [[#Debug_access_to_the_AI_tree|accessing the AI tree]].&lt;br /&gt;
&lt;br /&gt;
The file ''ai/lua/stdlib.lua'' replaces the move-map functions with the following simplified set:&lt;br /&gt;
* '''ai.get_dst_src()'''&lt;br /&gt;
* '''ai.get_src_dst()'''&lt;br /&gt;
* '''ai.get_enemy_dst_src()'''&lt;br /&gt;
* '''ai.get_enemy_src_dst()'''&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The file stdlib.lua is loaded by default, but if a custom Lua [engine] tag is defined, it must load the file manually with the following code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang='lua'&amp;gt;&lt;br /&gt;
local ai_stdlib = wesnoth.require('ai/lua/stdlib.lua')&lt;br /&gt;
ai_stdlib.init(ai)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ''ai'' Table Functions for Executing AI Moves ===&lt;br /&gt;
&lt;br /&gt;
For all functions below, units (''unit'', ''attacker'', ''defender'') can be passed either as a unit object in a single variable, or as two parameters specifying the unit's ''x'' and ''y'' coordinates.  For functions taking more than one unit as arguments, it can also be a mix of the two.&lt;br /&gt;
&lt;br /&gt;
* '''ai.attack(''attacker, defender, weapon, aggression'')''': Execute attack by ''attacker'' against ''defender''. If ''weapon'' is provided, it is the number of the weapon to be used (count starts at 1, not 0, as always in Lua), otherwise choice of the weapon is left to the AI engine.  If ''aggression'' is provided, it is used to influence the choice of the best weapon.  Obviously, this only makes sense if this choice is left to the engine, that is, if ''weapon'' is set to either 'nil' or '-1'.&lt;br /&gt;
* '''ai.move(''unit, to_x, to_y'')''': Execute partial move of ''unit'' to hex ''(to_x'', ''to_y)''.  ''Partial'' move means that the unit keeps whatever movement points it has left after the move.&lt;br /&gt;
* '''ai.move_full(''unit, to_x, to_y'')''': Execute full move of ''unit'' to hex ''(to_x'', ''to_y)''.  ''Full'' move means that the unit's movement points are set to zero at the end of the move.&lt;br /&gt;
* '''ai.recall(''unit_id, x, y'')''': Recall the unit with id ''unit_id''.  An optional recruit location can be given in ''x'' and ''y''.  If the location is omitted, a suitable hex is automatically chosen by the AI engine.&lt;br /&gt;
* '''ai.recruit(''unit_type, x, y'')''': Recruit a unit of type ''unit_type''. An optional recruit location can be given in ''x'' and ''y''.  If the location is omitted, a suitable hex is automatically chosen by the AI engine.&lt;br /&gt;
* '''ai.stopunit_attacks(''unit'')''': Remove remaining attacks from ''unit''.  This is equivalent to setting &amp;lt;code&amp;gt;attacks_left=0&amp;lt;/code&amp;gt;.&lt;br /&gt;
* '''ai.stopunit_moves(''unit'')''': Remove remaining movement points from ''unit''.  This is equivalent to setting &amp;lt;code&amp;gt;moves=0&amp;lt;/code&amp;gt;.&lt;br /&gt;
* '''ai.stopunit_all(''unit'')''': Remove both remaining attacks and remaining movement points from ''unit''.&lt;br /&gt;
* '''ai.synced_command(''command, x1, y1'')''': Execute the specified Lua command in a replay and MP safe way.  ''command'' is a string containing the Lua code and ''(x1,y1)'' is an optional map location that is the only allowed external variable used in the code string (specified as Lua variables ''x1'' and ''y1'').&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|5}} The above functions change the gamestate and thus are not always available. To be more specific, they are only available if '''ai.read_only''' is false. If it is true, the functions do not exist. This is the case everywhere except stage and candidate evaluation functions.&lt;br /&gt;
The following functions are available for checking whether a planned AI move is possible.  This is useful in order to prevent an aborted execution of a move, which might result in some or all of the remaining moves to be aborted by the AI due to a [[Creating_Custom_AIs#Execution_Function|blacklisted candidate action]].&lt;br /&gt;
&lt;br /&gt;
* '''ai.check_attack()&lt;br /&gt;
* '''ai.check_move()&lt;br /&gt;
* '''ai.check_recall()&lt;br /&gt;
* '''ai.check_recruit()&lt;br /&gt;
* '''ai.check_stopunit()&lt;br /&gt;
* '''ai.check_synced_command()&lt;br /&gt;
&lt;br /&gt;
These check functions take the same arguments as the respective AI action functions.  They return a Lua table which looks something like the following for a successful check&lt;br /&gt;
&amp;lt;syntaxhighlight lang='lua'&amp;gt;{&lt;br /&gt;
    gamestate_changed = false,&lt;br /&gt;
    ok = true,&lt;br /&gt;
    status = 0,&lt;br /&gt;
    result = 'action_result::AI_ACTION_SUCCESS'&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and like this for an unsuccessful check&lt;br /&gt;
&amp;lt;syntaxhighlight lang='lua'&amp;gt;{&lt;br /&gt;
    gamestate_changed = false,&lt;br /&gt;
    ok = false,&lt;br /&gt;
    status = 2008,&lt;br /&gt;
    result = 'move_result::E_NO_ROUTE'&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
* ''status'' is the error code returned by the AI engine in case of an unsuccessful code.  The error string for a given error code can be found in file [https://github.com/wesnoth/wesnoth/blob/master/src/ai/actions.hpp src/ai/actions.hpp]. {{DevFeature1.13|5}} It is now also available as the ''result'' element of the table.&lt;br /&gt;
* The move execution functions return the same table, with the only difference being that ''gamestate_changed'' is 'true' in case the execution resulted in a change of the game state (even if the move was only partially successful).&lt;br /&gt;
&lt;br /&gt;
== Lua AI Variables — Persistence ==&lt;br /&gt;
&lt;br /&gt;
When [[Creating Custom AIs]] in Lua, it is sometimes necessary to transfer information between the evaluation and execution functions of the same candidate action (CA) or between CAs.  It might also be necessary to have this information persist from turn to turn and across save/load cycles.  This could, in principle, be done using WML variables, but depending on the type and amount of information, that could be awkward and/or inconvenient to do in practice.&lt;br /&gt;
&lt;br /&gt;
The Wesnoth AI therefore includes a field called ''data'' which is automatically added to the internal AI context.  The evaluation and execution functions of [[Creating_Custom_AIs#Setting_Up_a_Custom_AI|Lua candidate actions]] have access to this field if the third (optional) variable is passed to them.  Assuming this variable is called ''self'', the field is accessed as ''self.data''.&lt;br /&gt;
&lt;br /&gt;
When saving a game, the save routine finds this field, converts it to a config and stores its content in readable format in the save file.  When the scenario gets loaded back, the engine code injects the data back into the AI context.  Note that, in order for this to work, all content of ''data'' needs to be in [[LuaWML#Encoding_WML_objects_into_Lua_tables|WML table format]].  Other format content can also be used during an AI turn, for example to pass it between the evaluation and execution functions of the same CA, but it is lost when saving the game.&lt;br /&gt;
&lt;br /&gt;
== Dynamic Lua Aspects ==&lt;br /&gt;
&lt;br /&gt;
It is possible to define aspects using Lua.  These can be either static or dynamic, that is, their value can change depending on the game state. We demonstrate this here with a few examples.&lt;br /&gt;
&lt;br /&gt;
First, as simple example of defining the ''aggression'' aspect statically in Lua:&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[aspect]&lt;br /&gt;
    id=&amp;quot;aggression&amp;quot;&lt;br /&gt;
    engine=&amp;quot;lua&amp;quot;&lt;br /&gt;
    value=&amp;quot;0.765&amp;quot;&lt;br /&gt;
[/aspect]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
There is, of course, no advantage of this over simply [[AiWML|defining the aspect in WML]], we simply show it for completeness and for the syntax.  An example of defining aggression dynamically so that it increases slowly from turn to turn is&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[aspect]&lt;br /&gt;
    id=aggression&lt;br /&gt;
    engine=lua&lt;br /&gt;
	     &lt;br /&gt;
    code=&amp;lt;&amp;lt;&lt;br /&gt;
        local value = wesnoth.current.turn / 10.&lt;br /&gt;
        return value&lt;br /&gt;
    &amp;gt;&amp;gt;      &lt;br /&gt;
[/aspect]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Note the difference between the ''value'' and ''code'' attributes in the two examples.&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|5}} A Lua aspect may also contain an [args] subtag, which is passed to the aspect evaluation function in the same way as for candidate actions.&lt;br /&gt;
&lt;br /&gt;
==== The ''advancements'' Aspect ====&lt;br /&gt;
&lt;br /&gt;
A slightly more elaborate example, using the ''advancements'' aspect, is given below.  This aspect is different from others in that it can be used with a function ''advance(x, y)'', where ''(x, y)'' is the current location of the unit about to advance. You can then use ''wesnoth.get_unit(x, y)'' to retrieve the unit object itself.  For example, the following code advances the unit with id 'Bob' to a swordsman (assuming here that this unit is a spearman), while all other spearmen are advanced to javelineers.&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[ai]&lt;br /&gt;
    [aspect]&lt;br /&gt;
        id=advancements&lt;br /&gt;
        engine=lua&lt;br /&gt;
&lt;br /&gt;
        code=&amp;lt;&amp;lt;&lt;br /&gt;
            function advance(x, y)&lt;br /&gt;
                local unit = wesnoth.get_unit(x, y)&lt;br /&gt;
                if (unit.id == 'Bob') then&lt;br /&gt;
                    return 'Swordsman'&lt;br /&gt;
                else&lt;br /&gt;
                    return 'Javelineer'&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
            return advance&lt;br /&gt;
        &amp;gt;&amp;gt;&lt;br /&gt;
    [/aspect]&lt;br /&gt;
[/ai]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Note that this aspect only affects AI units while they are attacking. When a defending unit advances, it is still decided randomly. That is because Wesnoth's design does not allow the AI to make out of turn decisions.&lt;br /&gt;
&lt;br /&gt;
==== The ''attacks'' Aspect ====&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|5}}&lt;br /&gt;
&lt;br /&gt;
The attacks aspect may also be defined using the Lua engine; this is a little more complicated than most aspects, though. The aspect must return a table containing two keys, '''own''' and '''enemy'''. The value of each of these keys can be either a table defining a valid WML unit filter or a function which, when called with a unit proxy as its argument, returns true if the unit may be attacked and false otherwise.&lt;br /&gt;
&lt;br /&gt;
== Lua Goals and Targets ==&lt;br /&gt;
&lt;br /&gt;
It is also possible to define AI [[RCA_AI#Use_of_Goals_and_Targets_in_the_RCA_AI|goals and targets]] in Lua.  This is, however, somewhat inconvenient and we generally recommend using the [[AiWML#The_.5Bgoal.5D_Tag|[goal] tag]] with WML [[StandardUnitFilter|Standard Unit Filter]]s (SUFs) or [[StandardLocationFilter|Standard Location Filter]]s (SLFs) instead.  That is much more versatile and it makes no difference to the AI behavior whether the goals are defined using WML or Lua.&lt;br /&gt;
&lt;br /&gt;
The only time that defining goals in Lua might be advantageous is if one wants to use goals with dynamic values, such as in this example, where one goal has a constant value, while the other's value increases from turn to turn; or if one wants to define other types of targets that the other goals do not support (not demonstrated here).&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[goal]&lt;br /&gt;
    name=lua_goal&lt;br /&gt;
    engine=lua&lt;br /&gt;
    code = &amp;lt;&amp;lt;&lt;br /&gt;
        local turn = wesnoth.current.turn&lt;br /&gt;
        local targets = {}&lt;br /&gt;
        targets[1] = { value = 2, type = 2, loc = { x = 5, y = 6 } }&lt;br /&gt;
        targets[2] = { value = turn * 2 , type = 2, loc = { x = 4, y = 9 } }&lt;br /&gt;
        return targets&lt;br /&gt;
    &amp;gt;&amp;gt;&lt;br /&gt;
[/goal]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
As you can see, the return value must be an array containing the targets. Each target must contain three fields:&lt;br /&gt;
* '''value''': The value of the target, equivalent to that defined for WML goals&lt;br /&gt;
* '''loc''': A table with attributes ''x'' and ''y'' defining the target's location.  This is one of the disadvantages with respect to the WML syntax.  Each goal needs to be defined individually by its coordinates.  The use of SUFs and SLFs is not possible.&lt;br /&gt;
* '''type''': A number defining the type of the target.  File [https://github.com/wesnoth/wesnoth/blob/master/src/ai/default/contexts.hpp src/ai/default/contexts.hpp] defines the available types as&lt;br /&gt;
&amp;lt;syntaxhighlight lang='cpp'&amp;gt;&lt;br /&gt;
enum TYPE { VILLAGE, LEADER, EXPLICIT, THREAT, BATTLE_AID, MASS, SUPPORT };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
User-defined targets should usually be given &amp;lt;code&amp;gt;type = 2&amp;lt;/code&amp;gt; for ''target'' and ''target_location'' type targets, and &amp;lt;code&amp;gt;type = 3&amp;lt;/code&amp;gt; for ''protect_*'' type targets.  This corresponds to ''EXPLICIT'' and ''THREAT'' targets (the third and fourth in the enum list, with counting starting at 0).&lt;br /&gt;
{{DevFeature1.13|5}} Target types can now be specified as strings instead of integers. The possible values are &amp;lt;syntaxhighlight lang='lua' inline&amp;gt;'village', 'leader', 'explicit', 'threat', 'battle aid', 'mass', 'support'&amp;lt;/syntaxhighlight&amp;gt;. (Integer types still work, for now.)&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
* This code is parsed by the Lua engine and the targets are available to any engine.&lt;br /&gt;
* Targets can be read in Lua using '''ai.get_targets()'''&lt;br /&gt;
** This produces a Lua array like the one above, with one element for each hex that was found as a target (even if SUFs or SLFs were used in WML).&lt;br /&gt;
** {{DevFeature1.13|5}} The array now contains string target types, not integer target types. Thus, any previous use of get_targets() which checks the type must be updated.&lt;br /&gt;
** The table also includes all the [[RCA_AI#RCA_AI_Aspect_and_Goal_Configuration|automatically generated targets]].&lt;br /&gt;
* {{DevFeature1.13|5}} A Lua goal may also include an [args] subtag, which is passed to the goal evaluation function in the same way as for candidate actions.&lt;br /&gt;
&lt;br /&gt;
== Lua Candidate Actions ==&lt;br /&gt;
&lt;br /&gt;
Lua candidate actions are the recommended method for creating custom AIs.  They are described on a [[Creating_Custom_AIs#Setting_Up_a_Custom_AI|separate page]].&lt;br /&gt;
&lt;br /&gt;
== Lua AI — Legacy Methods ==&lt;br /&gt;
&lt;br /&gt;
The recommended method of using custom Lua AI functionality is described at [[Creating Custom AIs]].  A variety of alternative older methods also still exist.  There should be few, if any, situations in which using these methods is advantageous, but for completeness they are described on a [[Lua_AI_Legacy_Methods_Howto|separate page]].&lt;br /&gt;
&lt;br /&gt;
The methods include:&lt;br /&gt;
&lt;br /&gt;
* '''Lua stage''': There should not be anything that can be done with the Lua stage that cannot just as easily be done with the ''main_loop'' stage.&lt;br /&gt;
* '''Lua engine''': With the new type of Lua candidate actions, it is not necessary any more to define a Lua engine.  This is only needed for the old-style CAs.&lt;br /&gt;
* The '''old syntax''' for defining '''Lua candidate actions''':  There is no advantage in using the old syntax over the new one. Since the evaluation and execution code was given as separate `evaluation=` and `execution=` keys, there is no chance of shared state between the two.&lt;br /&gt;
* '''Preload event''': It is not necessary to set up a preload event any more (the one possible exception might be in order to set up a debug testing mechanism).&lt;br /&gt;
* '''Behavior (sticky) candidate actions''': These are Lua CAs which attach directly to specific units.  They could, in principle, still be useful.  However, using the new syntax for Lua CAs with a condition to filter for specific units is usually done just as easily.  Several of the [[Micro AIs]] demonstrate how to do so.&lt;br /&gt;
&lt;br /&gt;
== Debug access to the AI tree ==&lt;br /&gt;
&lt;br /&gt;
It is now possible to access candidate actions (and some other AI components)  and have them updated automatically without requiring reloading. Only external candidate actions work in this way though. Candidate actions defined in the engine inside the config file of the scenario will not be updated if their code is directly in the [engine] tag, and they will only be updated on reloading if they are set up by including a file. &lt;br /&gt;
&lt;br /&gt;
The purpose of this is to aid with debugging. Now the developer does not have to reload the game to test the changes done in the candidate action code.  &lt;br /&gt;
&lt;br /&gt;
Access to the AI tree is done with function&lt;br /&gt;
 wesnoth.debug_ai(side)&lt;br /&gt;
The function only works in debug mode '''and''' if Wesnoth is launched with the &amp;lt;code&amp;gt;--debug-lua&amp;lt;/code&amp;gt; launch argument.  It returns a table containing the component tree of the active AI for a side, the engine functions and to the [[#Lua_AI_Functions|''ai'' table]] of the Lua AI.  It also allows the user to execute stages and to evaluate and/or execute candidate actions.&lt;br /&gt;
&lt;br /&gt;
Structure of the table (example showing only some of the output):&lt;br /&gt;
 {&lt;br /&gt;
     stage_hello = function: 0x6dc24c0,&lt;br /&gt;
     ai = #the ai table,&lt;br /&gt;
     data = {&lt;br /&gt;
     },&lt;br /&gt;
     do_moves = function: 0x6dc2590,&lt;br /&gt;
     candidate_action_evaluation_hello = function: 0x6dc2560,&lt;br /&gt;
     candidate_action_evaluation_hello2 = function: 0x6dc2640,&lt;br /&gt;
     components = {&lt;br /&gt;
         id = &amp;quot;&amp;quot;,&lt;br /&gt;
         stage = {&lt;br /&gt;
             another_stage = {&lt;br /&gt;
                 name = &amp;quot;another_stage&amp;quot;,&lt;br /&gt;
                 id = &amp;quot;&amp;quot;,&lt;br /&gt;
                 exec = function: 0x17cd3bb,&lt;br /&gt;
                 engine = &amp;quot;lua&amp;quot;,&lt;br /&gt;
                 stg_ptr = &amp;quot;userdata: 0x7c5a8d0&amp;quot;&lt;br /&gt;
             },&lt;br /&gt;
             testing_ai_default::candidate_action_evaluation_loop = {&lt;br /&gt;
                 name = &amp;quot;testing_ai_default::candidate_action_evaluation_loop&amp;quot;,&lt;br /&gt;
                 candidate_action = {&lt;br /&gt;
                     external = {&lt;br /&gt;
                         name = &amp;quot;external&amp;quot;,&lt;br /&gt;
                         id = &amp;quot;&amp;quot;,&lt;br /&gt;
                         exec = function: 0x17cd2f3,&lt;br /&gt;
                         engine = &amp;quot;lua&amp;quot;,&lt;br /&gt;
                         ca_ptr = &amp;quot;userdata: 0x6fb3600&amp;quot;&lt;br /&gt;
                     },&lt;br /&gt;
                     second = {&lt;br /&gt;
                         name = &amp;quot;second&amp;quot;,&lt;br /&gt;
                         id = &amp;quot;&amp;quot;,&lt;br /&gt;
                         exec = function: 0x17cd2f3,&lt;br /&gt;
                         engine = &amp;quot;lua&amp;quot;,&lt;br /&gt;
                         ca_ptr = &amp;quot;userdata: 0x6fb2f50&amp;quot;&lt;br /&gt;
                     }&lt;br /&gt;
                 },&lt;br /&gt;
                 id = &amp;quot;ca_loop&amp;quot;,&lt;br /&gt;
                 exec = function: 0x17cd3bb,&lt;br /&gt;
                 engine = &amp;quot;&amp;quot;,&lt;br /&gt;
                 stg_ptr = &amp;quot;userdata: 0x6fb2728&amp;quot;&lt;br /&gt;
             }&lt;br /&gt;
         },&lt;br /&gt;
         engine = &amp;quot;&amp;quot;,&lt;br /&gt;
         name = &amp;quot;&amp;quot;&lt;br /&gt;
     },&lt;br /&gt;
     candidate_action_execution_hello2 = function: 0x6dc2670,&lt;br /&gt;
     candidate_action_execution_hello = function: 0x6dc2530&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
The fields described as &amp;quot; name = function: 0xXXXXXXXX&amp;quot; are functions and can be called to using the usual function call syntax of Lua.&lt;br /&gt;
&lt;br /&gt;
Some examples:&lt;br /&gt;
&amp;lt;syntaxhighlight lang='lua'&amp;gt;&lt;br /&gt;
wesnoth.debug_ai(2).ai -- returns the ai table containing of the Lua AI context&lt;br /&gt;
&lt;br /&gt;
wesnoth.debug_ai(2).stage[another_stage].exec() -- executes the stage&lt;br /&gt;
&lt;br /&gt;
wesnoth.debug_ai(2).ai.get_aggression() -- returns the current value of the aggression aspect of the AI&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Therefore, we have up-to-date access to the whole AI, including the [[#Lua_AI_Variables_.E2.80.94_Persistence|''data'' table]].&lt;br /&gt;
&lt;br /&gt;
'''Notes:'''&lt;br /&gt;
* Treat the structure above as an example only.  The real content and structure may vary. This should not be a problem for AI applications though, as this function is only used for debugging and will not work in non-debug mode.  It is really meant for testing only.&lt;br /&gt;
* ''debug_utils'' from the [http://forum.wesnoth.org/viewtopic.php?f=58&amp;amp;t=28320&amp;amp;start=45 Wesnoth Lua Pack] can be used to display the content of essentially any Wesnoth Lua data structure, including the ''debug_ai'' tree.  You should always use some sort of vizualization like that (another, more basic option is to simply go through and print the keys of the returned table using the Lua ''pairs()'' function) when work with ''wesnoth.debug_ai''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''See also:''' [[Wesnoth AI]]&lt;br /&gt;
[[Category:AI]]&lt;br /&gt;
[[Category: Lua Reference|*]]&lt;/div&gt;</summary>
		<author><name>Holius</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Guide_to_UMC_Content&amp;diff=59029</id>
		<title>Guide to UMC Content</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Guide_to_UMC_Content&amp;diff=59029"/>
		<updated>2017-11-23T15:35:01Z</updated>

		<summary type="html">&lt;p&gt;Holius: page structure + link to addon server&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a guide to the current (1.12.x) user-made content for players. It provides unfamiliar players with detailed information about campaigns (including story, completion, difficulty and playing style) as well as detailed information about eras. Feel free to edit this guide, it is a wiki.&lt;br /&gt;
&lt;br /&gt;
== Instructions ==&lt;br /&gt;
When adding a campaign to the list, please place it in its alphabetically sorted location, ignoring any initial article (&amp;quot;A&amp;quot;, &amp;quot;An&amp;quot;, or &amp;quot;The&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Blueprint for Campaigns ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Maintainer:&amp;lt;/b&amp;gt; if not maintained by the author anymore.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Status:&amp;lt;/b&amp;gt;&lt;br /&gt;
** &amp;lt;b&amp;gt;Broken&amp;lt;/b&amp;gt; = Does not work at all&lt;br /&gt;
** &amp;lt;b&amp;gt;Incomplete&amp;lt;/b&amp;gt; = Partially written, no progress&lt;br /&gt;
** &amp;lt;b&amp;gt;WIP&amp;lt;/b&amp;gt; = Partially written, some progress&lt;br /&gt;
** &amp;lt;b&amp;gt;Complete&amp;lt;/b&amp;gt; = Completely written, but buggy as well as potential balance issues.&lt;br /&gt;
** &amp;lt;b&amp;gt;Finished&amp;lt;/b&amp;gt; = Completely written, minimal to no bugs, slight balance issues possible. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Length:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Version:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Requirements:&amp;lt;/b&amp;gt; (only if needed)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Difficulty:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please note: Often campaigns introducing new mechanics are listed as expert level on the add-on server, here difficulty means the raw difficulty after the mechanics are understood.&lt;br /&gt;
&lt;br /&gt;
** &amp;lt;b&amp;gt;Unbalanced&amp;lt;/b&amp;gt; = If you can't beat the hard mode, it isn't necessarily unbalanced, but if the difficulty changes erratically from one scenario to the next and only people using the debug mode have seen the final, then it is.&lt;br /&gt;
** &amp;lt;b&amp;gt;Easy&amp;lt;/b&amp;gt;&lt;br /&gt;
** &amp;lt;b&amp;gt;Normal&amp;lt;/b&amp;gt;&lt;br /&gt;
** &amp;lt;b&amp;gt;Hard&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Style:&amp;lt;/b&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Please note: Many campaigns will feature more than one style. Please list the most significant ones.&lt;br /&gt;
&lt;br /&gt;
** &amp;lt;b&amp;gt;Skirmish&amp;lt;/b&amp;gt; = small to medium sized armies, your standard Wesnoth gameplay&lt;br /&gt;
** &amp;lt;b&amp;gt;Dungeon&amp;lt;/b&amp;gt; = long and narrow tunnels (not every underground scenario is a dungeon, a dungeon isn't necessarily underground)&lt;br /&gt;
** &amp;lt;b&amp;gt;RPG&amp;lt;/b&amp;gt; = role playing game elements such as talking with non-player-characters, item collection, dependency on a party of very few adventurers without or limited recruits&lt;br /&gt;
** &amp;lt;b&amp;gt;Survival&amp;lt;/b&amp;gt; = being exposed to changing, spawning enemies while remaining on the same map&lt;br /&gt;
** &amp;lt;b&amp;gt;Large Battle&amp;lt;/b&amp;gt; = large number of units on the battlefield, sizely maps&lt;br /&gt;
** &amp;lt;b&amp;gt;Simulation&amp;lt;/b&amp;gt; = campaigns feat. terrain modification, alternative resources&lt;br /&gt;
** &amp;lt;b&amp;gt;Boss battle&amp;lt;/b&amp;gt; = the challenge is to defeat a single powerful enemy unit&lt;br /&gt;
** &amp;lt;b&amp;gt;Minigames&amp;lt;/b&amp;gt; = there are puzzles and minigames in the campaign that significantly differ from standard Wesnoth gameplay&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Faction/Era:&amp;lt;/b&amp;gt; Era for the whole campaign and more specifically the faction or unit composition you field.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Custom units:&amp;lt;/b&amp;gt; Link to the unit tree for cases that don't feel sufficiently described by Faction / Era entry.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Forum:&amp;lt;/b&amp;gt; Links to the feedback and development threads at forums.wesnoth.org&lt;br /&gt;
&lt;br /&gt;
=== Blueprint for Eras ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Author:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Maintainer:&amp;lt;/b&amp;gt; if not maintained by the author anymore.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Status:&amp;lt;/b&amp;gt;&lt;br /&gt;
** &amp;lt;b&amp;gt;Broken&amp;lt;/b&amp;gt; = Does not work at all&lt;br /&gt;
** &amp;lt;b&amp;gt;Incomplete&amp;lt;/b&amp;gt; = Partially written, no progress&lt;br /&gt;
** &amp;lt;b&amp;gt;WIP&amp;lt;/b&amp;gt; = Partially written, progress&lt;br /&gt;
** &amp;lt;b&amp;gt;Complete&amp;lt;/b&amp;gt; = Completely written, but buggy as well as potential balance issues.&lt;br /&gt;
** &amp;lt;b&amp;gt;Finished&amp;lt;/b&amp;gt; = Completely written, minimal to no bugs, slight balance issues possible. &lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Faction Descriptions:&amp;lt;/b&amp;gt; Describe your individual factions here.&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Version:&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Requirements:&amp;lt;/b&amp;gt; (only if needed)&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;b&amp;gt;Forum:&amp;lt;/b&amp;gt; Links to the feedback and development threads at forums.wesnoth.org&lt;br /&gt;
&lt;br /&gt;
== Battle for Wesnoth 1.12.x - stable ==&lt;br /&gt;
&lt;br /&gt;
=== Campaigns ===&lt;br /&gt;
&lt;br /&gt;
==== Add's Army ====&lt;br /&gt;
&lt;br /&gt;
''Add, a wounded paladin, is posted to the quiet and remote province of Cormell to recover.  But when undead creatures start appearing, it's up to Add to do something about it... with whatever motley forces he can muster.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Makepeace McEvoy&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete &lt;br /&gt;
&lt;br /&gt;
'''Length:''' 8 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.1&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy (with a touch of not yet balanced)&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Dungeon&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' https://forums.wesnoth.org/viewtopic.php?f=31&amp;amp;t=43806&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== After the Storm ====&lt;br /&gt;
&lt;br /&gt;
''Follow the journey of Galas and his band following the events of &amp;lt;i&amp;gt;Invasion from the Unknown&amp;lt;/i&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' shadowmaster/ShikadiLord&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 3 episodes of 13 scenarios each, some of which are multi-part&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.9.9&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Medium-hard&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Boss Battle, Dungeon&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Many custom units&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=32091&lt;br /&gt;
&lt;br /&gt;
'''Note:''' (vultraz) Long, very enjoyable campaign with great story. (Knyghtmare) The best UMC campaign ever!&lt;br /&gt;
&lt;br /&gt;
'''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#After_the_Storm Players’ Review(s)]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Antar, Son of Rheor ====&lt;br /&gt;
&lt;br /&gt;
''This is the story about a young Lord and his first mission; sent by his father the young Lord Antar has to relieve his neighbours; he has to convince the Elves and Dwarves to ally him; he has to fight against hordes of Orcs and Endless Undead; and finally he has to defeat Mal Kazur, the mastermind who is behind all the evil.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Adamant14&lt;br /&gt;
&lt;br /&gt;
'''Status:''' WIP&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 10 playable scenarios / 1 cutscene &lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.10.2&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, Loyalists and Elves (feat. fencer as main hero + various allies)&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=36075&lt;br /&gt;
&lt;br /&gt;
'''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#Antar.2C_Son_of_Rheor Players’ Review(s)]'''&lt;br /&gt;
&lt;br /&gt;
==== Aria of the Dragon-Slayer (The Dragon Trilogy, Part III) ====&lt;br /&gt;
&lt;br /&gt;
''''''Part VII: Awakening from Legend''' - In ancient times, the fate of Irdya was changed in a great war against the dragons; and, in that war, the heroines Maat and Myra of Hiera'Shirsha stopped the Sky Dragon Svarballi and, unable to destroy him, locked him in a mighty prison. Now, five millennia after that war, as humans rule Irdya and two suns shine in the sky, the one with the power to finally slay the Sky Dragon may have been born as a peasant girl in the outskirts of civilization... Follow Tenma Yozora through the last days of Irdya's Golden Age and through the path to becoming the prophesied Dragon-Slayer...''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' revansurik&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 51 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.4.2.2&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Large Battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default+War of Legends+Custom units&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=40389&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Bad Moon Rising ====&lt;br /&gt;
&lt;br /&gt;
''An expedition to gather treasure from the cold north sets off compounding disaster.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Doofus-01&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 20 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.5.8&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard&lt;br /&gt;
&lt;br /&gt;
'''Style:'''  Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Archaic Era&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=31348&lt;br /&gt;
&lt;br /&gt;
==== Battle Against Time ====&lt;br /&gt;
&lt;br /&gt;
''Rescue fellow orcish warchief before he is executed. (This is not a normal campaign. It is experiment with carryover system. You will start with defined number of turns and gold. You will only have that many turns to play through the whole campaign. There is no finish bonus and gold carryover is always 100%.)''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Wonderboy&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 4 playable scenarios + 1 prologue scenario&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.4&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard&lt;br /&gt;
&lt;br /&gt;
'''Style:'''  Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default: Orcs&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://wesnoth.org/forum/viewtopic.php?f=8&amp;amp;t=27319&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Besieged Druids ====&lt;br /&gt;
&lt;br /&gt;
''A elvish school for druids comes under attack by goblins. It seems more than just a routine raid; is there something more sinister behind this attack? - In Beseiged Druids, you control Eärendil, the surviving teacher at the school, and the many and varied initiates. Not all of these are ordinary students; many have been experimenting with other forms of magic, while others are simply overachievers in some area of study. Unfortunately, they are not especially good at combat, at least initially. Together with a very small contingent of surviving guards, it is up to these students to save the island of Aleron from disaster.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Celtic Minstrel&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.1&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Unbalanced&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, Elves&lt;br /&gt;
&lt;br /&gt;
'''[http://units.wesnoth.org/1.12/DruidSiege/en_US/celmin-druid-siege.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=37342&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Birth of a Lich ====&lt;br /&gt;
&lt;br /&gt;
''This is the life story of the dreaded lich Malifor, his struggle as a mage outcast, the orcish conquest of the northlands and his transformation to quench the thirst for revenge''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' chak_abhi&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 12 playable scenarios / 2 dialogue only&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.3&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Large Battle, Dungeon&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Human outlaws, dwarves, undead&lt;br /&gt;
&lt;br /&gt;
'''[http://units.wesnoth.org/1.10/Birth_of_a_Lich/en_US/Birth_of_a_Lich.html Custom Units]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=37057&lt;br /&gt;
&lt;br /&gt;
==== Bitter Revenge====&lt;br /&gt;
&lt;br /&gt;
''Amidst the strife and turmoil of the first Dark Age of Wesnoth, a time of transient monarchies and conspiracies against the Crown, the boy Darith witnesses the murder of his father by a general of Wesnoth. Follow Darith's quest for retribution in this treacherous tale of betrayal, deceit, love, remorse, and vengeance.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Wonderboy&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 11 playable scenarios + 4 dialogue only&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.1.1&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard&lt;br /&gt;
&lt;br /&gt;
'''Style:'''  Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default (mostly outlaws and undead, custom units)&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://wesnoth.org/forum/viewtopic.php?f=8&amp;amp;t=26699&lt;br /&gt;
&lt;br /&gt;
==== Coming of the Storm ====&lt;br /&gt;
&lt;br /&gt;
''A new recruit joins the imperial army, eager to change the world and see combat. Little does he realise just how much action he will get and where his journey will take him. ''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' TrashMan&lt;br /&gt;
&lt;br /&gt;
'''Status:''' WIP&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 26 playable scenarios / 4 dialogue only&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.2.1&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Large Battle, Dungeon&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=23361&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Danse Macabre ====&lt;br /&gt;
&lt;br /&gt;
''Macabre is a rare zombie who has intelligence and will. What's he like? What's his purpose?''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' kamikaze&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' James_The_Invisible&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Completed&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 12 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.3&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Unbalanced&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Large Battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, undead&lt;br /&gt;
&lt;br /&gt;
'''[http://units.wesnoth.org/1.12/Danse_Macabre/en_US/Danse_Macabre.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=33745&lt;br /&gt;
&lt;br /&gt;
'''Note:''' While the campaign is playable on Wesnoth 1.12 without major issues, it is (still) in need of heavy re-balancing. Sadly, for various reasons I am not able to do it in near future but patches are always welcome, preferably in form of pull requests on [https://github.com/konecnyjakub/Danse_Macabre GitHub].&lt;br /&gt;
&lt;br /&gt;
==== The Dark Alliance ====&lt;br /&gt;
&lt;br /&gt;
''Prince Terhar lived two years with elves. Little did he expect what would happen when he returned back to Weldyn.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Wonderboy&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 11 or 10 playable scenarios depending on the branch you take (+ 5 dialogue scenarios)&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.4&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard&lt;br /&gt;
&lt;br /&gt;
'''Style:'''  Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default: Recruit list changes in almost every scenario&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://wesnoth.org/forum/viewtopic.php?f=8&amp;amp;t=26924&lt;br /&gt;
&lt;br /&gt;
==== Dawn of Thunder ====&lt;br /&gt;
&lt;br /&gt;
''A young elvish fighter is send to represent the Aethenwood at the Ka'lian. The adventure turns out to be bigger then expected.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Paulomat4&lt;br /&gt;
&lt;br /&gt;
'''Status:''' unfinished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 17 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:'''  1.1.0&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' challenging&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Large Battle, RPG-elements &lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, Elves, Humans&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=39512&lt;br /&gt;
&lt;br /&gt;
==== The Earth's Gut ====&lt;br /&gt;
&lt;br /&gt;
''The year is 515YW. You are the young dwarven leader Hamel. Your tribe in the caves of Knalga is under pressure from its enemies, and resources are growing scarce. In order to forge the weapons required to resist your enemies, you must set forth and collect what ores and minerals remain.''&lt;br /&gt;
&lt;br /&gt;
'''Author:'''  Anonymissimus&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Anonymissimus&lt;br /&gt;
&lt;br /&gt;
'''Status:''' WIP, story is unfinished (I didn't add any scenario since long, but that doesn't mean nothing is added to the campaign. My addons tend to be in good shape and bug-free which means also WIP as I'm updating it since 1.4 days.)&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 23 scenarios, 5 of which are cutscene only, some others have changing objectives&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.2.14&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:'''  Dungeon, Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, dwarves, woses, mages, a few custom units&lt;br /&gt;
&lt;br /&gt;
'''[http://units.wesnoth.org/1.10/The_Earths_Gut/en_US/the_earths_gut.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=26800&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This campaign is a &amp;quot;Dwarvish dungeon crawler&amp;quot; (It currently contains about as many surface scenarios as underground though.) and is intended to be challenging for experienced players on hard whilst suitably easy on easy. I develop the campaign with the wesnoth development version and I advise to play with that, but it is intended to work almost equally well with the stable wesnoth version (except for features only available in the wesnoth development version).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Final Exam ====&lt;br /&gt;
&lt;br /&gt;
''Young mage Erika must find a magic book to become a true mage. But will it really be her final exam?''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Elven&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 4 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 2.7&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Minigames&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, Loyalists&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=23398&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Short, easy campaign with varying objectives. Features female mage as leader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Flight of Drakes ====&lt;br /&gt;
&lt;br /&gt;
''Legends of the Emerald Forest, chapter I: The Flight of Drakes.&lt;br /&gt;
&lt;br /&gt;
''Follow drake king Klader on his quest to find the Crown of Light, a legendary artifact from pre-historic times.''&lt;br /&gt;
&lt;br /&gt;
''This campaign is the first chapter of a trilogy; the second chapter is an Undead campaign and it's called 'Only Death Behind'.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' NoQ&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 7 playable scenarios / 2 talk only&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.1.2&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Drakes&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=37981&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Invasion from the Unknown ====&lt;br /&gt;
&lt;br /&gt;
''Episode I - Seeking the Light: Long after the Fall, the last forest elves are forced to abandon their safe valley, and find themselves resorting to the dark means of necromancy in order to survive the perils and challenges of this new harsh world. May they finally free the Great Continent from its chaos, or perish in the foolish attempt of restoring peace and life to the lands.''&lt;br /&gt;
&lt;br /&gt;
''Episode II - Armageddon: As the shadow of Chaos covers the entire continent, an assorted group of foolish heroes prepares a counter-attack to the Empire, with one unique goal in their minds: defeat the evil Emperor, whoever it is. Lead these courageous living and non-living warriors to victory, and rediscover lost secrets of the history.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' shadowmaster &lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Espreon&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 26 scenarios in two episodes&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 2.0.0&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Dungeon, Boss battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Unique. You play Elves and Undead throughout the campaign.&lt;br /&gt;
&lt;br /&gt;
'''Walkthrough:''' [[IftU Walkthrough]]&lt;br /&gt;
&lt;br /&gt;
''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#Invasion_from_the_Unknown Players’ Review(s)]'''&lt;br /&gt;
&lt;br /&gt;
==== The Legend Begins ====&lt;br /&gt;
&lt;br /&gt;
''The tale of Jahin, the greatest hero the land of Arkenova, or perhaps the world of Irdya, had ever known. Watch his legend unfold before your very eyes.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Tahsin Jahin Khalid (Lord-Knightmare)&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 73 scenarios divided into 3 episodes. Continuation from one episode to the next one is possible, but not recommended.&lt;br /&gt;
&lt;br /&gt;
Episode 1 - 28 scenarios&lt;br /&gt;
&lt;br /&gt;
Episode 2 - 26 scenarios&lt;br /&gt;
&lt;br /&gt;
Episode 3 - 20 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.5.2&lt;br /&gt;
&lt;br /&gt;
'''Requirements:''' ''War of Legends'' is required to be installed. Latest version recommended.&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Intermediate&lt;br /&gt;
&lt;br /&gt;
'''Style:''' skirmishes, survivals, large battles, dungeons, boss battles&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' [http://units.wesnoth.org/trunk/mainline/en_US/era_default.html Default], [http://units.wesnoth.org/trunk/War_of_Legends/en_US/war_of_legends.html War of Legends]&lt;br /&gt;
&lt;br /&gt;
'''Custom units:''' [http://units.wesnoth.org/trunk/The_Legend_Begins/en_US/The_Legend_Begins-E1.html Custom Units]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=37424 Click Here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Legend of Far North ====&lt;br /&gt;
&lt;br /&gt;
''The tale of the legendary Black Eye Karun,depicting his rise to power, his successes and his brutal assassination.'&lt;br /&gt;
&lt;br /&gt;
'''Author:''' chak_abhi&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 16 playable scenarios / 1 dialogue only,1 cutscene&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.2&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Large Battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Orcs, Trolls, Saurians, Nagas&lt;br /&gt;
&lt;br /&gt;
'''[http://units.wesnoth.org/1.10/Legend_of_Far_North/en_US/Legend_of_Far_North.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=34769&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Legend of the Invincibles ====&lt;br /&gt;
&lt;br /&gt;
'''''Part I: Shrouded in Darkness''' (5 chapters, 90 scenarios) - A pair of heroes, after stopping an orcish threat, are outcast into caves, where they have no other choice than to become liches in order to survive. They preserved their original appearance and moral principles, and fight in various skirmishes against evil (although using evil methods sometimes), until the Fall, when they are buried alive under the ashes of the third sun.''&lt;br /&gt;
&lt;br /&gt;
'''''Part II: Into the Light''' (5 chapters, 110 scenarios) - Long after the Fall, the lich heroes awaken. Searching for more power, they manage to resurrect themselves as living beings, but this time more powerful and ridden of the evil within. But the evil from inside them did not cease to exist, and started a campaign to conquer the world. Stopping the campaign caused an even worse disaster...''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Dugi &lt;br /&gt;
&lt;br /&gt;
'''Status:''' complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 200 (+8 talk-only) scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 3.0.1&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' mostly Skirmish and Dungeon (all other styles are present as well, but less frequently)&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Elves, Loyalists, Undead, Dwarves; but they advance past their usual maximum level&lt;br /&gt;
&lt;br /&gt;
'''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#Legends_of_the_Invincibles Players’ Review(s)]'''&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The most unique feature of this campaign is its RPG-like unit development system, enemies drop items units can use, leaders are stronger than most usual units and all units get AMLA (after maximum level advancement) after reaching their maximum level (that is also increased by a load of additional level 4 units).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Library of Kratemaqht ====&lt;br /&gt;
&lt;br /&gt;
''An ancient story from the old continent.''&lt;br /&gt;
&lt;br /&gt;
'''Author:'''  Rich Marinaccio (cephalo)&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 17 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.0&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Unbalanced (some scenarios are Easy - some rather Hard) &lt;br /&gt;
&lt;br /&gt;
'''Style:'''  Skirmish, RPG&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Loyalists and custom units.&lt;br /&gt;
&lt;br /&gt;
'''[http://units.wesnoth.org/1.10/Library_Of_Kratemaqht/en_US/The_Library_Of_Kratemaqht.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=37798&lt;br /&gt;
&lt;br /&gt;
'''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#The_Library_of_Kratemaqht Players’ Review(s)]'''&lt;br /&gt;
&lt;br /&gt;
'''Notes:''' (Adamant14) This campaign has a thought-out story, shows a great love for detail;&lt;br /&gt;
It includes a great custom Dragon, some brilliant custom images (fire, burning houses, burning forest) that makes the scenery / maps look very nice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Militia ====&lt;br /&gt;
&lt;br /&gt;
''The Travels of a group of Peasants and their Friends; a level 0 campaign that does not focus on a singular hero.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Desert_Shyde&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 15 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:'''  1.5.2&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default&lt;br /&gt;
&lt;br /&gt;
'''[http://units.wesnoth.org/1.10/The_Militia/en_US/the_militia.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?t=30294&lt;br /&gt;
&lt;br /&gt;
==== The North Wind ====&lt;br /&gt;
&lt;br /&gt;
''Wesnoth's army was occupied fighting Mal Ravanal in the East, but there were whisperings of an orcish attack in the north. Konrad II must send Deoran, now an experienced rider and commander, with a small band of knights to hold off the orcs....''&lt;br /&gt;
&lt;br /&gt;
''This campaign features unique gameplay characteristics such as a lack of recruiting and a 24-turn time-of-day cycle.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' aelius, Deusite; pyndragon&lt;br /&gt;
&lt;br /&gt;
'''Status:''' WIP&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 playable scenario, 6 intended&lt;br /&gt;
&lt;br /&gt;
'''Version:'''  0.0.5&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' RPG, Skirmish, Survival&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Loyalists&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=42854&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Only Death Behind ====&lt;br /&gt;
&lt;br /&gt;
''Legends of the Emerald Forest, chapter II: Only Death Behind.''&lt;br /&gt;
&lt;br /&gt;
''Three ghosts have escaped from the land of the dead. Yet they don't remember anything about their past.''&lt;br /&gt;
&lt;br /&gt;
''This is an Undead campaign that references certain characters and events from 'The Flight of Drakes', yet it can be played separately.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' NoQ&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 7 playable scenarios / 1 talk only&lt;br /&gt;
&lt;br /&gt;
'''Version:'''  1.0.0&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Undead&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=39119&amp;amp;p=556996#p556996&lt;br /&gt;
&lt;br /&gt;
'''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#Review_by_Adamant14 Player's Review]'''&lt;br /&gt;
&lt;br /&gt;
'''Note:''' (Adamant14) A short and unusual undead campaign, you play with just a few units. Playable in a few hours, nevertheless it is fun to play.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Panther Lord ====&lt;br /&gt;
&lt;br /&gt;
''The Imperialists ambitions of pushing into the Sea States have been repeatedly thwarted and now they turn their attentions elsewhere. You are an outcast Darklander now living as a mercenary in the Sea States and the rumors you hear indicate that they will be coming to your people. Though an outcast you do not wish to see them subjugated. The spirit whose friendship caused you to be an outcast has a plan that might allow you to save them.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Velensk &lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Lavender&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 14 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.2&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Era of Four Moons, Darklanders (+ a wide variety of mercenaries)&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=34318&lt;br /&gt;
&lt;br /&gt;
'''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#Panther_Lord Players’ Review(s)]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Rebellion in the North ====&lt;br /&gt;
&lt;br /&gt;
''A great orcish uprising tends to destabilise the Northlands. As the future Lord Protector of the Northern Alliance you have to crush the rebellion and establish peace again.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Author:''' chak_abhi&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 24 playable scenarios / 3 dialogue only,2 cutscenes&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.1.12&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Large Battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Loyalists, Dwarves, Gryphons, Merfolk&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=33059&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Roar of the Woses ====&lt;br /&gt;
&lt;br /&gt;
''When the construction of a dam threatens the existence of her home, Kylix is forced on a journey to stop it.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Alarantalara&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 10-11 scenarios + 1 dialogue-only&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.2.7&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default with Additions (primarily Saurians, Nagas, Woses)&lt;br /&gt;
&lt;br /&gt;
'''[http://units.wesnoth.org/1.10/Roar_of_the_Woses/en_US/Swamp_Rage.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=29830&lt;br /&gt;
&lt;br /&gt;
'''Note:''' (author) Potentially unbalanced on Hard difficulty due to experiments with non-standard ways to increase difficulty. This issue does not exist on the lower difficulty levels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Roboke's Island ====&lt;br /&gt;
&lt;br /&gt;
Mystic Island Quest&lt;br /&gt;
&lt;br /&gt;
''Embark from Elensefar on an expedition to the west that will not only change your life but conearn the fate of many.''&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Unraveling the mystery of Roboke island is a magic experience.&amp;quot; (Weldyn Gazette)''&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;Ferocious battles and mysterious riddles await you.&amp;quot; (Wesmere Post)''&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;The adventures of Roboke and his side-kick are truly stunning.&amp;quot; (Knalga News)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Author:''' x42&lt;br /&gt;
&lt;br /&gt;
'''Status:''' beta, story-complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 18 playable scenarios + 6 story chapters&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.8.X-beta&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard&lt;br /&gt;
&lt;br /&gt;
'''Style:''': various (RPG, Skirmish, Puzzle)&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default (Fencer as main hero + various allies)&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=31&amp;amp;t=39423&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Requires BfW &amp;amp;ge; 1.11.6 (for MicroAI)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ruthless ====&lt;br /&gt;
&lt;br /&gt;
''A bard (an aging criminal) is walking in wasteland. Nothing but two hands in his pockets, and nothing but stones around. Suddenly he sees a knight on errand--a dangerous opponent, especially in broad daylight. The two strangers are soon sitting by the campfire, and the bard is telling a story.&lt;br /&gt;
(Beginner level, 10+ fights).''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' homunculus&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 12 playable scenarios + 5 cutscene scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.4&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal &lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default (Orcs)&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=37874&lt;br /&gt;
&lt;br /&gt;
'''Note:''' (Adamant14) Recommendable campaign, with smart unusual ideas and a good detailed story.&lt;br /&gt;
You fight with few units on small but perfect maps. About the difficulty: The author describes his campaign as 'beginner level', but for me the difficulty is rather NORMAL than EASY.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Salt Wars ====&lt;br /&gt;
&lt;br /&gt;
''Introductory campaign for the Era of Four Moons.''&lt;br /&gt;
&lt;br /&gt;
''As an officer of one of the Sea States you must defend your organization from aggressive rivals.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Velensk &lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Lavender&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 5 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.1&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Era of Four Moons, Sea States&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=31498&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Easy difficulty applies to easy and normal settings, hard is a considerable step up in difficulty.&lt;br /&gt;
&lt;br /&gt;
==== Saving Elensefar ====&lt;br /&gt;
&lt;br /&gt;
''Meneldur, elvish mariner of Elensefar, is driven to sea by the same orcs who attacked the city. He must gather an army willing to fight for him to regain Elensefar, his adopted homeland.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Turin&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' trewe&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 year (around 12 scenarios)&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.5.2&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, RPG, Simulation&lt;br /&gt;
&lt;br /&gt;
'''Faction:''' Default Era&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://wesnoth.org/forum/viewtopic.php?t=3072&amp;amp;start=0&lt;br /&gt;
&lt;br /&gt;
'''Wiki:''' [[Saving_Elensefar]]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Labeled as Expert, recruit list changes in all scenarios.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Secrets of the Ancients ====&lt;br /&gt;
&lt;br /&gt;
''From the Journal of Ardonna of Tarrynth:''&lt;br /&gt;
&lt;br /&gt;
''It's unfair that we humans must die after so few years. Though this is the natural order, we need not embrace it! The lords on the Green Isle knew how to live forever. Pursuit of that knowledge was declared illegal by King Haldric I, but I believe it is worth the risk: If I can rediscover the secrets of the ancients, not only will I cheat death, I will become a hero to the whole continent!''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' beetlenaut&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Completed&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 18 playable scenarios + 3 story only&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.1.1&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard &lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Undead/Default&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=40545&lt;br /&gt;
&lt;br /&gt;
'''Walkthrough:''' [[Secrets of the Ancients Walkthrough]]&lt;br /&gt;
&lt;br /&gt;
==== The Sojournings of Grog ====&lt;br /&gt;
&lt;br /&gt;
''Grog (as starred in Under the Burning Suns) goes home.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Peter Christopher, Thomas Hockings &lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Elvish_Hunter&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 18 playable scenarios in 2 parts&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 3.0.1&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Dungeon, Large Battle&lt;br /&gt;
&lt;br /&gt;
'''[http://units.wesnoth.org/1.10/The_Sojournings_of_Grog/en_US/The_Sojournings_of_Grog.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default. Most of the time you play trolls and some desert elves accompanying Grog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Soldier of Wesnoth ====&lt;br /&gt;
&lt;br /&gt;
''697 YW. More than two decades after King Konrad II died leaving no heir, three noble Houses vie for the control of the kingdom, which, still feeling the damages of Mal-Ravanal's invasion, sees its glory and power slowly fade away. Meanwhile, in the southern province of Kerlath, a young peasant called Addraryn sets out to join Weldyn's Army, in order to be able to marry the fair Elywen. However, his travel will suffer some very unexpected twists which will lead him to the main stages of the Second Civil War. Journey across Wesnoth, witness its decadence, meet old heroes and save the kingdom from the enemies within and from the formidable Lion of the Desert...''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' revansurik&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Completed&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 31 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 2.0.0&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal &lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default+Khalifate+Custom Units&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=39123&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A Song of Fire (The Dragon Trilogy, Part I) ====&lt;br /&gt;
&lt;br /&gt;
''''''Part I: The Last War''' - In a long-forgotten era, at the heart of the Great Continent, an ancestral evil is awakened, threatening to destroy the whole world. Follow young Myra in the war that will alter the future of Irdya and its peoples forever.''&lt;br /&gt;
&lt;br /&gt;
''''''Part II: Towards the Rising Sun''' - After the vicious Last War, Myra has become the new leader of Aragwaithi and Windsong alike. Albeit young and shaken by many losses, she must steel herself to lead her people through the vast and hostile Hannuk Steppes. However, her journey will take them all farther than in their wildest dreams. Furthermore, Myra must deal with the evil influence of the mysterious red gem she found after the last battle.''&lt;br /&gt;
&lt;br /&gt;
''''''Part III: Raging Skies''' - The refugees have finally found a new home: families are built, allies are made and, for the first time in years, Myra and her friends know peace. However, when everything seems normal, ambition and thirst for power cause the break out of a continental war. And, amidst this new storm, an old foe rises agan, more powerful than ever. Witness the end of the song of Irdya's first great heroine.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' revansurik&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 36 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.5.8&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Large Battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default+War of Legends&lt;br /&gt;
&lt;br /&gt;
'''Walkthrough:''' [[A Song of Fire Walkthrough]]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=38210&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Stormtrooper ====&lt;br /&gt;
&lt;br /&gt;
''A story of a freshly recruited, cowardly Stormtrooper trying to make his name in the Land of Close Combat. (don't ask what it means, you don't have to know to play and enjoy it)''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Szturmowiec&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 5 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.5beta&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard (balancing issues may occur)&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, some battles are hard to tell (may be a bit too big to call it a skirmish, but still not very big), one big battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=46348&lt;br /&gt;
&lt;br /&gt;
==== Swamp Witch's Curse ====&lt;br /&gt;
&lt;br /&gt;
''A Faerie tale from the World of Four Moons.''&lt;br /&gt;
&lt;br /&gt;
''In the tradition of Evil Sorceress's, a witch from the jungle made a surprise visit at the presentation of a sultans daughter. Promptly declaring the girl to be the future bride for her son she lays a curse that will harm any other man which approaches her. The girl grew up wild and somewhat bitter. Now many years later, word arrives of a merchant lord who knows a way to break the curse but in exchange he wants to marry her and receive a large dowry.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Velensk&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Expert&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction:''' Era of Four Moons, Freemen&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=40467&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Sven's Adventure ====&lt;br /&gt;
&lt;br /&gt;
''A young adventurer's quest to retrieve the fabled, and dangerous, Spellbook of Death.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' kpearce&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 19 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:'''  0.1.1&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' RPG, Dungeon, Boss Battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default (mixed factions)&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=39080&lt;br /&gt;
&lt;br /&gt;
==== Talentless Mage====&lt;br /&gt;
&lt;br /&gt;
''Humorous and silly campaign about mage apprentice who has managed to learn only one simple spell in thirty years.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Wonderboy&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 11 playable scenarios + 3 dialogue scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.1.2&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard&lt;br /&gt;
&lt;br /&gt;
'''Style:'''  Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Noob Faction&lt;br /&gt;
&lt;br /&gt;
'''[http://units.wesnoth.org/1.10/Talentless_Mage/en_US/Talentless%20Mage.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://wesnoth.org/forum/viewtopic.php?f=8&amp;amp;t=27608]&lt;br /&gt;
&lt;br /&gt;
'''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#Talentless_Mage Players’ Review(s)]'''&lt;br /&gt;
&lt;br /&gt;
==== The Ravagers====&lt;br /&gt;
&lt;br /&gt;
''&amp;quot;The Ravagers&amp;quot; is a tale of pure revenge. A tale of justice served cold, told in a flashback-style point-of-view narrative, by a ranger in the Inn at Weldyn.&lt;br /&gt;
The campaign includes many new exciting gameplay features, fun mechanics, hundreds of custom units, and many more.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' WhiteWolf&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 25 playable scenarios + 2 scene scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.13, see history on forum, requiring Wesnoth 1.12.x&lt;br /&gt;
&lt;br /&gt;
'''Requirements:''' Akladian Music Pack, Underness Music Pack&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Intermediate&lt;br /&gt;
&lt;br /&gt;
'''Style:'''  Skirmish + RPG / Flashback narrative&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Humans, Elves, Ravagers(dark humans)&lt;br /&gt;
&lt;br /&gt;
'''[https://units.wesnoth.org/1.12/The_Ravagers/en_US/The_Ravagers.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' https://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=44930&lt;br /&gt;
&lt;br /&gt;
==== The Tale of Vaniyera ====&lt;br /&gt;
&lt;br /&gt;
''The expansionist Lavinian Legion, led by the Imperator himself, has invaded the northern forests of the Sidhe, or Wild Elves. It is up to Leithan the Thunderblade and his advisor Vaniyera to push its armies back where they came from...''&lt;br /&gt;
&lt;br /&gt;
'''Author:'''  oreb, turin&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' UnwiseOwl&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 5 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.10.2&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:'''  Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Imperial Era, Sidhe.&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=19490&lt;br /&gt;
&lt;br /&gt;
'''Walkthrough''' There is a video-walkthrough by the campaign maintainer that begins here: https://www.youtube.com/watch?v=dGM1bjImvkI&amp;amp;list=PLZorLYWvUD7VIhaXxKwzO8iQANlp_TaF0&lt;br /&gt;
&lt;br /&gt;
'''Note:''' As of August 2014, all previous issues raised about this campaign have been addressed. If you've not played this campaign since 1.4 or 1.10, in this humble maintainers opinion, it's worth another go.&lt;br /&gt;
&lt;br /&gt;
==== The Three Elves ====&lt;br /&gt;
&lt;br /&gt;
''Three elves have just begun their adventure in the northern swampland. Will they become heroes or will they be responsible for another undead expansion?''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Stanislav Hoferek&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' trewe&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 8 scenarios + 2 dialogue&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.9&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction:''' Default (Elves)&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=23395&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== To Lands Unknown ====&lt;br /&gt;
&lt;br /&gt;
''This is the story of Mehir, the Summoner, and his journey to lands unknown.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' inferno8&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 20 scenarios, 4 dialogue only&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.7.1&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Intermediate (Era of Magic)&lt;br /&gt;
&lt;br /&gt;
'''Style''': Skirmish, Dungeon&lt;br /&gt;
&lt;br /&gt;
'''Era:''' Era of Magic&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=31799&lt;br /&gt;
&lt;br /&gt;
'''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#To_Lands_Unknown Players’ Review(s)]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== A Vision Blinded ====&lt;br /&gt;
&lt;br /&gt;
''Defend the northern forest against what appeared like a routine orcish raid, and unravel the greater conspiracies that lie below its waves.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' LemonTea&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Adamant14&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 13 playable scenarios + 1 dialogue-only&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.2&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, Elves (+ Trolls, Outlaws)&lt;br /&gt;
&lt;br /&gt;
'''[http://units.wesnoth.org/1.10/A_Vision_Blinded/en_US/A_Vision_Blinded.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=23463&amp;amp;hilit=a+vision+blinded&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== War of the Jewel (The Dragon Trilogy, Part II)====&lt;br /&gt;
&lt;br /&gt;
'''''Part IV: City of the Sun''' - Centuries have passed since the refugees of the Last War, led by Myra of Hiera'Shirsha and the Exodus Heroes, have established a new city for themselves in the faraway Netjer-Ta, the golden Maat'Kare; although they are constantly combatting foes who threaten to conquer them, the Maat'Karians have experienced times of relative comfort. However, this age of peace is soon to end, when the ancient evil that nearly destroyed their ancestors reappears at the very heart of their civilization, attracting upon itself the greedy eyes of darkly neighbours... And, in this brewing storm, the young Akhen Wadjet, Myra's last heir, will be forced to overcome his fears and doubts to protect the legacy his ancestor gave her own life for...''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' revansurik&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 38 scenarios + epilogue&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.2.2&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish/Large Battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' War of Legends+Custom factions (Maat'Karians, Wargs, Chomi, Deshra, Washraha, Woodlanders, Aeserians)&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=39618&amp;amp;p=562944#p562944&lt;br /&gt;
&lt;br /&gt;
==== The White Troll ====&lt;br /&gt;
&lt;br /&gt;
''The story of a white troll whelp with strange magic powers, who is raised in an elvish village.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Wesnoth Italian Forum&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 8 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.0&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default: you play with elves and trolls. Also features custom units with special advancements and abilities.&lt;br /&gt;
&lt;br /&gt;
'''[http://units.wesnoth.org/1.10/White_Troll/en_US/white_troll.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=38828&lt;br /&gt;
&lt;br /&gt;
=== Eras ===&lt;br /&gt;
&lt;br /&gt;
[[Category:Campaigns|*]]&lt;br /&gt;
[[Category:Eras|*]]&lt;br /&gt;
&lt;br /&gt;
==== Era of Four Moons ====&lt;br /&gt;
&lt;br /&gt;
An era based of the cultures in fictional world Ialfa. There are a core set of four which have had the blunt of the balancing effort put into them, and an additional four which represent other parts of the world and are not complete or balanced.&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Velensk&lt;br /&gt;
&lt;br /&gt;
'''Status:'''&lt;br /&gt;
&lt;br /&gt;
'''Faction Descriptions:''' The four core factions are:&lt;br /&gt;
&lt;br /&gt;
-The Highlanders (Chaotic/Neutral): A nomadic people living along the savanna and steppes. Units generally have high hp and low resistances and good movement and defense in the hills. Features cheap mobile infantry and recruitable level 2 Elephants that act as a living battering ram.&lt;br /&gt;
&lt;br /&gt;
-The Imperialists (Lawful): A massive oligarchy centered around an emperor and his house. Most units do well in the open and not well in forests. Can create durable positions and hold open ground exceptionally well but most units do not inflict a lot of damage. Features units with 50% defense in the open and suicidal units.&lt;br /&gt;
&lt;br /&gt;
-The Sea States (Lawful/Neutral): A collation of small mercantile city states. Can field a variety of versatile units with no exceptional strengths or weaknesses. &lt;br /&gt;
&lt;br /&gt;
-The Darklanders (Chaotic): A society of tribal Jungle people. Units generally have low hitpoints but good defense and movement in forests. Features very efficient melee power and access to both slows and berserk.&lt;br /&gt;
&lt;br /&gt;
The other factions are:&lt;br /&gt;
&lt;br /&gt;
-The Dalefolk (Neutral): A cluster of rural settlements known for it's magicians and inventors: Most units do exceptionally well in mountains. Features some good defensive units, the shapeshifter (who changes form depending on terrain), and a powerful melee magician.&lt;br /&gt;
&lt;br /&gt;
-The Pygmies (Liminal): A strange race of tiny jungle dwellers shrouded in mystery: Most units do very well in forests and swamps and are very dodgy at the cost of experience points. Also, most units will heal themselves slightly over time. Feature effective mobile level 0s and many powerful support units.&lt;br /&gt;
&lt;br /&gt;
-The Whites (Chaotic/Neutral): Barbarians from another continent: Units are generally mobile and high on hp but have low defenses when not in rough terrain. Feature powerful magicians and a steadfast berserker.&lt;br /&gt;
&lt;br /&gt;
-The Freemen (Lawful): A society of desert dwellers split between the city dwellers and the nomads. Units tend to be durable and adept in deserts and hills and not as good in forests. Features units with stun and recruitable level 2 rocs.&lt;br /&gt;
&lt;br /&gt;
'''Version: ''' 0.5.1&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' http://forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=30513&lt;br /&gt;
&lt;br /&gt;
==== War of Legends ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' An era based on the continent of Arkenova as well as other parts of Irdya.&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Tahsin Jahin Khalid (Lord-Knyghtmare)&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Tahsin Jahin Khalid (Lord-Knyghtmare)&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Factions:'''&lt;br /&gt;
&lt;br /&gt;
# Aragwaithi&lt;br /&gt;
# Windsong&lt;br /&gt;
# Human Alliance&lt;br /&gt;
# Orcish Union&lt;br /&gt;
# Southerners&lt;br /&gt;
# Outlaws&lt;br /&gt;
# Elementals&lt;br /&gt;
# Undead&lt;br /&gt;
# Drakes&lt;br /&gt;
# Dark Legion&lt;br /&gt;
# Sylvans&lt;br /&gt;
# Minotaurs&lt;br /&gt;
# Vampires&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.1.5.1&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [http://forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=30087 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Era of Magic(EoMa) ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Aiming at using the whole potential of Battle of Wesnoth's graphic engine, the Era of Magic is considered to have a most amazing special effects and attack animations in the BfW game. There are 8 playable factions with fully animated units and tons of special effects contained in the era, and the stories of them are told in the campaign &amp;quot;To Lands Unknown&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
'''Author:''' Inferno8&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Inferno8&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished; Available on 1.10 and 1.12 add-on server&lt;br /&gt;
&lt;br /&gt;
'''Faction Descriptions:'''&lt;br /&gt;
 &lt;br /&gt;
Sky Kingdom - powerful magi of all kinds. Their knowledge allows them to cast amazing spells and summon creatures like unstopable Golems or mysterious Mus. Masters of Elements and Gurus are one of the most powerful human beings in the Era.&lt;br /&gt;
&lt;br /&gt;
Al-Kamija - these proud people are good warriors and spell casters of the desert. They use magical circles and scrolls to summon amazing creatures like Jinns or elementals from other dimension called Abyss. These creatures can't be poisoned, which is a great advantage. &lt;br /&gt;
(The campaign &amp;quot;To Lands Unknown&amp;quot; is mainly about the story of this faction)&lt;br /&gt;
&lt;br /&gt;
Tharis - fearsome Tharis faction is very dangerous especially at night. Cruel people of Tharis with their black magic and dreadful monsters like Hydra can demolish everything standing on their way. Being so powerful in attack, Tharis have no healer, so they need to push forward at all costs.&lt;br /&gt;
&lt;br /&gt;
Kharos - this strange name is the name of a beautiful country ruled by prophets of light. These peaceful people are masters of defense and support. Their formations of healers and Shielders assisted by Silver Warriors, who can teleport between friendly villages, are very hard to destroy.&lt;br /&gt;
&lt;br /&gt;
Barbarians - the best in hand-to-hand combat. This multi-cultural society divided into Goblins, Orcs, Cyclops and Trolls with their own advantages and disadvantages can be hard opponent, but separately they are very weak.&lt;br /&gt;
&lt;br /&gt;
Runemasters - these Dwarves use runic magic and equipment and are well known of their protection against magic. The Runemasters create steam machines like Gyrocopters, Robots and even mighty Mechanical Dragons. Units from this faction are very resistant but slow.&lt;br /&gt;
&lt;br /&gt;
Dark Blood Alliance - this faction is composed of agile lizards, giant frogs, wyverns swallowing enemies and salamanders, which have developed to perfection the art of disguise. At the head of the community stand shamans known for their water magic, which is used in the fight as well as in healing.&lt;br /&gt;
&lt;br /&gt;
Destroyers - a terrifying undead creations consisting of civilizations long gone...&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.1.1 (February 18th, 2015)&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [http://forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=20039 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Ageless Era ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' Ageless Era is a compilation of the most popular eras and factions on the add-on server. It is more an era pack than an era.&lt;br /&gt;
&lt;br /&gt;
'''Author:''' mnewton1, Ravana and various&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Ravana&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished; Available on 1.6, 1.8, 1.10 and 1.12 add-on server. Only maintained on 1.12 server&lt;br /&gt;
&lt;br /&gt;
'''Unit Tree:''' [http://units.wesnoth.org/1.12/Ageless_Era/en_US/Ageless%20Era.html Ageless Unit Tree]&lt;br /&gt;
&lt;br /&gt;
'''Factions List:''' Currently there are 91 factions in the era:&lt;br /&gt;
&lt;br /&gt;
Default: Loyalist, Rebels, Northerners, Undead, Knalgan Alliance, Drakes, Khalifate&lt;br /&gt;
&lt;br /&gt;
Extended Era: Loyalist, Sylvans, Dwarves, Outlaws, Northerners, Undead, Chaos, Dark Elves&lt;br /&gt;
&lt;br /&gt;
Archaic Era: Khthon, Phantoms, Despair, Primeval, South-Seas, Ukians, Northern Orcs&lt;br /&gt;
&lt;br /&gt;
Era of Four Moons: Highlanders, Imperialists, Sea States, Darklanders, Dalefolk, Freemen, Pygmies, Whites&lt;br /&gt;
&lt;br /&gt;
Era of the Future: Welkin, Brungar&lt;br /&gt;
&lt;br /&gt;
BEEM: Anakes, Calidonians, Wood Warriors&lt;br /&gt;
&lt;br /&gt;
Custom Factions: Yokai, Dark Legion, Desert Elves, Steelhive, Frozen&lt;br /&gt;
&lt;br /&gt;
Era of Myths: Celestials, Devlings, Elementals, Therians, Vampires, The Warg, Windsong&lt;br /&gt;
&lt;br /&gt;
Feudal Era: Aragwaithi, Ceresians, Clockwork Dwarves, High Elves, Orcish Khaganates&lt;br /&gt;
&lt;br /&gt;
Imperial Era: Arendians, Cavernei, Issaelfr, Lavinian Legion, Marauders, Orcei Gladiatores, Sidhe&lt;br /&gt;
&lt;br /&gt;
Era of Strife: Eventide, Triththa, Free Saurians, Eltireans, Minotaurs&lt;br /&gt;
&lt;br /&gt;
Era of Magic: Barbarians, Dark Blood Alliance, Sky Kingdom, Kharos, Runemasters, Al-Kamija, Tharis, Destroyers&lt;br /&gt;
&lt;br /&gt;
Mercenaries Era: Highlanders, Enchanters, Avians, Slavers, Mercenaries, Equestrians, Emperor's Guard, Oracles, Holy Order, The Cult, Fanatics, Tribalists, Hive, Infernai, Refugees, Blight&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 4.14 (August 21, 2015)&lt;br /&gt;
&lt;br /&gt;
'''Git:''' [https://github.com/ProditorMagnus/Ageless-for-1-11 Ageless-for-1-11]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [http://forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=25274 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Imperial Era (IE) ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' One of the oldest maintained user eras, the Imperial Era brings together seven different factions in a completely re-imagined setting, the world of Orbivm, a very lethal world indeed. The era contains both mainline and development versions of each faction and can be used to play five campaigns, each featuring a different race.&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Orbivm Project (but really Turin)&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' UnwiseOwl&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Playable. Available on 1.12 as &amp;quot;Imperial Era&amp;quot; and 1.10 as &amp;quot;Imperial Era Fixed&amp;quot;&lt;br /&gt;
&lt;br /&gt;
'''Faction Descriptions:'''&lt;br /&gt;
 &lt;br /&gt;
# Lavinian Legion - Based on the Roman Legion, the Lavinians have strong, versatile melee units in the legionaries and a range of support classes sourced from amongst the Lavinian population and various subjugated races. The legion are strong in the plains but weak when fighting in forested areas. The Lavinians are featured in &amp;quot;Fall of Silvium&amp;quot;.&lt;br /&gt;
# Sidhe - The Sidhe are a group of forest-dwelling elves whose focus is stealth and fleet movement. Their mages are able to channel the lightning itself, and their various other units move almost as fast. The Sidhe feature in &amp;quot;Tale of Vaniyera&amp;quot;.&lt;br /&gt;
# Marauders - Based on the Germanic peoples that eventually conquered Rome (hint, hint), the Marauders are equally as at home in the hills, forests and swamps of their homeland. Their hard-hitting melee units are practicalyl unstoppable during the night-time. The Marauders are the stars of the &amp;quot;Alfhelm the Wise&amp;quot; campaign.&lt;br /&gt;
# Orcei Gentorum - The orcs have been captured gladiators slaving away in the Lavinian arenas for generations.The life of an orc in Orbivm is harsh and brutal, just like the orcs themselves. The tale of the uprising of one such group of Orcs is told in &amp;quot;Up from Slavery&amp;quot;.&lt;br /&gt;
# Cavernei - The Cavernei are a dwarvish race with similarities to the mainline Knalgans, but with a greater emphasis on the military uses of runesmithing. They get a campaign too, in &amp;quot;Gali's Contract&amp;quot;&lt;br /&gt;
# Issaelfr - The frost elves live on the fringes of the habitable lands of Evrosia, the main continent of Orbivm, and have become inured to difficult conditions and tuned in to their Fae natures. They don't have a campaign yet, but you could always write one.&lt;br /&gt;
# Arendians - The Arendians are horse-lords living on the Western steppes of Evrosia. A life of constant battle has developed a military-focused society where warriors are trained from a young age. They used to have a campaign, but it fell into disrepair a very long time ago.&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.22.1 (July, 2015)&lt;br /&gt;
&lt;br /&gt;
'''Wiki:''' [[Orbivm]]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [http://forums.wesnoth.org/viewtopic.php?t=37920 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
== Additional infos ==&lt;br /&gt;
See also: &lt;br /&gt;
* [[Player_UMC_Reviews|Player UMC Reviews]]&lt;br /&gt;
* [[:Category:User-made Campaigns - Walkthroughs|Walkthroughs for user-made campaigns]]&lt;br /&gt;
* [[Guide_to_UMC_Content/1.10|Guide to user-made content (UMC) for Battle for Wesnoth 1.10]]&lt;br /&gt;
* [http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=37476 forum thread] for this page&lt;br /&gt;
* [http://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=36733 non-available content]&lt;br /&gt;
* [http://addons.wesnoth.org the addon server]&lt;/div&gt;</summary>
		<author><name>Holius</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=RussianTranslation:TwoBrothers&amp;diff=58763</id>
		<title>RussianTranslation:TwoBrothers</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=RussianTranslation:TwoBrothers&amp;diff=58763"/>
		<updated>2017-08-11T11:50:25Z</updated>

		<summary type="html">&lt;p&gt;Holius: title levels&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Перевод кампании &amp;quot;История двух братьев&amp;quot; (A Tale Of Two Brothers) ==&lt;br /&gt;
=== Имена собственные ===&lt;br /&gt;
&lt;br /&gt;
==== Имена персонажей ====&lt;br /&gt;
&lt;br /&gt;
; Bjarn : Бьярн [+] переведено&lt;br /&gt;
; Arne : Арне [+] переведено&lt;br /&gt;
; Erik : Эрик [+] переведено&lt;br /&gt;
; Heine : Хайне [+] переведено&lt;br /&gt;
; Magnus : Магнус [+] переведено&lt;br /&gt;
; Nil-Galion : Нил-Галион [+] переведено&lt;br /&gt;
; Muff Toras : Муфф Торас [+] переведено&lt;br /&gt;
; Brena : Брена [+] переведено&lt;br /&gt;
&lt;br /&gt;
=== Сценарии ===&lt;br /&gt;
&lt;br /&gt;
==== Rooting Out A Mage ====&lt;br /&gt;
&lt;br /&gt;
Выдворение мага&lt;br /&gt;
&lt;br /&gt;
# название [*] вычитывается&lt;br /&gt;
# диалоги [?] подстрочник&lt;br /&gt;
&lt;br /&gt;
==== The Chase ====&lt;br /&gt;
&lt;br /&gt;
Погоня&lt;br /&gt;
&lt;br /&gt;
# название [*] вычитывается&lt;br /&gt;
# диалоги [?] подстрочник&lt;br /&gt;
&lt;br /&gt;
[[Category:Russian]]&lt;/div&gt;</summary>
		<author><name>Holius</name></author>
		
	</entry>
</feed>