<?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=Atreides</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=Atreides"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Atreides"/>
	<updated>2026-05-02T18:18:04Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=74039</id>
		<title>ImagePathFunctions</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=74039"/>
		<updated>2024-12-29T22:35:09Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* BLIT: Blit function */ translating blit to english ; )&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image Path Functions provide a simple method for WML coders to alter the way their specified images will be displayed in the game. All of the function parameters are included at the end of an image path and should not contain any spaces or special characters (other than those specified here).&lt;br /&gt;
&lt;br /&gt;
If you need to practice it without having to reload all WML, you can use an add-on named ''Image loading tester''.  It is available on the 1.9, 1.10, 1.11, 1.12 and 1.14 add-on servers.&lt;br /&gt;
&lt;br /&gt;
All functions are applied in left-to-right order, with the exception of RC(), TC() and PAL() which are applied always before any other functions. Standard team coloring for a unit is applied after all custom RC(), TC() and PAL() functions but before any other functions.&lt;br /&gt;
That is, stuff like&lt;br /&gt;
 &amp;quot;units/elves-wood/fighter.png~CROP(20,20,40,40)~CROP(10,10,10,10)&amp;quot;&lt;br /&gt;
would result in taking a crop to a 40x40 rectangle whose top-left corner is x=20, y=20; and then taking a crop from ''that'' rectangle with x=10, y=10, w=10, h=10. The result is the area x=30, y=30, w=10, h=10 from the original graphic.&lt;br /&gt;
&lt;br /&gt;
== Changing the colors ==&lt;br /&gt;
&lt;br /&gt;
=== BLEND: Color-blend function ===&lt;br /&gt;
Blends the image with the given color to produce a more controlled tinting effect than color-shifting, independently of the image's contents.&lt;br /&gt;
&lt;br /&gt;
'''~BLEND(r,g,b,o)'''&lt;br /&gt;
&lt;br /&gt;
The color is defined by the ''r'', ''g'', and ''b'' parameters (integers ranging from 0 to 255). The ''o'' (opacity) parameter controls the amount by which the given color will be blended into the image, and may be specified either as a factor from 0.0 to 1.0, or percentage up to 100%. Thus, ~BLEND(r,g,b,0.5) and ~BLEND(r,g,b,50%) are equivalent.&lt;br /&gt;
&lt;br /&gt;
=== BW: Black and White function ===&lt;br /&gt;
{{devfeature1.13|1}}&lt;br /&gt;
May be used to convert the image to pure black and white, without grey pixels. &lt;br /&gt;
&lt;br /&gt;
'''~BW(threshold)'''&lt;br /&gt;
* ''threshold'': a value between 0 and 255 (both limits included). All pixels are converted as greyscale first, and if their average value is greater than the threshold they become white, otherwise they become black.&lt;br /&gt;
&lt;br /&gt;
=== CS: Color-shift function ===&lt;br /&gt;
Performs simple per-channel color shifts by adding the arguments to the respective color channels.&lt;br /&gt;
&lt;br /&gt;
''Multi-channel:'' '''~CS(r,g,b)'''&lt;br /&gt;
''Single-channel:'' '''~R(v)''', '''~G(v)''', '''~B(v)'''&lt;br /&gt;
&lt;br /&gt;
The multichannel syntax assumes all arguments are set to zero initially, so one can use, e.g. ~CS(2,4) to add +2 and +4 units to the red and green channels respectively, leaving the blue channel intact. Arguments may be negative to diminish a channel's value; this can be used to change an image's brightness. Checks for out-of-range arguments or results (less than 0 or greater than 255) are made, so the resultant values are truncated if necessary.&lt;br /&gt;
&lt;br /&gt;
The single channel syntax behaves exactly the same, except that only single-channel modifications are made per function. However, one can stack them to produce the same behavior as ~CS(), e.g. ~R(r)~G(g)~B(b), but that tends to be just a performance loss.&lt;br /&gt;
&lt;br /&gt;
=== GS: Greyscale function ===&lt;br /&gt;
May be used to greyscale the image (turn to black and white)&lt;br /&gt;
&lt;br /&gt;
'''~GS( )'''&lt;br /&gt;
&lt;br /&gt;
=== L: Lightmap color-shift function ===&lt;br /&gt;
Performs per-pixel and per-channel color shifts using another image (a &amp;quot;lightmap&amp;quot;) as source, allowing to create textured light effects.&lt;br /&gt;
&lt;br /&gt;
'''~L(lightmap)'''&lt;br /&gt;
&lt;br /&gt;
For each pixel of the original image, it checks the RGB values from the corresponding pixel of the lightmap, slightly transform them, then add these values to the original pixel.&lt;br /&gt;
&lt;br /&gt;
The transformation involved is done to convert the (0,255) spectrum to (-255,255), allowing to add or subtract color. The formula is (x-128)*2, which means that 0 gives -256, 128 gives 0 and 255 gives 254. So, the no-effect lightmap is a fully grey image (RGB = 128,128,128) and any non-grey pixel will shift the colors of the original.&lt;br /&gt;
&lt;br /&gt;
Note that the lightmap will be scaled to the same dimensions as the original image.&lt;br /&gt;
&lt;br /&gt;
=== NEG: Negative function ===&lt;br /&gt;
{{devfeature1.13|0}}&lt;br /&gt;
Also known as ''invert'', it negates all the RGB values of the image, giving it an effect similar to a photographic negative.&lt;br /&gt;
&lt;br /&gt;
'''~NEG( )'''&lt;br /&gt;
&lt;br /&gt;
Inverts the image, giving it an effect like a photographic negative.&lt;br /&gt;
&lt;br /&gt;
{{devfeature1.13|1}} '''~NEG(''' ''threshold'' ''')'''&lt;br /&gt;
&lt;br /&gt;
If a channel has a value greater than the threshold, the channel will be inverted, performing an effect known as ''solarization''.&lt;br /&gt;
Threshold must be between -1 and 255, with -1 equivalent to full inversion and 255 as no-op value.&lt;br /&gt;
&lt;br /&gt;
{{devfeature1.13|1}} '''~NEG(''' ''threshold_red, threshold_green, threshold_blue'' ''')'''&lt;br /&gt;
&lt;br /&gt;
If a channel has a value greater than the corresponding threshold, the channel will be inverted.&lt;br /&gt;
Each threshold must be between -1 and 255, with -1 equivalent to full inversion and 255 as no-op value.&lt;br /&gt;
&lt;br /&gt;
=== PAL: Palette-switch function ===&lt;br /&gt;
May be used to change colors in an image following the specifications of a source and target (new) palette.&lt;br /&gt;
&lt;br /&gt;
'''~PAL(''' ''source color palette'' '''&amp;gt;''' ''target color palette'' ''')'''&lt;br /&gt;
*''source color palette'' - the first parameter is a source color palette, such as magenta. Do not surround this parameter with quotes.&lt;br /&gt;
*''target color palette'' - the new palette to take the place of the source colors in the image.&lt;br /&gt;
&lt;br /&gt;
A color palette can be either the attribute name from '''[[GameConfigWML#Color_Palettes|[color_palette]]]''' (like magenta) or a comma separated list of hex color values.&lt;br /&gt;
&lt;br /&gt;
=== RC: Re-Color function ===&lt;br /&gt;
May be used to change some colors in an image. It is possible to use ''RC'' more than once on the same image, with different source palettes.&lt;br /&gt;
&lt;br /&gt;
'''~RC(''' ''source color palette'' '''&amp;gt;''' ''destination color range'' ''')'''&lt;br /&gt;
&lt;br /&gt;
==== source color palette ====&lt;br /&gt;
The first parameter is a set of colors, usually the magenta palette. Do not surround this parameter with quotes. The three standard palettes are:&lt;br /&gt;
&lt;br /&gt;
* '''magenta''' - the 19 colors described in [[Team_Color_Shifting]]&lt;br /&gt;
* '''ellipse_red''' - all 255 colors with RGB value (n,0,0)&lt;br /&gt;
* '''flag_green''' - all 255 colors with RGB value (0,n,0)&lt;br /&gt;
&lt;br /&gt;
The palette can also be given inline as a set of hexadecimal RGB values.&lt;br /&gt;
&lt;br /&gt;
The named palettes are defined using the '''[[GameConfigWML#Color_Palettes|[color_palette]]]''' tag, and you can also define your own custom color palette using that tag.&lt;br /&gt;
&lt;br /&gt;
Warning: the RC function will also accept (and not give a warning about) '''red''', '''green''' and any other defined '''[color_range]'''; however the set of RGB values for those aren't guaranteed. Using '''red''' instead of '''ellipse_red''' might be equivalent to the palette 030000,060000,0a0000,...,ff0000,ff0a0a,...,fff0f0.&lt;br /&gt;
&lt;br /&gt;
==== destination color range ====&lt;br /&gt;
This is the second parameter, signifying the ID of a color range defined in the file [http://github.com/wesnoth/wesnoth/blob/master/data/core/team-colors.cfg data/core/team-colors.cfg] (or it may be a custom ID for a color range defined locally). You can also define a custom color range inline (the rgb key from [[GameConfigWML#Color_Palettes]]; note that RC does not use the fourth color for anything).&lt;br /&gt;
&lt;br /&gt;
For this destination color range, using '''red''' or '''green''' makes sense.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
In the following example, the magenta regions in an elvish captain's image are turned a healthy shade of green:&lt;br /&gt;
&lt;br /&gt;
  [message]&lt;br /&gt;
      speaker=narrator&lt;br /&gt;
      image=units/elves-wood/captain.png~RC(magenta&amp;gt;green)&lt;br /&gt;
      message=_ &amp;quot;Now I am on the green team.&amp;quot;&lt;br /&gt;
  [/message]&lt;br /&gt;
&lt;br /&gt;
The following example replaces a few of the '''magenta''' pixels with green ones:&lt;br /&gt;
&lt;br /&gt;
  misc/orb.png~RC(690039,c30074,ec008c &amp;gt; 007f00,00ff00,000000,000000)&lt;br /&gt;
&lt;br /&gt;
The IDs of the color ranges may be the lowercased English name of the palette's base color (e.g. 'red', 'brown', etc.). They may also be numeric color indices from the palette WML included with the game, but this is not recommended.&lt;br /&gt;
&lt;br /&gt;
=== SEPIA: Sepia function ===&lt;br /&gt;
{{devfeature1.13|0}}&lt;br /&gt;
May be used to give to the image a sepia tint (like in old pictures).&lt;br /&gt;
&lt;br /&gt;
'''~SEPIA()'''&lt;br /&gt;
&lt;br /&gt;
=== SWAP: Channel Swap function ===&lt;br /&gt;
{{devfeature1.13|1}}&lt;br /&gt;
May be used to swap the RGBA channels of an image.&lt;br /&gt;
&lt;br /&gt;
'''~SWAP(''' ''r, g, b'' ''')'''&lt;br /&gt;
'''~SWAP(''' ''r, g, b, a'' ''')'''&lt;br /&gt;
* ''r'', ''g'', ''b'', ''a'': each of these arguments may have a value equal to ''red'', ''green'', ''blue'' or ''alpha''. The RGBA channels of the original image will be exchanged accordingly (for example, &amp;lt;tt&amp;gt;~SWAP(blue,green,red)&amp;lt;/tt&amp;gt; swaps the blue and red channels).&lt;br /&gt;
&lt;br /&gt;
=== TC: Team-Color function ===&lt;br /&gt;
In Wesnoth version 1.2, the only Image Path Function was '''~TC()''', which took two comma-separated parameters: the team number and the source color palette. The valid values for both of these parameters are defined in the file ''data/team-colors.cfg''&lt;br /&gt;
&lt;br /&gt;
'''~TC(''' ''team number'' ''',''' ''source color palette'' ''')'''&lt;br /&gt;
*''team number'' - this is the first parameter, a number 1-9 signifying the team number of a unit. Number 1 typically means the red team, 2 typically means the blue team, and so on (unless the scenario color settings for any side have been altered).&lt;br /&gt;
*''source color palette'' - the second parameter is a source color palette, usually magenta. Do not surround this parameter with quotes.&lt;br /&gt;
&lt;br /&gt;
== Transformations ==&lt;br /&gt;
&lt;br /&gt;
=== FL: Flip function ===&lt;br /&gt;
May be used to flip an image horizontally and/or vertically.&lt;br /&gt;
&lt;br /&gt;
'''~FL(''' ''optional argument list'' ''')'''&lt;br /&gt;
*''vertical'' - if the string &amp;quot;vert&amp;quot; is found anywhere in the argument list, the image will be flipped vertically.&lt;br /&gt;
*''horizontal'' - if the string &amp;quot;horiz&amp;quot; is found anywhere in the argument list, the image will be flipped horizontally.&lt;br /&gt;
*if the argument list is empty, the image will only be flipped horizontally.&lt;br /&gt;
&lt;br /&gt;
=== ROTATE: Rotate function ===&lt;br /&gt;
May be used to rotate an image.&lt;br /&gt;
&lt;br /&gt;
'''~ROTATE(''' ''degrees'' ''')'''&lt;br /&gt;
* ''degrees'' - The number of degrees by which the image will be rotated. Positive numbers indicate clockwise rotation, while negative numbers indicate counter-clockwise. (Zero indicates no rotation.)&lt;br /&gt;
If the number of degrees is omitted, a quarter turn (90 degrees) clockwise is assumed.&lt;br /&gt;
&lt;br /&gt;
=== SCALE: Image-scaling function ===&lt;br /&gt;
Scales a graphic up or down.&lt;br /&gt;
&lt;br /&gt;
'''~SCALE( ''new_width'', ''new_height'' )&lt;br /&gt;
&lt;br /&gt;
The ''new_width'' and ''new_height'' parameters are taken as the image's original width or height, respectively, if one of them happens to be zero. Negative values are treated in the same way, but an error is printed in stderr. This uses the bilinear interpolation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== SCALE_INTO function ===&lt;br /&gt;
{{DevFeature1.13|5}}&lt;br /&gt;
&lt;br /&gt;
Similar to SCALE, but preserves aspect aspect ratio, scaling to the minimum extent required to fit into the specified area. The resulting image will have the specified width or the specified height, but not necessarily both.&lt;br /&gt;
&lt;br /&gt;
=== SCALE_SHARP function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
Scales functions using a nearest neighbor algorithm. Specify width and height. (It has the same syntax as ~SCALE.)&lt;br /&gt;
&lt;br /&gt;
'''~SCALE_SHARP(200,300)'''&lt;br /&gt;
&lt;br /&gt;
=== SCALE_INTO_SHARP function ===&lt;br /&gt;
{{DevFeature1.13|5}}&lt;br /&gt;
&lt;br /&gt;
Like SCALE_INTO, but uses nearest neighbor algorithm instead of bilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
=== XBRZ function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
Scales functions using the XBRZ algorithm. You may scale things up either 2x, 3x, 4x, or 5x. The scaling tries to preserve the pixel art nature.&lt;br /&gt;
&lt;br /&gt;
'''~XBRZ(n)'''&lt;br /&gt;
&lt;br /&gt;
== Cut-and-paste ==&lt;br /&gt;
&lt;br /&gt;
=== BLIT: Blit function ===&lt;br /&gt;
Blit (superimpose) the parameter image on the main image. Example: peasant.png~BLIT(hat.png,30,10)&lt;br /&gt;
&lt;br /&gt;
'''~BLIT(src,x,y)'''&lt;br /&gt;
* ''src'': an image file used as source for the blit, other image path functions can be used there.&lt;br /&gt;
* ''x'',''y'': top-left corner coordinates where to blit. If missing assume (0,0).&lt;br /&gt;
&lt;br /&gt;
=== CROP: Crop function ===&lt;br /&gt;
Extracts a rectangular section of an image file.&lt;br /&gt;
&lt;br /&gt;
'''~CROP(x,y,width,height)'''&lt;br /&gt;
* ''x'',''y'': top-left corner coordinates for the rectangular section extracted. Must be greater or equal than zero, and inside the image's bounds.&lt;br /&gt;
* ''width'': width of the selected region. Must be less than or equal to the original image's width, and must not be negative.&lt;br /&gt;
* ''height'': height of the selected region. Must be less than or equal to the original image's height, and must not be negative.&lt;br /&gt;
&lt;br /&gt;
=== CROP_TRANSPARENCY ===&lt;br /&gt;
{{devfeature1.17|26}}&lt;br /&gt;
Removes any transparent padding from around an image.&lt;br /&gt;
&lt;br /&gt;
'''~CROP_TRANSPARENCY()'''&lt;br /&gt;
&lt;br /&gt;
=== MASK: Mask function ===&lt;br /&gt;
Remove parts of the main image using the parameter image as a mask. Example: grass.png~MASK(circle.png) will give a circle of grass.&lt;br /&gt;
&lt;br /&gt;
'''~MASK(mask,x,y)'''&lt;br /&gt;
* ''mask'': an image file used as mask, other image path functions can be used there.&lt;br /&gt;
* ''x'',''y'': top-left corner coordinates where to put the mask. Parts ouside of the mask are considered transparent. If missing assume (0,0).&lt;br /&gt;
&lt;br /&gt;
Only the alpha channel of the mask is used and each alpha value will be the maximum alpha of the resulting image. This means that the fully-transparent parts of the mask will erase the corresponding parts of the image, but also that a semi-transparent mask will create a semi-transparent image.&lt;br /&gt;
&lt;br /&gt;
== Opacity ==&lt;br /&gt;
&lt;br /&gt;
=== ADJUST_ALPHA ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|?}}&lt;br /&gt;
&lt;br /&gt;
Alters the alpha of the image according to a WFL formula. The formula must output an integer from 0 to 255 giving the alpha across the canvas. It is evaluated for every pixel and may use the following variables: x, y, red, green, blue, alpha, width, height. {{DevFeature1.15|0}} The variables u and v are also supported now, evaluating to normalized texture coordinates (in the range 0..1); these are equivalent to &amp;lt;tt&amp;gt;x/width&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;y/height&amp;lt;/tt&amp;gt; respectively.&lt;br /&gt;
&lt;br /&gt;
'''~ADJUST_ALPHA(formula)'''.&lt;br /&gt;
&lt;br /&gt;
The context object for the formula is a '''[[#CHAN:_General_function|pixel object]]'''.&lt;br /&gt;
&lt;br /&gt;
=== O: Opacity modifying function ===&lt;br /&gt;
Changes an image's opacity at render time.&lt;br /&gt;
&lt;br /&gt;
'''~O( ''factor or percentage%'' )'''&lt;br /&gt;
&lt;br /&gt;
If the argument includes the percentage symbol (''%''), it will be treated as a percentage of full (real) opacity; an image will be displayed at its native opacity with ~O(100%).&lt;br /&gt;
&lt;br /&gt;
Without the percentage symbol, the argument is assumed to be a factor by which the image's native opacity should be multiplied. Thus, ~O(0.5) and ~O(50%) are equivalent forms of specifying to reduce an image's opacity by half.&lt;br /&gt;
&lt;br /&gt;
=== PLOT_ALPHA ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
At each pixel, the color is replaced with a grey-tone reflecting the alpha value at that pixel, and the new image is fully opaque. Useful for plotting the alpha to help debug an IPF or inspect a sprite.&lt;br /&gt;
&lt;br /&gt;
'''~PLOT_ALPHA()'''&lt;br /&gt;
&lt;br /&gt;
=== WIPE_ALPHA ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
At each pixel, the alpha value is discarded and the pixel is made fully opaque. Useful again for diagnostics.&lt;br /&gt;
&lt;br /&gt;
'''~WIPE_ALPHA()'''&lt;br /&gt;
&lt;br /&gt;
=== Background coloring function ===&lt;br /&gt;
Sets the color of all the (semi-)transparent pixels of the image.&lt;br /&gt;
&lt;br /&gt;
'''~BG(r,g,b)'''&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&lt;br /&gt;
=== BL: Blurring function ===&lt;br /&gt;
&lt;br /&gt;
Blurs a graphic at render time using the same algorithm used for in-game dialogs.&lt;br /&gt;
&lt;br /&gt;
'''~BL( ''radius'' )'''&lt;br /&gt;
&lt;br /&gt;
=== CHAN: General function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|7}}&lt;br /&gt;
&lt;br /&gt;
This function allows you to do pretty much anything. It takes up to four comma-separated formulas, one each for the red, green, blue, and alpha channels. Each formula functions exactly the same as the formula for '''ADJUST_ALPHA''', but the output integer is used for the corresponding channel rather than always the alpha channel. Do not surround the formula in &amp;lt;code&amp;gt;$(...)&amp;lt;/code&amp;gt;, since that will erase the &amp;lt;tt&amp;gt;self&amp;lt;/tt&amp;gt; variable.&lt;br /&gt;
&lt;br /&gt;
'''~CHAN(formula, formula, formula)'''&lt;br /&gt;
&lt;br /&gt;
The context object for each of the formulas is a '''pixel object''' with the following properties:&lt;br /&gt;
&lt;br /&gt;
* '''x''', '''y''': coordinates of the pixel, from the top left&lt;br /&gt;
* '''u''', '''v''': {{DevFeature1.15|0}} normalized coordinates in the range [0,1]&lt;br /&gt;
* '''width''', '''height''': size of the image canvas&lt;br /&gt;
* '''red''', '''green''', '''blue''', '''alpha''': components of the pixel colour&lt;br /&gt;
&lt;br /&gt;
=== DARKEN: Removed function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|7}} This function has been removed. Use a ~BLIT(misc/tod-dark.png) call instead.&lt;br /&gt;
&lt;br /&gt;
Puts a time-of-day schedule overlay (misc/tod-dark.png) on the image, which must be large enough to accommodate it.&lt;br /&gt;
&lt;br /&gt;
'''~DARKEN()'''&lt;br /&gt;
&lt;br /&gt;
=== BRIGHTEN: Removed function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|7}} This function has been removed. Use a ~BLIT(misc/tod-bright.png) call instead.&lt;br /&gt;
&lt;br /&gt;
Puts a time-of-day schedule overlay (misc/tod-bright.png) on the image, which must be large enough to accommodate it.&lt;br /&gt;
&lt;br /&gt;
'''~BRIGHTEN()'''&lt;br /&gt;
&lt;br /&gt;
=== NOP: Null function ===&lt;br /&gt;
&lt;br /&gt;
Does nothing.&lt;br /&gt;
&lt;br /&gt;
'''~NOP()'''&lt;br /&gt;
&lt;br /&gt;
=== Pseudo IPFs ===&lt;br /&gt;
&lt;br /&gt;
The following functions are ignored by the IPF image modification module, but used by other Wesnoth components. They only work in special areas.&lt;br /&gt;
&lt;br /&gt;
==== NO_TOD_SHIFT: Disabling ToD ====&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|8}}&lt;br /&gt;
&lt;br /&gt;
This is used by the terrain renderer and prevents terrain and item images from being affected by ToD lighting. This is in particular useful when placing unit images as items, as they will look the same as when placed as unit.&lt;br /&gt;
&lt;br /&gt;
'''~NO_TOD_SHIFT()'''&lt;br /&gt;
&lt;br /&gt;
==== RIGHT: Display portraits on the right ====&lt;br /&gt;
&lt;br /&gt;
'''''([[DevFeature|Version 1.5.8 and later only]])'''''&lt;br /&gt;
&lt;br /&gt;
This is used by the [[InterfaceActionsWML#.5Bmessage.5D|'''[message]''']] interface action and can be used to show a portrait on the right side of the screen.&lt;br /&gt;
&lt;br /&gt;
'''~RIGHT()'''&lt;br /&gt;
&lt;br /&gt;
== Creating an image file from IPFs ==&lt;br /&gt;
&lt;br /&gt;
The big advantage of Image Path Functions is that they allow you to alter an image without needing a new image file. However, you can also save the result into a new image file using Wesnoth's command line option ''--render-image'.&lt;br /&gt;
&lt;br /&gt;
Assuming you find a way to open your computer's terminal:&lt;br /&gt;
 wesnoth --render-image &amp;quot;units/human-peasants/ruffian.png~RC(magenta&amp;gt;green)~BLIT(units/human-peasants/woodsman.png~RC(magenta&amp;gt;lightblue),18,12)&amp;quot; /tmp/new_image_file.png&lt;br /&gt;
&lt;br /&gt;
Or on Windows:&lt;br /&gt;
 &amp;quot;C:\Path\to\Battle for Wesnoth\wesnoth.exe&amp;quot; --render-image &amp;quot;units/human-peasants/ruffian.png~RC(magenta&amp;gt;green)~BLIT(units/human-peasants/woodsman.png~RC(magenta&amp;gt;lightblue),18,12)&amp;quot; new_image_file.png&lt;br /&gt;
&lt;br /&gt;
Use cases include:&lt;br /&gt;
* Experimenting with Image Path Functions. If none of the images are from an add-on, adding ''--noaddons'' will speed this up.&lt;br /&gt;
* If a new Image Path Function is added to the development version of Wesnoth, add-ons for older Wesnoth versions can use a generated image instead.&lt;br /&gt;
* In case you want to use this anywhere out of Wesnoth. On a website, in Project Haldric, …&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[FancyAddonIcons]] - Tips and tricks for advanced Image Path Function manipulation&lt;br /&gt;
* [[DataURI]] - An image path may also contain the image directly, as a Base64 encoded string&lt;br /&gt;
* [https://irydacea.me/projects/wespal Wespal]  - Tool to preview unit recoloring. Covers the effects of the [[#RC:_Re-Color_Function|RC]], [[#TC: Team-Color Function|TC]] and [[#PAL:_Palette-switch_Function|PAL]] functions.&lt;br /&gt;
* [https://github.com/wesnoth/wesnoth/blob/master/src/image_modifications.cpp src/image_modifications.cpp] - file where IPFs are implemented &lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Wesnothd&amp;diff=72310</id>
		<title>Wesnothd</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Wesnothd&amp;diff=72310"/>
		<updated>2024-02-21T16:26:53Z</updated>

		<summary type="html">&lt;p&gt;Atreides: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''wesnothd''' is the multiplayer server for Wesnoth, shipped as a separate executable named ''wesnothd''. Points of interest regarding the server are:&lt;br /&gt;
* [[MultiplayerServerWML]] for the network protocol&lt;br /&gt;
* [[ServerAdministration]] for admin commands&lt;br /&gt;
* [[WesnothdDesign]] for some info about the design of the server&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Server Documentation]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ModificationWML&amp;diff=72151</id>
		<title>ModificationWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ModificationWML&amp;diff=72151"/>
		<updated>2024-01-18T19:17:48Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* The [modification] toplevel tag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== The [modification] toplevel tag ==&lt;br /&gt;
&lt;br /&gt;
This [[AddonsWML|addon module]] tag describes an SP or MP modification. A modification is, practically speaking, a bunch of events which get included into the scenario if the modification is enabled.&lt;br /&gt;
&lt;br /&gt;
The following keys/tags are recognized for '''[modification]''', in addition to all the common [[AddonsWML|addon module keys and tags]]:&lt;br /&gt;
&lt;br /&gt;
* '''type''': where the modification will be available for playing. Possible values are ''sp'', ''mp'', and ''hybrid''. hybrid equals mp + sp. N.B. If omitted it defaults to hybrid. Availability in SP also depends on whether or not modification tag is inside a multiplayer define. There is a bug where one can use modifications (not having type=mp) inside such a define by loading multiplayer and returning and then selecting campaign from the main screen.&lt;br /&gt;
* '''allow_scenario''': a list of scenario ids. Only the scenarios with matching ids will be allowed to be played with this modification.&lt;br /&gt;
* '''disallow_scenario''': a list of scenario ids. Only the scenarios with matching ids will not be allowed to be played with this modification. Cannot be used in parallel with allow_scenario.&lt;br /&gt;
* '''allow_era''': same as allow_scenario, but for eras.&lt;br /&gt;
* '''disallow_era''': same as disallow_scenario, but for eras. Can't be used with allow_era.&lt;br /&gt;
* '''allow_modification''': same as allow_scenario, but for modifications.&lt;br /&gt;
* '''disallow_modification''': same as disallow_scenario, but for modifications. Can't be used with allow_modification.&lt;br /&gt;
* '''ignore_incompatible_scenario''': a list of scenario ids. The scenarios with matching ids will be considered compatible with this modification regardless their dependencies.&lt;br /&gt;
* '''ignore_incompatible_era''': same as ignore_incompatible_scenario, but for eras.&lt;br /&gt;
* '''ignore_incompatible_modification''': same as ignore_incompatible_scenario, but for modifications.&lt;br /&gt;
* '''require_modification''': a boolean value; if set to yes, all players have to have this modification installed to join the game. Default no.&lt;br /&gt;
&lt;br /&gt;
== The [resource] toplevel tag ==&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|2}}&lt;br /&gt;
&lt;br /&gt;
The '''[resource]''' toplevel tag is another type of [[AddonsWML|addon module tag]] which is similar to '''[modification]''' but is invisible to the player. It can only be loaded on developer request, by the '''[load_resource]''' tag. It supports most of the common [[AddonsWML|addon module keys and tags]]. Besides that, there are no additional keys or tags supported in '''[resource]'''.&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Glossary&amp;diff=71868</id>
		<title>Glossary</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Glossary&amp;diff=71868"/>
		<updated>2023-12-05T17:46:37Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* Unofficial MP Eras */ Added in the rest of the most downloaded eras which have acronyms that I've heard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Use the following list to demystify the various (mostly wesnoth specific) terms and acronyms you may run into.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- NOTE TO EDITORS: Please try to keep an alphabetic order to simplify manual searching --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gaming Terms ==&lt;br /&gt;
&lt;br /&gt;
; ability : A special game rule or capability applied to all units of the given unit type - for example every Elvish Shaman has the ability &amp;quot;heal&amp;quot;.  (See [[AbilitiesWML]] for creating abilities.)&lt;br /&gt;
&lt;br /&gt;
; campaign: A sequence of scenarios with a connecting storyline. ([[MainlineCampaigns]], [[Guide_to_UMC_Content]], [[CampaignWML]])&lt;br /&gt;
&lt;br /&gt;
; creeping biggerism: the tendency for sprite artists to make new sprites bigger and more detailed than the existing ones, leading to issues of scale.&lt;br /&gt;
&lt;br /&gt;
; era: A set of factions available in multiplayer.  You can download additional eras from the [[Guide_to_UMC_Content|add-on server]]. ([[EraWML]])&lt;br /&gt;
&lt;br /&gt;
; faction: A set of units available to be plated as a side in multiplayer games. ([[EraWML|multiplayer_side WML tag]])&lt;br /&gt;
&lt;br /&gt;
; fog of war: A scenario option; enemy units are displayed only when close to player's units&lt;br /&gt;
&lt;br /&gt;
; mainline: A [[MainlineCampaigns|campaign]], multiplayer map, era, faction, image, or other resource that ships with the Wesnoth distribution.  The opposite of &amp;quot;[[#U|UMC]]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; scenario: A sequence of turns played on one map. ([[ScenarioWML]])&lt;br /&gt;
&lt;br /&gt;
; shroud: A scenario option; the whole map is black at the beginning, only parts already &amp;quot;discovered&amp;quot; by the player are visible.&lt;br /&gt;
&lt;br /&gt;
; team color (TColor, TC): A unit graphic done so that color of some unit part (e.g. clothes) reflects the team where unit belongs ([[Team Color Shifting]])&lt;br /&gt;
&lt;br /&gt;
; trait: A random minor modification of a unit; it makes a unit different from other units of the same type. ([[UnitsWML|the trait tag]])&lt;br /&gt;
&lt;br /&gt;
; UMC: &amp;quot;User-Made content&amp;quot; or &amp;quot;User-Maintained Content&amp;quot;, campaigns and other material that does not ship with the game but is available for download from the [[Guide_to_UMC_Content|Wesnoth add-on server]].&lt;br /&gt;
&lt;br /&gt;
; [[WesCamp|Wescamp]]: The (former) project for translating unofficial user-made campaigns&lt;br /&gt;
&lt;br /&gt;
; zone of control (ZoC): game rule; when a unit moves to a hex adjacent to enemy unit, it usually cannot move further.&lt;br /&gt;
&lt;br /&gt;
; zone-locked: said of a unit that has entered an enemy ZoC and therefore cannot move further (often just &amp;quot;zoced&amp;quot; for short).&lt;br /&gt;
&lt;br /&gt;
== Wesnothian Acronyms ==&lt;br /&gt;
&lt;br /&gt;
*AI      - Artificial Intelligence (An 'AI side' is a side controlled by the computer)&lt;br /&gt;
*AMLA    - After Maximum Level Advancement&lt;br /&gt;
*AoH     - Age of Heroes&lt;br /&gt;
*BfM     - Battle for Meridia&lt;br /&gt;
*BfW     - Battle for Wesnoth (the name of the game)&lt;br /&gt;
*BWH     - '''B'''een suggested before.  '''W'''e think it's a good idea.  '''H'''ope to add it eventually.&lt;br /&gt;
*CABD    - Can Already Be Done, e.g., you can already create custom unit abilities via WML.&lt;br /&gt;
*CtH     - Chance to Hit (also C2H)&lt;br /&gt;
*CtBH    - Chance to Be Hit (also C2BH)&lt;br /&gt;
*CtK     - Chance to Kill (also C2K)&lt;br /&gt;
*CtBK    - Chance to Be Killed (also C2BK)&lt;br /&gt;
*FoW     - Fog of War (i.e. fog)&lt;br /&gt;
*FFA     - Free For All (playing a map with &amp;gt;2 players without teams)&lt;br /&gt;
*FPI     - Frequently Posted Idea (read the [http://www.wesnoth.org/forum/viewtopic.php?t=1158|FPI Post] from the Ideas Forum)&lt;br /&gt;
*HANE—EtH      - Hexes Are Not Evil - Embrace the Hex&lt;br /&gt;
*HAPMA   - Hexes Are Possibly Miles Across&lt;br /&gt;
*HP      - Hit points&lt;br /&gt;
*IIRWIIR - It Is Ready When It Is Ready&lt;br /&gt;
*IPF     - [[ImagePathFunctions|Image Path Function]]&lt;br /&gt;
*KISS    - Keep It Simple, Stupid: Applies to coding, not game rules (although indirectly it does): see [[WesnothPhilosophy]]&lt;br /&gt;
*MAI     - Micro AI: see: [[Micro_AIs]]&lt;br /&gt;
*MP      - Multiplayer or Movement Points&lt;br /&gt;
*MUB     - Massive Unit Blobs&lt;br /&gt;
*N3T     - No 3-Teams; A belief stating that contests between three equal and opposing forces are inherently unbalanced&lt;br /&gt;
*OAB     - Options Are Bad; In reference to gameplay, not user interface options.  Mostly used by Turin.&lt;br /&gt;
*OFWRA   - Old Flame War Revival Alert; In other words, we have discussed this before and have no interest in discussing it again, especially if it got ugly&lt;br /&gt;
*OOS     - Out Of Sync - an error generated by Wesnoth.  OOS errors occur when game data for one player is different/incompatible from the others&lt;br /&gt;
*PoD     - Paths of Daggers, the name of a 2v2 multiplayer map.&lt;br /&gt;
*RiPLIB  - Reduction in Power when Leveling Is Bad: means that when a unit upgrades, at least one of its options should be strictly superior to the original unit. [http://www.wesnoth.org/forum/viewtopic.php?t=1423 Reference 1] / [http://www.wesnoth.org/forum/viewtopic.php?t=7205 Reference 2]&lt;br /&gt;
*RNG     - Random Number Generator&lt;br /&gt;
*RPG     - Role Playing Game - [http://www.wesnoth.org/forum/viewtopic.php?t=4385 1)] Wesnoth's experience system. &amp;lt;nowiki&amp;gt;2)&amp;lt;/nowiki&amp;gt; An &amp;quot;RPG-style&amp;quot; game on the MP server means the primary focus will be walking your leader-units through a scripted storyline involving map exploration and lots of WML.&lt;br /&gt;
*RTS     - Real Time Strategy Game - as opposed to a turn-based game like Wesnoth&lt;br /&gt;
*SLF     - [[StandardLocationFilter]]&lt;br /&gt;
*SP      - Single Player (Campaigns)&lt;br /&gt;
*SSF     - [[StandardSideFilter]]&lt;br /&gt;
*SUF     - [[StandardUnitFilter]]&lt;br /&gt;
*TBS     - Turn Based Strategy Game, like Wesnoth&lt;br /&gt;
*ToD     - Time of Day&lt;br /&gt;
*TWP     - The Wesnoth Philosophy: [[WesnothPhilosophy]]&lt;br /&gt;
*UAPEB   - Units Are Possibly Entire Battalions&lt;br /&gt;
*UMC     - User Made Campaign or User Made Content (any add-on not packaged with Wesnoth)&lt;br /&gt;
*WICOT   - WML is capable of this (the requested feature is already possible to script, so no need to hard-code it in C++)&lt;br /&gt;
*WINR    - Wesnoth Is Not Realistic&lt;br /&gt;
*WIN_    - Wesnoth Is Not... (Warcraft, Lord of the Rings, medieval Europe, an RPG, a wargame, a war simulation, Fire Emblem, etc.)&lt;br /&gt;
*WML     - Wesnoth Markup Language: [[ReferenceWML]]&lt;br /&gt;
*XP      - Experience&lt;br /&gt;
*ZoC     - Zone of Control&lt;br /&gt;
&lt;br /&gt;
== Names of Mainline Campaigns and Scenarios ==&lt;br /&gt;
&lt;br /&gt;
*AoI           - ''An Orcish Incursion''&lt;br /&gt;
*DiD           - ''Descent into Darkness''&lt;br /&gt;
*DM            - ''Delfador's Memoirs''&lt;br /&gt;
*DW            - ''Dead Water''&lt;br /&gt;
*EI            - ''The Eastern Invasion''&lt;br /&gt;
*HttT          - ''Heir to the Throne''&lt;br /&gt;
** BoP         - ''Bay of Pearls''&lt;br /&gt;
** DD          - ''Dwarven Doors''&lt;br /&gt;
** HotNE       - ''Home of the North Elves''&lt;br /&gt;
** IotD        - ''Isle of the Damned''&lt;br /&gt;
** RtW         - ''Return to Wesnoth''&lt;br /&gt;
** SoE         - ''Siege of Elensefar''&lt;br /&gt;
** SoF         - ''Sceptre of Fire''&lt;br /&gt;
** TotC        - ''Test of the Clans''&lt;br /&gt;
*IoM           - ''Isle of Mists'' (MP, mainlined in 1.15)&lt;br /&gt;
*LoW           - ''Legend of Wesmere''&lt;br /&gt;
*NR            - ''Northern Rebirth''&lt;br /&gt;
*SoF           - ''Sceptre of Fire''&lt;br /&gt;
*SotA          - ''Secrets of the Ancient''&lt;br /&gt;
*SotBE         - ''Son of the Black Eye''&lt;br /&gt;
*TB (or AToTB) - ''A Tale of Two Brothers''&lt;br /&gt;
*THoT          - ''The Hammer of Thursagan''&lt;br /&gt;
*TRoW          - ''The Rise of Wesnoth''&lt;br /&gt;
*TSG           - ''The South Guard''&lt;br /&gt;
*UtBS          - ''Under the Burning Suns''&lt;br /&gt;
*WC            - ''World Conquest'' (MP, mainlined in 1.15)&lt;br /&gt;
&lt;br /&gt;
== Unofficial Campaigns ==&lt;br /&gt;
&lt;br /&gt;
*ANO      - ''A New Order''&lt;br /&gt;
*AotDS    - ''Aria of the Dragon Slayer''&lt;br /&gt;
*ARL      - ''A Rough Life''&lt;br /&gt;
*ASoF     - ''A Song of Fire''&lt;br /&gt;
*AtS      - ''After the Storm''&lt;br /&gt;
*BCoA     - ''Black Cross of Aleron''&lt;br /&gt;
*BMR      - ''Bad Moon Rising''&lt;br /&gt;
*BW       - ''Brave Wings''&lt;br /&gt;
*CCamp    - ''Custom Campaign''&lt;br /&gt;
*FoaP     - ''Fate of a Princess''&lt;br /&gt;
*FTC      - ''Forward They Cried''&lt;br /&gt;
*FtF      - ''Flight to Freedom''&lt;br /&gt;
*Gns      - ''Genesis''&lt;br /&gt;
*HoI1     - ''Hero of Irdya - Book I''&lt;br /&gt;
*IftU     - ''Invasion from the Unknown''&lt;br /&gt;
*IQ       - ''Inky's Quest''&lt;br /&gt;
*LotI     - ''Legend of the Invincibles''&lt;br /&gt;
*SE       - ''Saving Elensefar''&lt;br /&gt;
*SfF      - ''Struggle for Freedom''&lt;br /&gt;
*TBC      - ''The Beautiful Child''&lt;br /&gt;
*TDH      - ''The Dark Hordes''&lt;br /&gt;
*TEG      - ''The Earth's Gut''&lt;br /&gt;
*TFE      - ''The Final Exam''&lt;br /&gt;
*TLU      - ''To Lands Unknown''&lt;br /&gt;
*TSL      - ''The Silver Lands''&lt;br /&gt;
*TSoG     - ''The Sojournings of Grog''&lt;br /&gt;
*WoF      - ''Winds of Fate'' (formerly WoV for ''Wings of Victory'' or ''Wings of Valor'')&lt;br /&gt;
*WotJ     - ''War of the Jewel'' &lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;Unit_Names&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Unofficial MP Eras ==&lt;br /&gt;
&lt;br /&gt;
*AE  - ''Ageless Era/Archaic Era''&lt;br /&gt;
*ANLE - ''A New Land Era''&lt;br /&gt;
*EEaW - ''17th Century Eastern Europe at War''&lt;br /&gt;
*EoM - ''Era of Myths''&lt;br /&gt;
*EoMa - ''Era of Magic''&lt;br /&gt;
*GSE - ''Great Steppe Era''&lt;br /&gt;
*IE - ''Imperial Era''&lt;br /&gt;
*RE - ''Rashy Era''&lt;br /&gt;
*RotL/Rotl - ''Reign of The Lords''&lt;br /&gt;
*WoL - ''War of Legends''&lt;br /&gt;
&lt;br /&gt;
== Unit Jargon ==&lt;br /&gt;
&lt;br /&gt;
*bird    - usually Gryphon Rider/Master (knalgans), or occasionally a Falcon or Eagle Rider from the [//units.wesnoth.org/1.14/Extended_Era/en_US/era_extended_37.0.0.0.html Extended Era] Aragwaith and Kalifa factions.&lt;br /&gt;
*DA      - Dark Adept (undead)&lt;br /&gt;
*fish    - Merman (loyalists or rebels) or Naga Fighter (northerners)&lt;br /&gt;
*frog    - a Saurian, especially &amp;quot;magic frog&amp;quot; for an Augur&lt;br /&gt;
*gobo    - An affectionate, if somewhat derogatory term for the Goblin Spearman&lt;br /&gt;
*gunner  - Dwarvish Thunderer/Thunderguard/Dragonguard (knalgans)&lt;br /&gt;
*HI      - Heavy Infantryman (loyalists)&lt;br /&gt;
*MoL     - Mage of Light (loyalists or rebels)&lt;br /&gt;
*pyro    - Unit in the Drake Burner line&lt;br /&gt;
*Ulf     - Dwarvish Ulfserker (knalgans)&lt;br /&gt;
*WC      - Walking Corpse (undead)&lt;br /&gt;
*zombie  - Walking Corpse&lt;br /&gt;
&lt;br /&gt;
== General Acronyms ==&lt;br /&gt;
&lt;br /&gt;
*AFaICT  - As Far as I Can Tell (A statement with a disclaimer on truthfulness)&lt;br /&gt;
*AFaIK   - As Far as I Know (A statement with a disclaimer on truthfulness)&lt;br /&gt;
*AfK     - Away from the Keyboard&lt;br /&gt;
*ASaP    - As Soon as Possible&lt;br /&gt;
*BRB     - Be Right Back&lt;br /&gt;
*BtW     - By the Way (A statement with a disclaimer on relevance)&lt;br /&gt;
*DTRT    - Do The Right Thing (expectation for how something should work)&lt;br /&gt;
*EV      - Expected Value&lt;br /&gt;
*FTR     - For The Record&lt;br /&gt;
*FUBAR   - F***ed up beyond all repair / reason&lt;br /&gt;
*FWIW    - For what it's worth&lt;br /&gt;
*FYI     - For Your Information&lt;br /&gt;
*GG      - Good Game (a common courtesy to say after a multiplayer game; alternatively &amp;quot;GGWP&amp;quot; for &amp;quot;Good Game, Well Played&amp;quot;)&lt;br /&gt;
*GtG     - Got to Go&lt;br /&gt;
*IANAL   - I Am Not A Lawyer (A disclaimer that a statement may not constitute legal advice.)&lt;br /&gt;
*IDK     - I Don't Know&lt;br /&gt;
*IIRC    - If I Recall/Remember Correctly (A statement with a disclaimer on truthfulness)&lt;br /&gt;
*IIUC    - If I Understand Correctly (Similar to IIRC, but not implying that the speaker once knew with certainty.)&lt;br /&gt;
*IMHO    - In My Humble Opinion (A statement with a disclaimer on objectiveness) (can also be read as &amp;quot;In My Honest Opinion&amp;quot;)&lt;br /&gt;
*IMO     - In My Opinion&lt;br /&gt;
*IYSWIM  - If You See What I Mean (A statement seeking agreement)&lt;br /&gt;
*LGTM    - Looks Good To Me (used by maintainers when approving Pull Requests on GitHub)&lt;br /&gt;
*LMAO    - Laughing My A** Off&lt;br /&gt;
*LTNS    - Long Time No See&lt;br /&gt;
*OMG     - oh my god(s)&lt;br /&gt;
*OP      - either &amp;quot;OverPowered&amp;quot;, &amp;quot;Original Post&amp;quot;, or &amp;quot;Original Poster&amp;quot;, depending on context. &lt;br /&gt;
*OT      - Off Topic: can refer either to the forum category ([http://www.wesnoth.org/forum/viewforum.php?f=11]) or to spam&lt;br /&gt;
*OtOH    - On the Other Hand (A contrast)&lt;br /&gt;
*PR      - Pull Request (in the context of contributing to a project like Wesnoth on GitHub; other projects that use other issue trackers use it to mean Problem Report instead)&lt;br /&gt;
*QFT     - Quote For Truth&lt;br /&gt;
*RotFL   - Rolling on the Floor Laughing; also RoFL&lt;br /&gt;
*RtFM    - Read the F***ing Manual&lt;br /&gt;
*TTYL    - Talk To You Later&lt;br /&gt;
&lt;br /&gt;
[[Category:World of Wesnoth]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=StartingPoints&amp;diff=71724</id>
		<title>StartingPoints</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=StartingPoints&amp;diff=71724"/>
		<updated>2023-10-30T16:14:24Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* Playing the Game (Play) */ updated link to units for 1.16&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Translations}}&lt;br /&gt;
{| style=&amp;quot;float:right&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
__NOTOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
What would you like to learn about Wesnoth in this wiki? [[Play]] it, [[create]] with it, [[support]] for it, examine the [[project]], view [[credits]] of it.&lt;br /&gt;
&lt;br /&gt;
This is a page with starting points to exploring this wiki about The Battle for Wesnoth. In addition to the wiki, there's also a [//www.wesnoth.org homepage], a [//www.wesnoth.org/forum forum],  and a [https://github.com/wesnoth Github project page].&lt;br /&gt;
&lt;br /&gt;
* [[Special:Categories|List of all page categories in this wiki]]&lt;br /&gt;
* [[Special:Allpages|List of all pages in this wiki]]&lt;br /&gt;
&lt;br /&gt;
== Getting the Game ==&lt;br /&gt;
==== Downloading ====&lt;br /&gt;
* [[Download]] - get the most recent source-files and many binaries&lt;br /&gt;
** [[WesnothBinariesLinux]] - precompiled for many GNU/Linux distributions&lt;br /&gt;
&lt;br /&gt;
==== Compiling ====&lt;br /&gt;
* [https://github.com/wesnoth/wesnoth/blob/master/INSTALL.md Compiling Wesnoth] - on Unix, Mac, Windows, GNU/Linux, etc&lt;br /&gt;
* [[DebuggingWesnoth]] - on GNU/Linux and Unix-like systems&lt;br /&gt;
&lt;br /&gt;
== Playing the Game ([[Play]]) ==&lt;br /&gt;
&lt;br /&gt;
==== For New Players ====&lt;br /&gt;
* [[GettingStarted]] - read me first!&lt;br /&gt;
* [[WesnothManual]] - the rules&lt;br /&gt;
* [[MainlineCampaigns]] - walkthroughs for the game-supplied campaigns&lt;br /&gt;
&lt;br /&gt;
==== For Not-So-New Players ====&lt;br /&gt;
* [[AdvancedTactics]] - beating the AI and other people&lt;br /&gt;
* [[MultiplayerServers]] - where to play against other people online&lt;br /&gt;
* [[Replays]] - archive of replays new and old&lt;br /&gt;
* [[How to play...]] - learn more about various faction vs faction strategies&lt;br /&gt;
&lt;br /&gt;
==== Reference ====&lt;br /&gt;
* [[HotKeysSystem]] - keyboard shortcuts&lt;br /&gt;
* [[CommandMode]] - commands you can use in-game&lt;br /&gt;
* [[ChatCommands]] - commands you can use when on a multiplayer server&lt;br /&gt;
* [[ServerAdministration]] - commands that invoke direct server response (mostly for getting information)&lt;br /&gt;
* [//units.wesnoth.org/ Units] - Units advancement trees and stats&lt;br /&gt;
** [//units.wesnoth.org/1.16 Stable version]&lt;br /&gt;
** [//units.wesnoth.org/trunk Trunk version]&lt;br /&gt;
* [[Races]] - [[Drakes (race)|Drakes]], [[Dwarves]], [[Elves]], [[Humans]], [[Orcs]], [[Undead (race)|Undead]], etc.&lt;br /&gt;
** [[Factions]] - all major factions, mainline and user-made&lt;br /&gt;
* [[Glossary|Glossary]] - common Wesnothian jargon, acronyms and slang explained&lt;br /&gt;
&lt;br /&gt;
== Tweaking the Game ([[Create]]) ==&lt;br /&gt;
==== Scenarios &amp;amp; Campaigns ====&lt;br /&gt;
* [[Guide_to_UMC_Content]] - user-written scenarios, campaigns and game modifications&lt;br /&gt;
* [[BuildingCampaigns]] - how to make your own single player campaigns&lt;br /&gt;
* [[MultiplayerContent]] - how to make your own multiplayer scenarios and campaigns&lt;br /&gt;
* [[BuildingScenarios]] - how to make your own scenarios&lt;br /&gt;
* [[BuildingUnits]] - how to make your own units&lt;br /&gt;
* [[BuildingFactions]] - how to make your own faction&lt;br /&gt;
&lt;br /&gt;
==== References ====&lt;br /&gt;
* [[ReferenceWML]] - all about Wesnoth Markup Language&lt;br /&gt;
&lt;br /&gt;
==== Art related ====&lt;br /&gt;
* [[Create_Art#Art_Tutorials|Art Tutorials]] - help in creating art&lt;br /&gt;
&lt;br /&gt;
== Improving the Game ==&lt;br /&gt;
* [[ReportingBugs]] - use GitHub!&lt;br /&gt;
* [//www.wesnoth.org/wiki/ReportingBugs#Guidelines_for_suggesting_features Guidelines for suggesting features] - To submit a feature request, use https://bugs.wesnoth.org&lt;br /&gt;
==== Developer information ====&lt;br /&gt;
* [[DeveloperResources]] - useful links&lt;br /&gt;
* [//changelog.wesnoth.org Changelog] - the most recent changes made to the game&lt;br /&gt;
* [[WesnothRepository]] - accessing the source code&lt;br /&gt;
* [[HackingWesnoth]] - guide for programmers&lt;br /&gt;
* [[CodingStandards]] - for programmers&lt;br /&gt;
* [[DeveloperGuide]] - for those who received repository commit rights&lt;br /&gt;
* [[Git_for_Wesnoth_Crash_Course]] - guide for contributors who are new to git / github&lt;br /&gt;
* [[SoftwareTesting]] - for programmers&lt;br /&gt;
* [//www.wesnoth.org/units/trunk/animations.html Missing unit animations] - what's available and what's missing&lt;br /&gt;
* [[Wesnoth_AI]] - starting point for AI documentation&lt;br /&gt;
* [[ThemeSystem]] - customizing the screen layout for the game and the editor&lt;br /&gt;
* [[ReleasingWesnoth]] - steps to follow to release a new version&lt;br /&gt;
* [[EasyCoding]] - Bugs and features that are easy to implement for new coders&lt;br /&gt;
* [[NotSoEasyCoding]] - Bugs and features which are doable but lacking someone working on them&lt;br /&gt;
* [[WesnothdDesign]] - Guide to the design of wesnothd, the multiplayer server.&lt;br /&gt;
* [[SummerOfCodeIdeas]] - Ideas for Google summer of code&lt;br /&gt;
&lt;br /&gt;
==== Game translations ====&lt;br /&gt;
* [[GettextForTranslators]] - how to translate Wesnoth under [[GetText]]&lt;br /&gt;
* [[WesnothTranslations]] - translation maintainers contact information&lt;br /&gt;
&lt;br /&gt;
== About the Game ==&lt;br /&gt;
* [[WesnothPhilosophy]] - Dave on Wesnoth&lt;br /&gt;
* [[Timeline of Wesnoth]] - the timeline of Wesnoth campaigns&lt;br /&gt;
* [[Geography of Wesnoth]] - description of Wesnoth and surrounding lands&lt;br /&gt;
* [[WesnothFigures]] - notable figures of valorous and infamous deeds in Wesnoth&lt;br /&gt;
* [[WesnothReviews]] - third party reviews of Wesnoth&lt;br /&gt;
* [irc://irc.wesnoth.org/wesnoth #wesnoth] - our IRC channel&lt;br /&gt;
* [[Trailer]] - the Wesnoth trailer&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[UsefulLinks]]&lt;br /&gt;
* [//en.wikipedia.org/wiki/Battle_for_Wesnoth Wikipedia entry for Wesnoth]&lt;br /&gt;
* [[WikiHaiku]]&lt;br /&gt;
&lt;br /&gt;
== About this Wiki ==&lt;br /&gt;
* [[Help:Editing|Editing]] - learn how to edit pages&lt;br /&gt;
* [[Sandbox]] - experiment with the wiki&lt;br /&gt;
* [[WikiMigration]] - we were looking for a replacement for our old wiki (and ended up using Mediawiki)&lt;br /&gt;
&lt;br /&gt;
[[Category:Wesnoth Wiki]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Atreides&amp;diff=70316</id>
		<title>User:Atreides</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Atreides&amp;diff=70316"/>
		<updated>2023-01-02T17:14:22Z</updated>

		<summary type="html">&lt;p&gt;Atreides: A mini bio?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi there. I'm a relative newcomer to Wesnoth. I've been playing games for a loooong time though. Even more recently I've gotten into WML (and now LUA) and ended up updating more than a dozen abandoned add-ons. I even created a new one.&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Guide_to_UMC_Content&amp;diff=70315</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=70315"/>
		<updated>2023-01-02T02:58:28Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* Lonely Era (LE) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a guide to current-ish 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, as it is a wiki.&lt;br /&gt;
&lt;br /&gt;
This list covers add-ons for the latest 2 stable releases (1.14 and 1.16) of Wesnoth. There are archived versions of this page for [[Guide_to_UMC_Content/1.10|1.10]] and [[Guide_to_UMC_Content/1.12|1.12]].&lt;br /&gt;
&lt;br /&gt;
For content creators who loved an add-on that hasn't been added to 1.14 or 1.16 yet, and are wondering about taking it over, please ensure that its entry on the older (1.12 or 1.10) wiki page is up to date, add a link to the add-on's feedback thread in the forums, and generally do the tidy-up that doesn't need you to start changing the campaign, and then ask the old maintainer. (You should probably also wait a bit before assuming that a maintainer isn't already porting to 1.16).&lt;br /&gt;
&lt;br /&gt;
If you are looking for even more campaigns, please see the links in at the bottom of this page.&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;Version&amp;lt;/b&amp;gt; campaign version on the add-ons server&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;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;
Please note: If you didn't play the campaign, write the difficulty written on the add-ons server.&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. If you don't know which style is the campaign you are listing, don't write this.&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 1.14:&amp;lt;/b&amp;gt;&lt;br /&gt;
** see the list of statuses in the campaign blueprint&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;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;
&lt;br /&gt;
&lt;br /&gt;
== How to play for UMC factions ==&lt;br /&gt;
&lt;br /&gt;
=== Southern Nations by Elvenisko ===&lt;br /&gt;
[[How_to_play_Southern_Drakes|Southern Drakes]] |&lt;br /&gt;
[[How_to_play_Southern_Dwarves|Southern Dwarves]] |&lt;br /&gt;
[[How_to_play_Southern_Elves|Southern Elves]] |&lt;br /&gt;
[[How_to_play_Southern_Mages|Southern Mages]] |&lt;br /&gt;
[[How_to_play_Southern_Mercenaries|Southern Mercenaries]] |&lt;br /&gt;
[[How_to_play_Southern_Orcs|Southern Orcs]] |&lt;br /&gt;
[[How_to_play_Southern_Swamplords|Southern Swamplords]] |&lt;br /&gt;
[[How_to_play_Southern_Nations|Comparison]] |&lt;br /&gt;
[https://units.wesnoth.org/1.16/Southern_Nations/en_US/era_southern.html All units (can be out of date)]&lt;br /&gt;
&lt;br /&gt;
== Battle for Wesnoth 1.14 and newer ==&lt;br /&gt;
&lt;br /&gt;
=== Campaigns ===&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:''' shadowm/ShikadiQueen/Iris&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished, 0.10.11&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;
'''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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=32091]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/project-ethea/After_the_Storm]&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;
====A Beastly Tale====&lt;br /&gt;
&lt;br /&gt;
''When a small village is beset by troubles, its fate rests in the hands of a young woodsman and the animals he befriends.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' GloccusV&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 2.0.3&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 5 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Intermediate&lt;br /&gt;
&lt;br /&gt;
'''Custom units:''' [//units.wesnoth.org/1.14/A_Beastly_Tale/en_US/A_Beastly_Tale.html Here]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=41434&amp;amp;p=633612&amp;amp;hilit=A+Beastly+Tale#p579093 Here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====A Song of the Winds====&lt;br /&gt;
&lt;br /&gt;
''Every era has its heroes and heroines. Before the song of Myra, the odyssey of Akhen Wadjet and the aria of Tenma Yozora, there was the song of the winds that echoed in the mountains and halls at the heart of the Great Continent. Follow young Maat of Hiera'Shirsha and Prince Abhai of Garet-Desh in the war that set the stage for one of the greatest upheavals Irdya has ever witnessed.&lt;br /&gt;
(Prequel to the Dragon Trilogy)''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' revansurik&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 43 scenarios (some of them dialogue-only)&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Intermediate&lt;br /&gt;
&lt;br /&gt;
'''Custom units:''' War of Legends + Custom factions&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//https://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=53913 Here]&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:''' Complete 1.10.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 20 scenarios&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=31348]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/doofus-01/wesnoth-Bad_Moon_Rising]&lt;br /&gt;
&lt;br /&gt;
====  The Black Cross of Aleron ====&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 2.0.3&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 scenarios&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;
'''[https://units.wesnoth.org/1.14/Black_Cross_of_Aleron/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;
==== 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, 1.3.2&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 12 scenarios&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;
'''[//units.wesnoth.org/1.14/Danse_Macabre/en_US/Danse_Macabre.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//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.14 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;
&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 than expected.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Paulomat4&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' egallager&lt;br /&gt;
&lt;br /&gt;
'''Status:''' [https://github.com/cooljeanius/dawn_of_thunder/issues/3 Incomplete], latest release on the BfW 1.16 add-on server is [https://github.com/cooljeanius/dawn_of_thunder/releases/tag/0.2.2 0.2.2].&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 18 scenarios&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=39512]&lt;br /&gt;
&lt;br /&gt;
==== A Fiery Birth ====&lt;br /&gt;
&lt;br /&gt;
''A scholar of the Great Academy journeys to the land of the drakes to discover their secret origins.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Mathbrush&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.2.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=47861&amp;amp;p=623953 Here]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/brirush84/AFieryBirth]&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:''' Complete, 2.6.1&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 4 scenarios&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:''' [//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;
==== [[FlightToFreedom|Flight to Freedom]] ====&lt;br /&gt;
&lt;br /&gt;
''Flight to Freedom chronicles the story of the drake hero Malakar, and his desperate cross-country flight out of slavery.''&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' MadMax, Nova&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' egallager&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 20 playable scenarios + 1 dialogue-only, for a total of 21&lt;br /&gt;
&lt;br /&gt;
'''Version:''' [https://github.com/cooljeanius/Flight_Freedom/releases/tag/5.4.1 5.4.1]&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Expert&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Large Battle, Puzzle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Drakes&lt;br /&gt;
&lt;br /&gt;
'''Required Wesnoth version:''' 1.16+&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=1887]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/cooljeanius/Flight_Freedom]&lt;br /&gt;
&lt;br /&gt;
==== Inky's Quest ====&lt;br /&gt;
&lt;br /&gt;
''The Cuttlefish Campaign''&lt;br /&gt;
&lt;br /&gt;
''Are the cuttlefish mere beasts or something more? What stories would they tell if they could speak? This story provides one possible answer. The easiest difficulty provides hints for novice players.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Telchin&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 12 scenarios + story-only epilogue, for a total of 13&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.5.6&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Custom units (cuttlefish, tentacles, giant clams...). Enemies use both default era units and custom ones.&lt;br /&gt;
&lt;br /&gt;
'''[//units.wesnoth.org/1.14/Inky_Quest/en_US/Inky_Quest.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=32501]&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:''' shadowm/ShikadiQueen/Iris&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished, 2.1.9&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;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=43309]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/project-ethea/Invasion_from_the_Unknown]&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;
&lt;br /&gt;
==== Leader of the Drakes ====&lt;br /&gt;
&lt;br /&gt;
''Leader of the drakes is killed. His son tries to defend homeland against the orcs. He choosed to ally with saurians, but other clans of drakes disagrees. Will fast and unexperienced Morin win against orcs and rebel drakes alike?''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Elven&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete, 1.02b&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 3 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy/Medium&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Minigames&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, Drakes&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=53951&amp;amp;start=15]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Short, easy campaign with simple objectives. Features Drake Glider as leader and modified Drake Burner with cold and slowing blade.&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;
'''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;
'''Forum:''' [//r.wesnoth.org/t32384]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/Dugy/Legend_of_the_Invincibles]&lt;br /&gt;
&lt;br /&gt;
'''[[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;
==== A New Order ====&lt;br /&gt;
&lt;br /&gt;
''The old kingdom of Wesnoth has fallen before barbarian hordes. The occupying barbarians are on the brink of civil war, the seeds of Wesnothian rebellion are kept alive by old legends, while bandits and Dunefolk mercenaries roam the land. Can Gawen Hagarthen unite these disparate factions against a common foe?''&lt;br /&gt;
&lt;br /&gt;
''Note: This campaign contains mature themes, some of which may be unsuitable for children.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' szopen&lt;br /&gt;
&lt;br /&gt;
'''Maintainers:''' nemaara (Yumi), egallager&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Version:''' [https://github.com/nemaara/A_New_Order/releases/tag/1.5.0.1 1.5.0.1] (4th version digit is only because [https://github.com/nemaara/A_New_Order/releases/tag/1.5.0 1.5.0] was mis-tagged; the plan is to go back to the semver-standard of 3 version digits for the next release)&lt;br /&gt;
&lt;br /&gt;
'''Length:''' Hard to say as it is non-linear; it is advertised as having 45 scenarios, but the numbering only goes up to 30 due to some of the scenarios being alternates to one another.&lt;br /&gt;
&lt;br /&gt;
'''Requirements:''' Requires BfW 1.16+. Also uses the &amp;quot;Akladian Music&amp;quot; add-on.&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Advertised as intermediate; could be considered hard, though.&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Mostly Skirmish, some Large Battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' mostly various human factions (including the Dunefolk), with the addition of the Akladian faction of humans&lt;br /&gt;
&lt;br /&gt;
'''[//units.wesnoth.org/1.16/A_New_Order/en_US/A_New_Order.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=6486&amp;amp;sid=2e644284f54e65736b4f1543b7098ef9]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/nemaara/A_New_Order]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' (Pyrophorus) Certainly one of the most mature and well designed campaign in add-ons. A must.&lt;br /&gt;
&lt;br /&gt;
''' [http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#A_New_Order Players’ Review(s)]'''&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, 0.3.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 playable scenario, 6 intended&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=42854]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Ravagers====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' ''The Ravagers'' 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 such as drinking, 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;
'''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;
'''[//units.wesnoth.org/1.14/The_Ravagers/en_US/The_Ravagers.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=44930]&lt;br /&gt;
&lt;br /&gt;
'''*Notes:''' The main storyline is complete, but there are unfinished side-missions that are still in development. The campaign is aimed to become finished with version 1.2.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Return from the Abyss ====&lt;br /&gt;
&lt;br /&gt;
''After taking part to a disastrous expedition, Khafir and his men are lost and isolated from their people, thousands of miles away from home, bound by a pact sealed with a powerful dwarvish king. Help him escape from the depth of Irdya and finding his way back, in an adventure across two worlds during the rise of a sinister force in the Great Continent.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' skeptical_troll&lt;br /&gt;
&lt;br /&gt;
'''Status:''' finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 19 playable scenario + 10 story only&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Dungeon&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Dunefolk/Default&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=44545]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Rise of the Dunefolk ====&lt;br /&gt;
&lt;br /&gt;
''Adventure of Siabbin and Helare from small village in desert, who step by step made the foundation of the Dunefolk nation. Play a stunning adventure against many enemies in different maps - from sandstorm to swampy areas and caves. Defeat powerful lich lord and train one of the best dark mages in the world of Wesnoth.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Elven&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Completed&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 11 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Medium&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Minigames, Survival&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, Dunefolk and dark mage&lt;br /&gt;
&lt;br /&gt;
'''Note:''' enjoable gameplay with every map different. Enough experience to upgrade your units.&lt;br /&gt;
&lt;br /&gt;
==== The Return of the Darks ====&lt;br /&gt;
&lt;br /&gt;
''The Darks are a race which left Wesnoth in the ancient times and lives on Isles in the sky. But now the Magic wich helped them to move the Isles in Sky got lost and the isles are about to fall down. Rumion an adventurer goes to Wesnoth and searchs for something that could help them.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' thvk&lt;br /&gt;
&lt;br /&gt;
'''Status:''' WIP&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 4 playable scenario + 2 story only&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default + some self made units&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=52731]&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:''' Mainlined (this is now one of the campaigns that is downloaded with Wesnoth itself)&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 18 playable scenarios + 3 story only&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:''' [//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;
&lt;br /&gt;
==== Swamplings ====&lt;br /&gt;
&lt;br /&gt;
''Banished by Yushnak the Ponderer, a tribe of lowly swamp goblins endure in the deadly mire of Pogo Bog. Four centuries before the founding of Wesnoth, this is the story of the goblins' struggle against the intrigues and betrayals of the greater races, and the rise of the first wolf rider.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' John Rawlins (boru)&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.2.0i&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction:''' Goblins&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=41254]&lt;br /&gt;
&lt;br /&gt;
'''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#Swamplings Players’ Review(s)]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Dark Hordes ====&lt;br /&gt;
&lt;br /&gt;
''Lead fugitive dark sorcerer Gwiti Ha’atel to mastery of the undead hordes.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Circon&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Various&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Incomplete/WIP&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 15 scenarios done so far&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.1.2&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 undead&lt;br /&gt;
&lt;br /&gt;
'''[//units.wesnoth.org/1.10/The_Dark_Hordes/en_US/The_Dark_Hordes_1.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=16576&amp;amp;]&lt;br /&gt;
&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:''' Finished 0.11.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 5 scenarios&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=37880]&lt;br /&gt;
&lt;br /&gt;
'''Walkthrough''' There is a video-walkthrough by the campaign maintainer that begins  [https://www.youtube.com/watch?v=dGM1bjImvkI&amp;amp;list=PLZorLYWvUD7VIhaXxKwzO8iQANlp_TaF0 here].&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;
&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;
'''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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=31799]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/inferno8/wesnoth-To_Lands_Unknown]&lt;br /&gt;
&lt;br /&gt;
'''[[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, 1.0.14&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 13 playable scenarios + 1 dialogue-only&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;
'''[//units.wesnoth.org/1.10/A_Vision_Blinded/en_US/A_Vision_Blinded.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=23463]&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;
&lt;br /&gt;
==== '''Southern nations''' ====&lt;br /&gt;
&lt;br /&gt;
[[How_to_play_Southern_Nations|Everything about southern nations, including how to play series]] &lt;br /&gt;
&lt;br /&gt;
==== '''War of Legends''' ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A multiplayer era focused on the Dark Irdya Campaigns. Contains 15 factions.&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:''' Complete, new features being added for the 1.15.x version of the add-on&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 (Desert Elves)&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;
# Dunefolk&lt;br /&gt;
# Knalgan Alliance&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=30087 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/knyghtmare/War_of_Legends]&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, 3.1&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:''' [//forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=20039 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/inferno8/wesnoth-Era_of_Magic]&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, 4.19&lt;br /&gt;
&lt;br /&gt;
'''Unit Tree:''' [//units.wesnoth.org/1.12/Ageless_Era/en_US/Ageless%20Era.html Ageless Unit Tree (for 1.12)]&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;
'''Git:''' [https://github.com/ProditorMagnus/Ageless-for-1-11 Ageless-for-1-11] and also for 1.12 and [https://github.com/ProditorMagnus/Ageless-for-1-14 1.14]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//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:''' Complete, 0.23&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;
'''Wiki:''' [[Orbivm]]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?t=37920 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
==== Lonely Era (LE) ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The Lonely Era is a new collection of six selected superior solitary sides with interesting and unusual abilities, traits and attributes.&lt;br /&gt;
&lt;br /&gt;
It has been extensively revised and rebalanced over the last few years from the original era and the constituent factions.&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Atreides. Based on work by Shield, Desert_Shyde, Brilliand, Stern, Cloud, Grigistian, mikoc5, Stopsignal, The_Gnat, Minnakht.&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Atreides&lt;br /&gt;
&lt;br /&gt;
'''Status 1.16:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Faction Descriptions:'''&lt;br /&gt;
&lt;br /&gt;
1) Santa's Helpers are his Elves as well as animated pine trees. They are an updated faction based on the Merry Christmas Campaign. Beware of Elves bearing gifts though, the presents are very distracting. They are unique in not having standard levels, they each can gain up to 4 special abilities via AMLA but always remain at level 1. Of course there are also Flying Reindeer and Christmas Seals.&lt;br /&gt;
&lt;br /&gt;
2) Gremlins are an all teleporting race of elusive ethereal creatures. Individually fragile they work together using their tremendous mobility to swarm and overwhelm their enemies. Their mages are perhaps the ultimate glass cannons but if you can somehow keep one alive long enough it might even get to level 5 and become immortal.&lt;br /&gt;
&lt;br /&gt;
3) Vaeringjar are a Viking faction allied with Wolfkin. The vikings eschew ranged weapons as well as sissy ideas like dodging blows but are a very, very hardy lot. They also have a unique herbalist unit that can inspire berserker rage in adjacent vikings for a turn. The wolfkin are lithe and armed with bows and teeth on the other hand. They are also very agile in contrast to the vikings. As nocturnal hunters they are devastating at night and almost helpless in the day.&lt;br /&gt;
&lt;br /&gt;
4) Avians are cold loving, water hating bipedal birds. Their hollow bones and feathers make them vulnerable to fire and blunt weapons. They are unique in having cheap level 0 healers. Unusually their leaders are not drawn from the ranks but form a separate class only selectable as leaders. Tamed Albatrosses to patrol the awful waters.&lt;br /&gt;
&lt;br /&gt;
5) The Deep Ones - Slimy, slippery, blasphemous fish-frogs of the nameless design - living and horrible - have now been sighted on the edge of Wesnoth. Mutants who slowly evolve from human to monster these creatures are nothing to be trifled with! An all water faction they are quite capable of holding their own against the landlubbers.&lt;br /&gt;
&lt;br /&gt;
6) Jephrifs live far up in the sky, miles above land. Away from even the most basic things most other races take for granted, such as solid ground, their society developed to be quite alien indeed. In recent times, jephrifs began descending from the skies to participate in combat against other races - apparently for their own amusement, seeing life as a game.&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?t=42630 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
== Additional info ==&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;
* [//r.wesnoth.org/t37476 forum thread] for this page&lt;br /&gt;
* [[Guide_to_UMC_Content/1.12|Guide to user-made content (UMC) for Battle for Wesnoth 1.12]]&lt;br /&gt;
* [[Guide_to_UMC_Content/1.10|Guide to user-made content (UMC) for Battle for Wesnoth 1.10]]&lt;br /&gt;
* [//r.wesnoth.org/t36733 thread discussing 1.8 UMC that wasn't ported to 1.10]&lt;br /&gt;
* [//r.wesnoth.org/t48086 thread discussing all UMC that hasn't been ported to 1.14]&lt;br /&gt;
* [//addons.wesnoth.org the addon server]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Guide_to_UMC_Content&amp;diff=70314</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=70314"/>
		<updated>2023-01-02T02:56:02Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* Lonely Era (LE) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a guide to current-ish 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, as it is a wiki.&lt;br /&gt;
&lt;br /&gt;
This list covers add-ons for the latest 2 stable releases (1.14 and 1.16) of Wesnoth. There are archived versions of this page for [[Guide_to_UMC_Content/1.10|1.10]] and [[Guide_to_UMC_Content/1.12|1.12]].&lt;br /&gt;
&lt;br /&gt;
For content creators who loved an add-on that hasn't been added to 1.14 or 1.16 yet, and are wondering about taking it over, please ensure that its entry on the older (1.12 or 1.10) wiki page is up to date, add a link to the add-on's feedback thread in the forums, and generally do the tidy-up that doesn't need you to start changing the campaign, and then ask the old maintainer. (You should probably also wait a bit before assuming that a maintainer isn't already porting to 1.16).&lt;br /&gt;
&lt;br /&gt;
If you are looking for even more campaigns, please see the links in at the bottom of this page.&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;Version&amp;lt;/b&amp;gt; campaign version on the add-ons server&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;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;
Please note: If you didn't play the campaign, write the difficulty written on the add-ons server.&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. If you don't know which style is the campaign you are listing, don't write this.&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 1.14:&amp;lt;/b&amp;gt;&lt;br /&gt;
** see the list of statuses in the campaign blueprint&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;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;
&lt;br /&gt;
&lt;br /&gt;
== How to play for UMC factions ==&lt;br /&gt;
&lt;br /&gt;
=== Southern Nations by Elvenisko ===&lt;br /&gt;
[[How_to_play_Southern_Drakes|Southern Drakes]] |&lt;br /&gt;
[[How_to_play_Southern_Dwarves|Southern Dwarves]] |&lt;br /&gt;
[[How_to_play_Southern_Elves|Southern Elves]] |&lt;br /&gt;
[[How_to_play_Southern_Mages|Southern Mages]] |&lt;br /&gt;
[[How_to_play_Southern_Mercenaries|Southern Mercenaries]] |&lt;br /&gt;
[[How_to_play_Southern_Orcs|Southern Orcs]] |&lt;br /&gt;
[[How_to_play_Southern_Swamplords|Southern Swamplords]] |&lt;br /&gt;
[[How_to_play_Southern_Nations|Comparison]] |&lt;br /&gt;
[https://units.wesnoth.org/1.16/Southern_Nations/en_US/era_southern.html All units (can be out of date)]&lt;br /&gt;
&lt;br /&gt;
== Battle for Wesnoth 1.14 and newer ==&lt;br /&gt;
&lt;br /&gt;
=== Campaigns ===&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:''' shadowm/ShikadiQueen/Iris&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished, 0.10.11&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;
'''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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=32091]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/project-ethea/After_the_Storm]&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;
====A Beastly Tale====&lt;br /&gt;
&lt;br /&gt;
''When a small village is beset by troubles, its fate rests in the hands of a young woodsman and the animals he befriends.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' GloccusV&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 2.0.3&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 5 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Intermediate&lt;br /&gt;
&lt;br /&gt;
'''Custom units:''' [//units.wesnoth.org/1.14/A_Beastly_Tale/en_US/A_Beastly_Tale.html Here]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=41434&amp;amp;p=633612&amp;amp;hilit=A+Beastly+Tale#p579093 Here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====A Song of the Winds====&lt;br /&gt;
&lt;br /&gt;
''Every era has its heroes and heroines. Before the song of Myra, the odyssey of Akhen Wadjet and the aria of Tenma Yozora, there was the song of the winds that echoed in the mountains and halls at the heart of the Great Continent. Follow young Maat of Hiera'Shirsha and Prince Abhai of Garet-Desh in the war that set the stage for one of the greatest upheavals Irdya has ever witnessed.&lt;br /&gt;
(Prequel to the Dragon Trilogy)''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' revansurik&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 43 scenarios (some of them dialogue-only)&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Intermediate&lt;br /&gt;
&lt;br /&gt;
'''Custom units:''' War of Legends + Custom factions&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//https://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=53913 Here]&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:''' Complete 1.10.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 20 scenarios&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=31348]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/doofus-01/wesnoth-Bad_Moon_Rising]&lt;br /&gt;
&lt;br /&gt;
====  The Black Cross of Aleron ====&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 2.0.3&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 scenarios&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;
'''[https://units.wesnoth.org/1.14/Black_Cross_of_Aleron/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;
==== 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, 1.3.2&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 12 scenarios&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;
'''[//units.wesnoth.org/1.14/Danse_Macabre/en_US/Danse_Macabre.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//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.14 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;
&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 than expected.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Paulomat4&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' egallager&lt;br /&gt;
&lt;br /&gt;
'''Status:''' [https://github.com/cooljeanius/dawn_of_thunder/issues/3 Incomplete], latest release on the BfW 1.16 add-on server is [https://github.com/cooljeanius/dawn_of_thunder/releases/tag/0.2.2 0.2.2].&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 18 scenarios&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=39512]&lt;br /&gt;
&lt;br /&gt;
==== A Fiery Birth ====&lt;br /&gt;
&lt;br /&gt;
''A scholar of the Great Academy journeys to the land of the drakes to discover their secret origins.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Mathbrush&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.2.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=47861&amp;amp;p=623953 Here]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/brirush84/AFieryBirth]&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:''' Complete, 2.6.1&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 4 scenarios&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:''' [//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;
==== [[FlightToFreedom|Flight to Freedom]] ====&lt;br /&gt;
&lt;br /&gt;
''Flight to Freedom chronicles the story of the drake hero Malakar, and his desperate cross-country flight out of slavery.''&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' MadMax, Nova&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' egallager&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 20 playable scenarios + 1 dialogue-only, for a total of 21&lt;br /&gt;
&lt;br /&gt;
'''Version:''' [https://github.com/cooljeanius/Flight_Freedom/releases/tag/5.4.1 5.4.1]&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Expert&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Large Battle, Puzzle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Drakes&lt;br /&gt;
&lt;br /&gt;
'''Required Wesnoth version:''' 1.16+&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=1887]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/cooljeanius/Flight_Freedom]&lt;br /&gt;
&lt;br /&gt;
==== Inky's Quest ====&lt;br /&gt;
&lt;br /&gt;
''The Cuttlefish Campaign''&lt;br /&gt;
&lt;br /&gt;
''Are the cuttlefish mere beasts or something more? What stories would they tell if they could speak? This story provides one possible answer. The easiest difficulty provides hints for novice players.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Telchin&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 12 scenarios + story-only epilogue, for a total of 13&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.5.6&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Custom units (cuttlefish, tentacles, giant clams...). Enemies use both default era units and custom ones.&lt;br /&gt;
&lt;br /&gt;
'''[//units.wesnoth.org/1.14/Inky_Quest/en_US/Inky_Quest.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=32501]&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:''' shadowm/ShikadiQueen/Iris&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished, 2.1.9&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;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=43309]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/project-ethea/Invasion_from_the_Unknown]&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;
&lt;br /&gt;
==== Leader of the Drakes ====&lt;br /&gt;
&lt;br /&gt;
''Leader of the drakes is killed. His son tries to defend homeland against the orcs. He choosed to ally with saurians, but other clans of drakes disagrees. Will fast and unexperienced Morin win against orcs and rebel drakes alike?''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Elven&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete, 1.02b&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 3 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy/Medium&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Minigames&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, Drakes&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=53951&amp;amp;start=15]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Short, easy campaign with simple objectives. Features Drake Glider as leader and modified Drake Burner with cold and slowing blade.&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;
'''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;
'''Forum:''' [//r.wesnoth.org/t32384]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/Dugy/Legend_of_the_Invincibles]&lt;br /&gt;
&lt;br /&gt;
'''[[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;
==== A New Order ====&lt;br /&gt;
&lt;br /&gt;
''The old kingdom of Wesnoth has fallen before barbarian hordes. The occupying barbarians are on the brink of civil war, the seeds of Wesnothian rebellion are kept alive by old legends, while bandits and Dunefolk mercenaries roam the land. Can Gawen Hagarthen unite these disparate factions against a common foe?''&lt;br /&gt;
&lt;br /&gt;
''Note: This campaign contains mature themes, some of which may be unsuitable for children.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' szopen&lt;br /&gt;
&lt;br /&gt;
'''Maintainers:''' nemaara (Yumi), egallager&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Version:''' [https://github.com/nemaara/A_New_Order/releases/tag/1.5.0.1 1.5.0.1] (4th version digit is only because [https://github.com/nemaara/A_New_Order/releases/tag/1.5.0 1.5.0] was mis-tagged; the plan is to go back to the semver-standard of 3 version digits for the next release)&lt;br /&gt;
&lt;br /&gt;
'''Length:''' Hard to say as it is non-linear; it is advertised as having 45 scenarios, but the numbering only goes up to 30 due to some of the scenarios being alternates to one another.&lt;br /&gt;
&lt;br /&gt;
'''Requirements:''' Requires BfW 1.16+. Also uses the &amp;quot;Akladian Music&amp;quot; add-on.&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Advertised as intermediate; could be considered hard, though.&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Mostly Skirmish, some Large Battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' mostly various human factions (including the Dunefolk), with the addition of the Akladian faction of humans&lt;br /&gt;
&lt;br /&gt;
'''[//units.wesnoth.org/1.16/A_New_Order/en_US/A_New_Order.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=6486&amp;amp;sid=2e644284f54e65736b4f1543b7098ef9]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/nemaara/A_New_Order]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' (Pyrophorus) Certainly one of the most mature and well designed campaign in add-ons. A must.&lt;br /&gt;
&lt;br /&gt;
''' [http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#A_New_Order Players’ Review(s)]'''&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, 0.3.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 playable scenario, 6 intended&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=42854]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Ravagers====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' ''The Ravagers'' 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 such as drinking, 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;
'''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;
'''[//units.wesnoth.org/1.14/The_Ravagers/en_US/The_Ravagers.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=44930]&lt;br /&gt;
&lt;br /&gt;
'''*Notes:''' The main storyline is complete, but there are unfinished side-missions that are still in development. The campaign is aimed to become finished with version 1.2.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Return from the Abyss ====&lt;br /&gt;
&lt;br /&gt;
''After taking part to a disastrous expedition, Khafir and his men are lost and isolated from their people, thousands of miles away from home, bound by a pact sealed with a powerful dwarvish king. Help him escape from the depth of Irdya and finding his way back, in an adventure across two worlds during the rise of a sinister force in the Great Continent.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' skeptical_troll&lt;br /&gt;
&lt;br /&gt;
'''Status:''' finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 19 playable scenario + 10 story only&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Dungeon&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Dunefolk/Default&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=44545]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Rise of the Dunefolk ====&lt;br /&gt;
&lt;br /&gt;
''Adventure of Siabbin and Helare from small village in desert, who step by step made the foundation of the Dunefolk nation. Play a stunning adventure against many enemies in different maps - from sandstorm to swampy areas and caves. Defeat powerful lich lord and train one of the best dark mages in the world of Wesnoth.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Elven&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Completed&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 11 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Medium&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Minigames, Survival&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, Dunefolk and dark mage&lt;br /&gt;
&lt;br /&gt;
'''Note:''' enjoable gameplay with every map different. Enough experience to upgrade your units.&lt;br /&gt;
&lt;br /&gt;
==== The Return of the Darks ====&lt;br /&gt;
&lt;br /&gt;
''The Darks are a race which left Wesnoth in the ancient times and lives on Isles in the sky. But now the Magic wich helped them to move the Isles in Sky got lost and the isles are about to fall down. Rumion an adventurer goes to Wesnoth and searchs for something that could help them.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' thvk&lt;br /&gt;
&lt;br /&gt;
'''Status:''' WIP&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 4 playable scenario + 2 story only&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default + some self made units&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=52731]&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:''' Mainlined (this is now one of the campaigns that is downloaded with Wesnoth itself)&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 18 playable scenarios + 3 story only&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:''' [//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;
&lt;br /&gt;
==== Swamplings ====&lt;br /&gt;
&lt;br /&gt;
''Banished by Yushnak the Ponderer, a tribe of lowly swamp goblins endure in the deadly mire of Pogo Bog. Four centuries before the founding of Wesnoth, this is the story of the goblins' struggle against the intrigues and betrayals of the greater races, and the rise of the first wolf rider.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' John Rawlins (boru)&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.2.0i&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction:''' Goblins&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=41254]&lt;br /&gt;
&lt;br /&gt;
'''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#Swamplings Players’ Review(s)]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Dark Hordes ====&lt;br /&gt;
&lt;br /&gt;
''Lead fugitive dark sorcerer Gwiti Ha’atel to mastery of the undead hordes.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Circon&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Various&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Incomplete/WIP&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 15 scenarios done so far&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.1.2&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 undead&lt;br /&gt;
&lt;br /&gt;
'''[//units.wesnoth.org/1.10/The_Dark_Hordes/en_US/The_Dark_Hordes_1.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=16576&amp;amp;]&lt;br /&gt;
&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:''' Finished 0.11.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 5 scenarios&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=37880]&lt;br /&gt;
&lt;br /&gt;
'''Walkthrough''' There is a video-walkthrough by the campaign maintainer that begins  [https://www.youtube.com/watch?v=dGM1bjImvkI&amp;amp;list=PLZorLYWvUD7VIhaXxKwzO8iQANlp_TaF0 here].&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;
&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;
'''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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=31799]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/inferno8/wesnoth-To_Lands_Unknown]&lt;br /&gt;
&lt;br /&gt;
'''[[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, 1.0.14&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 13 playable scenarios + 1 dialogue-only&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;
'''[//units.wesnoth.org/1.10/A_Vision_Blinded/en_US/A_Vision_Blinded.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=23463]&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;
&lt;br /&gt;
==== '''Southern nations''' ====&lt;br /&gt;
&lt;br /&gt;
[[How_to_play_Southern_Nations|Everything about southern nations, including how to play series]] &lt;br /&gt;
&lt;br /&gt;
==== '''War of Legends''' ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A multiplayer era focused on the Dark Irdya Campaigns. Contains 15 factions.&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:''' Complete, new features being added for the 1.15.x version of the add-on&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 (Desert Elves)&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;
# Dunefolk&lt;br /&gt;
# Knalgan Alliance&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=30087 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/knyghtmare/War_of_Legends]&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, 3.1&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:''' [//forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=20039 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/inferno8/wesnoth-Era_of_Magic]&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, 4.19&lt;br /&gt;
&lt;br /&gt;
'''Unit Tree:''' [//units.wesnoth.org/1.12/Ageless_Era/en_US/Ageless%20Era.html Ageless Unit Tree (for 1.12)]&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;
'''Git:''' [https://github.com/ProditorMagnus/Ageless-for-1-11 Ageless-for-1-11] and also for 1.12 and [https://github.com/ProditorMagnus/Ageless-for-1-14 1.14]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//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:''' Complete, 0.23&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;
'''Wiki:''' [[Orbivm]]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?t=37920 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
==== Lonely Era (LE) ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The Lonely Era is a new collection of six selected superior solitary sides with interesting and unusual abilities, traits and attributes.&lt;br /&gt;
&lt;br /&gt;
It has been extensively revised and rebalanced over the last few years from the original era and the constituent factions.&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Atreides. Based on work by Shield, Desert_Shyde, Brilliand, Stern, Cloud, Grigistian, mikoc5, Stopsignal, The_Gnat, Minnakht.&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Atreides&lt;br /&gt;
&lt;br /&gt;
'''Status 1.16:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Faction Descriptions:''' 1) Santa's Helpers are his Elves as well as animated pine trees. They are an updated faction based on the Merry Christmas Campaign. Beware of Elves bearing gifts though, the presents are very distracting. They are unique in not having standard levels, they each can gain up to 4 special abilities via AMLA but always remain at level 1. Of course there are also Flying Reindeer and Christmas Seals.&lt;br /&gt;
&lt;br /&gt;
2) Gremlins are an all teleporting race of elusive ethereal creatures. Individually fragile they work together using their tremendous mobility to swarm and overwhelm their enemies. Their mages are perhaps the ultimate glass cannons but if you can somehow keep one alive long enough it might even get to level 5 and become immortal.&lt;br /&gt;
&lt;br /&gt;
3) Vaeringjar are a Viking faction allied with Wolfkin. The vikings eschew ranged weapons as well as sissy ideas like dodging blows but are a very, very hardy lot. They also have a unique herbalist unit that can inspire berserker rage in adjacent vikings for a turn. The wolfkin are lithe and armed with bows and teeth on the other hand. They are also very agile in contrast to the vikings. As nocturnal hunters they are devastating at night and almost helpless in the day.&lt;br /&gt;
&lt;br /&gt;
4) Avians are cold loving, water hating bipedal birds. Their hollow bones and feathers make them vulnerable to fire and blunt weapons. They are unique in having cheap level 0 healers. Unusually their leaders are not drawn from the ranks but form a separate class only selectable as leaders. Tamed Albatrosses to patrol the awful waters.&lt;br /&gt;
&lt;br /&gt;
5) The Deep Ones - Slimy, slippery, blasphemous fish-frogs of the nameless design - living and horrible - have now been sighted on the edge of Wesnoth. Mutants who slowly evolve from human to monster these creatures are nothing to be trifled with! An all water faction they are quite capable of holding their own against the landlubbers.&lt;br /&gt;
&lt;br /&gt;
6) Jephrifs live far up in the sky, miles above land. Away from even the most basic things most other races take for granted, such as solid ground, their society developed to be quite alien indeed. In recent times, jephrifs began descending from the skies to participate in combat against other races - apparently for their own amusement, seeing life as a game.&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?t=42630 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
== Additional info ==&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;
* [//r.wesnoth.org/t37476 forum thread] for this page&lt;br /&gt;
* [[Guide_to_UMC_Content/1.12|Guide to user-made content (UMC) for Battle for Wesnoth 1.12]]&lt;br /&gt;
* [[Guide_to_UMC_Content/1.10|Guide to user-made content (UMC) for Battle for Wesnoth 1.10]]&lt;br /&gt;
* [//r.wesnoth.org/t36733 thread discussing 1.8 UMC that wasn't ported to 1.10]&lt;br /&gt;
* [//r.wesnoth.org/t48086 thread discussing all UMC that hasn't been ported to 1.14]&lt;br /&gt;
* [//addons.wesnoth.org the addon server]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=EraWML&amp;diff=70313</id>
		<title>EraWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=EraWML&amp;diff=70313"/>
		<updated>2023-01-02T02:50:18Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* The [era] top level tag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== The [era] top level tag ==&lt;br /&gt;
&lt;br /&gt;
This tag describes one era. An era is a set of teams to play in multiplayer.&lt;br /&gt;
&lt;br /&gt;
In the multiplayer game creation screen, an era is chosen by the host by the 'Era' option button.&lt;br /&gt;
&lt;br /&gt;
The following key/tags are recognized for '''[era]'''&lt;br /&gt;
* '''id''': ID of the era - must be unique. No gameplay effect&lt;br /&gt;
* '''name''': displayed name of the era.&lt;br /&gt;
* '''description''': a short description of the era.&lt;br /&gt;
* &amp;lt;span id=&amp;quot;require_era&amp;quot;&amp;gt;'''require_era'''&amp;lt;/span&amp;gt;: whether clients are required to have this era installed beforehand to be allowed join a game using this era. Possible values 'yes' (the default) and 'no'.&lt;br /&gt;
* '''allow_scenario''': a list of scenario ids. Only the scenarios with matching ids will be allowed to be played with this era.&lt;br /&gt;
* '''disallow_scenario''': a list of scenario ids. Only the scenarios with matching ids will not be allowed to be played with this era. Cannot be used in parallel with allow_scenario.&lt;br /&gt;
* '''ignore_incompatible_scenario''': a list of scenario ids. The scenarios with matching ids will be considered compatible with this era regardless their dependencies.&lt;br /&gt;
* '''allow_modification''': same as allow_scenario, but for modifications.&lt;br /&gt;
* '''disallow_modification''': same as disallow_scenario, but for modifications. Cannot be used in parallel with allow_modification.&lt;br /&gt;
* '''ignore_incompatible_modification''': same as ignore_incompatible_scenario, but for modifications.&lt;br /&gt;
* '''force_modification''': a list of modification ids. The specified modifications must be enabled to play this era.&lt;br /&gt;
* '''addon_min_version''': {{DevFeature1.13|0}} the minimum version of your add-on with which this content is backwards compatible. Compare with the version string given in [[PblWML]]. If ''addon_min_version'' is not explicitly specified, it means compatible only with the same version. Clients in multiplayer must have add-on versions agreeing with the ''addon_min_versions'' of eachothers content in order to play, and will be prompted to update otherwise.&lt;br /&gt;
* '''hide_help''': {{DevFeature1.13|0}} whether this era should show up in the help browser or not. Default no.&lt;br /&gt;
* '''[multiplayer_side]''': a faction in the era. This tag contains many of the same keys as a [side] tag (A description of the [side] tag can be found in [[SideWML]]). When a multiplayer game is played, then the [side] tag for the scenario is merged with the keys(currently, not tags) of the [multiplayer_side] tag of the faction which the side chose.&lt;br /&gt;
** '''id''': faction ID - must be unique to your era. No gameplay effect&lt;br /&gt;
** '''name''': a description that Wesnoth displays as the option selecting that faction.&lt;br /&gt;
** '''image''': an image to display in the option. This image will use the team color.&lt;br /&gt;
** '''flag_rgb''': often set by [http://www.wesnoth.org/macro-reference.xhtml#MAGENTA_IS_THE_TEAM_COLOR MAGENTA_IS_THE_TEAM_COLOR]&lt;br /&gt;
** '''leader''': a list of unit types. Must be present. When this faction is chosen, the side can choose any of these unit types to be the side's leader (i.e. &amp;quot;Choose your Leader&amp;quot;). They will also have the option of having one of these types being chosen randomly.&lt;br /&gt;
** '''random_leader''': if this list of types is present, it would use this list to instead to choose a random leader. If not it would use '''leader'''&lt;br /&gt;
** '''random_faction''': default 'no'. If 'yes', then when this faction is chosen, another non random faction will be randomly chosen instead. The leader will also be chosen randomly. All random_faction=yes factions are sorted before other factions.&lt;br /&gt;
** '''choices''': Empty by default. If non-empty and the faction has '''random_faction=yes''', it is the list of the IDs of the non random factions that will be choosen randomly. If empty, any faction can be chosen.&lt;br /&gt;
** '''except''': Empty by default. If the faction has random_faction=yes, it is the list of the IDs of the non random factions that will not be choosen randomly.&lt;br /&gt;
** '''type''': the unit type of the default leader for the side. This must be present. 'random' is a valid value here and will cause a random leader choice by default. As of 1.16.2 at least this key has no effect and is not required to be present.&lt;br /&gt;
** '''recruit''': a comma-separated list of unit types this faction can recruit.&lt;br /&gt;
** '''extra_recruit''': a comma-separated list of unit types appended to the leader recruitlist (see [[SingleUnitWML]]).&lt;br /&gt;
** '''terrain_liked''': an unseparated list of terrains (see [[TerrainCodesWML]]). On random maps, these terrains will determine which keep the side is assigned, attempting to put it near the listed terrains.&lt;br /&gt;
** '''description''': a short description of the faction, displayed in the help browser.&lt;br /&gt;
* '''[event]''': any [event]s written inside the [era] tag will get included into scenarios that are played using this era. See [[EventWML]].&lt;br /&gt;
* '''[lua]''': any [lua] children written inside the [era] tag will get included into scenarios that are played using this era.&lt;br /&gt;
* '''[options]''': custom options. See [[OptionWML]] for details.&lt;br /&gt;
* '''[ai]''': See [[AiWML]] for details.&lt;br /&gt;
* '''[modify_unit_type]''': {{DevFeature1.15|2}} Applies minor modifications to existing unit types when this era is active. See entry in [[ModificationWML]] for list of possible attributes.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
* [[SideWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=How_to_play_Southern_Orcs&amp;diff=70261</id>
		<title>How to play Southern Orcs</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=How_to_play_Southern_Orcs&amp;diff=70261"/>
		<updated>2022-12-17T17:51:37Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* Basic strategy */ fixed typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Alignment ==&lt;br /&gt;
&lt;br /&gt;
Southern orcs are mostly neutral, in comparison to the standard orcs. Few units remain chaotic, so they are good during the night or in the underground.&lt;br /&gt;
&lt;br /&gt;
== Core units ==&lt;br /&gt;
&lt;br /&gt;
'''Goblin Pikeman I-II''' - Very basic and offense oriented unit, good against horsemen or drakes. Cheap and fragile.&lt;br /&gt;
&lt;br /&gt;
'''Greenie Messenger''' - Level 0 unit, that can quickly get villages. Ineffective in combat. Patriarchs can upgrade their strength with their leadership.&lt;br /&gt;
&lt;br /&gt;
'''Orcish Bowman I-III''' - Poison specialist, with ranged and melee poison weapons. Also have access to fire damage. Can be upgraded to orcish Crossbow and lose all the specialities, but gain very powerful single ranged attack.&lt;br /&gt;
&lt;br /&gt;
'''Orcish Heavy Infantry I-IV''' - Core of the southern orcish army. With very good armor, these fighters are very strong and resilient, so enemy have to use cold or fire to kill them. Slow and expensive, but very useful to hold the line or attack. With hammers, they can smash skeletons. Pair heavy infantry with patriarchs and bowmen/crossbowmen.&lt;br /&gt;
&lt;br /&gt;
'''Orcish Light Infantry I-III''' - Light fighter, that is hard to hit by non-magic enemies. Not very deadly, but fast. Maneuverable, but they are not heavy hitters. They are chaotic, stronger during the night.&lt;br /&gt;
&lt;br /&gt;
'''Orcish Medium Infantry I-III''' - Almost like classic grunts, but stronger, with 2 very similar melee attacks, that helps a bit when needed. Many attacks, but weaker. Good all around unit, that is also faster than expected. No ranged attack.&lt;br /&gt;
&lt;br /&gt;
'''Orcish Patriarch I-IV''' - Leader, not very strong in battle. leadership and cold damage make them a good combo with medium or heavy infantry, or with level 0 messengers. Chaotic. They can also heal +4 all units and hold the line, while other units are in the village or behind the patriarch.&lt;br /&gt;
&lt;br /&gt;
== Level 2+ units ==&lt;br /&gt;
&lt;br /&gt;
'''Orcish Crossbow II-III''' - Mixture between classic orcish crossbowman and dwarvish thunderers. Good when used correctly against the correct enemy. &lt;br /&gt;
&lt;br /&gt;
'''Orcish Messenger I-II''' - Scout. Good resistances to fire and cold, so they can hunt down mages and dark adepts - or survive longer against them, when they block their retreat path.&lt;br /&gt;
&lt;br /&gt;
== Basic strategy ==&lt;br /&gt;
&lt;br /&gt;
As leader, you can use a partriarch. Generally a good unit that can help others gain experience faster. Also you can go for bowman to get access to poison early on. Another variant is light infantry, if you wish to take villages early on with leader.&lt;br /&gt;
&lt;br /&gt;
Use messengers to get far villages. Do not buy too many of them, because they are not very strong. Many of your units are good in defending villages.&lt;br /&gt;
&lt;br /&gt;
Many of your units are neutral, so try to use this to your advantage. During the night, try to attack with help of your patriarchs and bowmen. &lt;br /&gt;
&lt;br /&gt;
Combine patriarchs (leadership, slowing, healing) with bowmen (poison) to weaken enemy. use your infantry to smash them. You do not have any mages and any weak units (with exception of level 0 scout), so you do not need to heal so much. However, at least one fifth of your army should be patriarchs. &lt;br /&gt;
&lt;br /&gt;
Against special enemies, add these units:&lt;br /&gt;
&lt;br /&gt;
* Anyone strong and not magic oriented should be slowed and killed by heavy hitters like heavy infantry.&lt;br /&gt;
* Mages can be killed with light infantry, medium infantry or messengers.&lt;br /&gt;
* Drakes are weak to cold, pierce and arcane. You have two options. Kill them in melee with your strong units, or slow them (patriarch) and damage them by poison (bowmen). Also crossbows are very effective.&lt;br /&gt;
* Elves in forests can be poisoned by your bowmen, same as dwarves in mountains. Poison is very good in most situations and not everyone dare to attack bowmen in melee combat. It means that you can have a lot of them, and still enemy will prefer attack your more melee oriented units, like classic infantry.&lt;br /&gt;
&lt;br /&gt;
== Upgrading ==&lt;br /&gt;
&lt;br /&gt;
High priority: patriarchs, bowmen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Guide_to_UMC_Content#How_to_play_for_UMC_factions|Other UMC factions gameplay]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=How_to_play_Southern_Orcs&amp;diff=70260</id>
		<title>How to play Southern Orcs</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=How_to_play_Southern_Orcs&amp;diff=70260"/>
		<updated>2022-12-17T17:48:36Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* Core units */ typos fixed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Alignment ==&lt;br /&gt;
&lt;br /&gt;
Southern orcs are mostly neutral, in comparison to the standard orcs. Few units remain chaotic, so they are good during the night or in the underground.&lt;br /&gt;
&lt;br /&gt;
== Core units ==&lt;br /&gt;
&lt;br /&gt;
'''Goblin Pikeman I-II''' - Very basic and offense oriented unit, good against horsemen or drakes. Cheap and fragile.&lt;br /&gt;
&lt;br /&gt;
'''Greenie Messenger''' - Level 0 unit, that can quickly get villages. Ineffective in combat. Patriarchs can upgrade their strength with their leadership.&lt;br /&gt;
&lt;br /&gt;
'''Orcish Bowman I-III''' - Poison specialist, with ranged and melee poison weapons. Also have access to fire damage. Can be upgraded to orcish Crossbow and lose all the specialities, but gain very powerful single ranged attack.&lt;br /&gt;
&lt;br /&gt;
'''Orcish Heavy Infantry I-IV''' - Core of the southern orcish army. With very good armor, these fighters are very strong and resilient, so enemy have to use cold or fire to kill them. Slow and expensive, but very useful to hold the line or attack. With hammers, they can smash skeletons. Pair heavy infantry with patriarchs and bowmen/crossbowmen.&lt;br /&gt;
&lt;br /&gt;
'''Orcish Light Infantry I-III''' - Light fighter, that is hard to hit by non-magic enemies. Not very deadly, but fast. Maneuverable, but they are not heavy hitters. They are chaotic, stronger during the night.&lt;br /&gt;
&lt;br /&gt;
'''Orcish Medium Infantry I-III''' - Almost like classic grunts, but stronger, with 2 very similar melee attacks, that helps a bit when needed. Many attacks, but weaker. Good all around unit, that is also faster than expected. No ranged attack.&lt;br /&gt;
&lt;br /&gt;
'''Orcish Patriarch I-IV''' - Leader, not very strong in battle. leadership and cold damage make them a good combo with medium or heavy infantry, or with level 0 messengers. Chaotic. They can also heal +4 all units and hold the line, while other units are in the village or behind the patriarch.&lt;br /&gt;
&lt;br /&gt;
== Level 2+ units ==&lt;br /&gt;
&lt;br /&gt;
'''Orcish Crossbow II-III''' - Mixture between classic orcish crossbowman and dwarvish thunderers. Good when used correctly against the correct enemy. &lt;br /&gt;
&lt;br /&gt;
'''Orcish Messenger I-II''' - Scout. Good resistances to fire and cold, so they can hunt down mages and dark adepts - or survive longer against them, when they block their retreat path.&lt;br /&gt;
&lt;br /&gt;
== Basic strategy ==&lt;br /&gt;
&lt;br /&gt;
As leader, you can use a partriarch. Generally a good unit that can help others gain experience faster. Also you can go for bowman to get access to poison early on. Another variant is lifht infantry, if you wish to take villages early on with leader.&lt;br /&gt;
&lt;br /&gt;
Use messengers to get far villages. Do not buy too much of them, because they are not very strong. Many of your units are good in defending villages.&lt;br /&gt;
&lt;br /&gt;
Many of your units are neutral, so try to use this to your advantage. During the night, try to attack with help of your patriarchs and bowmen. &lt;br /&gt;
&lt;br /&gt;
Combine patriarchs (leadership, slowing, healing) with bowmen (poison) to weaken enemy. use your infantry to smash them. You do not have any mages and any weak units (with exception of level 0 scout), so you do not need to heal so much. However, at least one fifth of your army should be patriarchs. &lt;br /&gt;
&lt;br /&gt;
Against special enemies, add these units:&lt;br /&gt;
&lt;br /&gt;
* Anyone strong and not magic oriented should be slowed and killed by heavy hitters like heavy infantry.&lt;br /&gt;
* Mages can be killed with light infantry, medium infantry or messengers.&lt;br /&gt;
* Drakes are weak to cold, pierce and arcane. You have two options. Kill them in melee with your strong units, or slow them (patriarch) and damage them by poison (bowmen). Also crossbows are very effective.&lt;br /&gt;
* Elves in forests can be poisoned by your bowmen, same as dwarves in mountains. Poison is very good in most situations and not everyone dare to attack bowmen in melee combat. It means that you can have a lot of them, and still enemy will prefer attack your more melee oriented units, like classic infantry.&lt;br /&gt;
&lt;br /&gt;
== Upgrading ==&lt;br /&gt;
&lt;br /&gt;
High priority: patriarchs, bowmen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Guide_to_UMC_Content#How_to_play_for_UMC_factions|Other UMC factions gameplay]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=69328</id>
		<title>ImagePathFunctions</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=69328"/>
		<updated>2022-02-14T20:08:08Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* SCALE_INTO_SHARP function */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image Path Functions provide a simple method for WML coders to alter the way their specified images will be displayed in the game. All of the function parameters are included at the end of an image path and should not contain any spaces or special characters (other than those specified here).&lt;br /&gt;
&lt;br /&gt;
If you need to practice it without having to reload all WML, you can use an add-on named ''Image loading tester''.  It is available on the 1.9, 1.10, 1.11, 1.12 and 1.14 add-on servers.&lt;br /&gt;
&lt;br /&gt;
All functions are applied in left-to-right order, with the exception of RC(), TC() and PAL() which are applied always before any other functions. Standard team coloring for a unit is applied after all custom RC(), TC() and PAL() functions but before any other functions.&lt;br /&gt;
That is, stuff like&lt;br /&gt;
 &amp;quot;units/elves-wood/fighter.png~CROP(20,20,40,40)~CROP(10,10,10,10)&amp;quot;&lt;br /&gt;
would result in taking a crop to a 40x40 rectangle whose top-left corner is x=20, y=20; and then taking a crop from ''that'' rectangle with x=10, y=10, w=10, h=10. The result is the area x=30, y=30, w=10, h=10 from the original graphic.&lt;br /&gt;
&lt;br /&gt;
== Changing the colors ==&lt;br /&gt;
&lt;br /&gt;
=== BLEND: Color-blend function ===&lt;br /&gt;
Blends the image with the given color to produce a more controlled tinting effect than color-shifting, independently of the image's contents.&lt;br /&gt;
&lt;br /&gt;
'''~BLEND(r,g,b,o)'''&lt;br /&gt;
&lt;br /&gt;
The color is defined by the ''r'', ''g'', and ''b'' parameters (integers ranging from 0 to 255). The ''o'' (opacity) parameter controls the amount by which the given color will be blended into the image, and may be specified either as a factor from 0.0 to 1.0, or percentage up to 100%. Thus, ~BLEND(r,g,b,0.5) and ~BLEND(r,g,b,50%) are equivalent.&lt;br /&gt;
&lt;br /&gt;
=== BW: Black and White function ===&lt;br /&gt;
{{devfeature1.13|1}}&lt;br /&gt;
May be used to convert the image to pure black and white, without grey pixels. &lt;br /&gt;
&lt;br /&gt;
'''~BW(threshold)'''&lt;br /&gt;
* ''threshold'': a value between 0 and 255 (both limits included). All pixels are converted as greyscale first, and if their average value is greater than the threshold they become white, otherwise they become black.&lt;br /&gt;
&lt;br /&gt;
=== CS: Color-shift function ===&lt;br /&gt;
Performs simple per-channel color shifts by adding the arguments to the respective color channels.&lt;br /&gt;
&lt;br /&gt;
''Multi-channel:'' '''~CS(r,g,b)'''&lt;br /&gt;
''Single-channel:'' '''~R(v)''', '''~G(v)''', '''~B(v)'''&lt;br /&gt;
&lt;br /&gt;
The multichannel syntax assumes all arguments are set to zero initially, so one can use, e.g. ~CS(2,4) to add +2 and +4 units to the red and green channels respectively, leaving the blue channel intact. Arguments may be negative to diminish a channel's value; this can be used to change an image's brightness. Checks for out-of-range arguments or results (less than 0 or greater than 255) are made, so the resultant values are truncated if necessary.&lt;br /&gt;
&lt;br /&gt;
The single channel syntax behaves exactly the same, except that only single-channel modifications are made per function. However, one can stack them to produce the same behavior as ~CS(), e.g. ~R(r)~G(g)~B(b), but that tends to be just a performance loss.&lt;br /&gt;
&lt;br /&gt;
=== GS: Greyscale function ===&lt;br /&gt;
May be used to greyscale the image (turn to black and white)&lt;br /&gt;
&lt;br /&gt;
'''~GS( )'''&lt;br /&gt;
&lt;br /&gt;
=== L: Lightmap color-shift function ===&lt;br /&gt;
Performs per-pixel and per-channel color shifts using another image (a &amp;quot;lightmap&amp;quot;) as source, allowing to create textured light effects.&lt;br /&gt;
&lt;br /&gt;
'''~L(lightmap)'''&lt;br /&gt;
&lt;br /&gt;
For each pixel of the original image, it checks the RGB values from the corresponding pixel of the lightmap, slightly transform them, then add these values to the original pixel.&lt;br /&gt;
&lt;br /&gt;
The transformation involved is done to convert the (0,255) spectrum to (-255,255), allowing to add or subtract color. The formula is (x-128)*2, which means that 0 gives -256, 128 gives 0 and 255 gives 254. So, the no-effect lightmap is a fully grey image (RGB = 128,128,128) and any non-grey pixel will shift the colors of the original.&lt;br /&gt;
&lt;br /&gt;
Note that the lightmap will be scaled to the same dimensions as the original image.&lt;br /&gt;
&lt;br /&gt;
=== NEG: Negative function ===&lt;br /&gt;
{{devfeature1.13|0}}&lt;br /&gt;
Also known as ''invert'', it negates all the RGB values of the image, giving it an effect similar to a photographic negative.&lt;br /&gt;
&lt;br /&gt;
'''~NEG( )'''&lt;br /&gt;
&lt;br /&gt;
Inverts the image, giving it an effect like a photographic negative.&lt;br /&gt;
&lt;br /&gt;
{{devfeature1.13|1}} '''~NEG(''' ''threshold'' ''')'''&lt;br /&gt;
&lt;br /&gt;
If a channel has a value greater than the threshold, the channel will be inverted, performing an effect known as ''solarization''.&lt;br /&gt;
Threshold must be between -1 and 255, with -1 equivalent to full inversion and 255 as no-op value.&lt;br /&gt;
&lt;br /&gt;
{{devfeature1.13|1}} '''~NEG(''' ''threshold_red, threshold_green, threshold_blue'' ''')'''&lt;br /&gt;
&lt;br /&gt;
If a channel has a value greater than the corresponding threshold, the channel will be inverted.&lt;br /&gt;
Each threshold must be between -1 and 255, with -1 equivalent to full inversion and 255 as no-op value.&lt;br /&gt;
&lt;br /&gt;
=== PAL: Palette-switch function ===&lt;br /&gt;
May be used to change colors in an image following the specifications of a source and target (new) palette.&lt;br /&gt;
&lt;br /&gt;
'''~PAL(''' ''source color palette'' '''&amp;gt;''' ''target color palette'' ''')'''&lt;br /&gt;
*''source color palette'' - the first parameter is a source color palette, such as magenta. Do not surround this parameter with quotes.&lt;br /&gt;
*''target color palette'' - the new palette to take the place of the source colors in the image.&lt;br /&gt;
&lt;br /&gt;
=== RC: Re-Color function ===&lt;br /&gt;
May be used to change some colors in an image. It is possible to use ''RC'' more than once on the same image, with different source palettes.&lt;br /&gt;
&lt;br /&gt;
'''~RC(''' ''source color palette'' '''&amp;gt;''' ''destination color range'' ''')'''&lt;br /&gt;
&lt;br /&gt;
==== source color palette ====&lt;br /&gt;
The first parameter is a set of colors, usually the magenta palette. Do not surround this parameter with quotes. The three standard palettes are:&lt;br /&gt;
&lt;br /&gt;
* '''magenta''' - the 19 colors described in [[Team_Color_Shifting]]&lt;br /&gt;
* '''ellipse_red''' - all 255 colors with RGB value (n,0,0)&lt;br /&gt;
* '''flag_green''' - all 255 colors with RGB value (0,n,0)&lt;br /&gt;
&lt;br /&gt;
The palette can also be given inline as a set of hexadecimal RGB values.&lt;br /&gt;
&lt;br /&gt;
The named palettes are defined using the '''[[GameConfigWML#Color_Palettes|[color_palette]]]''' tag, and you can also define your own custom color palette using that tag.&lt;br /&gt;
&lt;br /&gt;
Warning: the RC function will also accept (and not give a warning about) '''red''', '''green''' and any other defined '''[color_range]'''; however the set of RGB values for those aren't guaranteed. Using '''red''' instead of '''ellipse_red''' might be equivalent to the palette 030000,060000,0a0000,...,ff0000,ff0a0a,...,fff0f0.&lt;br /&gt;
&lt;br /&gt;
==== destination color range ====&lt;br /&gt;
This is the second parameter, signifying the ID of a color range defined in the file [http://github.com/wesnoth/wesnoth/blob/master/data/core/team-colors.cfg data/core/team-colors.cfg] (or it may be a custom ID for a color range defined locally). You can also define a custom color range inline (the rgb key from [[GameConfigWML#Color_Palettes]]; note that RC does not use the fourth color for anything).&lt;br /&gt;
&lt;br /&gt;
For this destination color range, using '''red''' or '''green''' makes sense.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
In the following example, the magenta regions in an elvish captain's image are turned a healthy shade of green:&lt;br /&gt;
&lt;br /&gt;
  [message]&lt;br /&gt;
      speaker=narrator&lt;br /&gt;
      image=units/elves-wood/captain.png~RC(magenta&amp;gt;green)&lt;br /&gt;
      message=_ &amp;quot;Now I am on the green team.&amp;quot;&lt;br /&gt;
  [/message]&lt;br /&gt;
&lt;br /&gt;
The following example replaces a few of the '''magenta''' pixels with green ones:&lt;br /&gt;
&lt;br /&gt;
  misc/orb.png~RC(690039,c30074,ec008c &amp;gt; 007f00,00ff00,000000,000000)&lt;br /&gt;
&lt;br /&gt;
The IDs of the color ranges may be the lowercased English name of the palette's base color (e.g. 'red', 'brown', etc.). They may also be numeric color indices from the palette WML included with the game, but this is not recommended.&lt;br /&gt;
&lt;br /&gt;
=== SEPIA: Sepia function ===&lt;br /&gt;
{{devfeature1.13|0}}&lt;br /&gt;
May be used to give to the image a sepia tint (like in old pictures).&lt;br /&gt;
&lt;br /&gt;
'''~SEPIA()'''&lt;br /&gt;
&lt;br /&gt;
=== SWAP: Channel Swap function ===&lt;br /&gt;
{{devfeature1.13|1}}&lt;br /&gt;
May be used to swap the RGBA channels of an image.&lt;br /&gt;
&lt;br /&gt;
'''~SWAP(''' ''r, g, b'' ''')'''&lt;br /&gt;
'''~SWAP(''' ''r, g, b, a'' ''')'''&lt;br /&gt;
* ''r'', ''g'', ''b'', ''a'': each of these arguments may have a value equal to ''red'', ''green'', ''blue'' or ''alpha''. The RGBA channels of the original image will be exchanged accordingly (for example, &amp;lt;tt&amp;gt;~SWAP(blue,green,red)&amp;lt;/tt&amp;gt; swaps the blue and red channels).&lt;br /&gt;
&lt;br /&gt;
=== TC: Team-Color function ===&lt;br /&gt;
In Wesnoth version 1.2, the only Image Path Function was '''~TC()''', which took two comma-separated parameters: the team number and the source color palette. The valid values for both of these parameters are defined in the file ''data/team-colors.cfg''&lt;br /&gt;
&lt;br /&gt;
'''~TC(''' ''team number'' ''',''' ''source color palette'' ''')'''&lt;br /&gt;
*''team number'' - this is the first parameter, a number 1-9 signifying the team number of a unit. Number 1 typically means the red team, 2 typically means the blue team, and so on (unless the scenario color settings for any side have been altered).&lt;br /&gt;
*''source color palette'' - the second parameter is a source color palette, usually magenta. Do not surround this parameter with quotes.&lt;br /&gt;
&lt;br /&gt;
== Transformations ==&lt;br /&gt;
&lt;br /&gt;
=== FL: Flip function ===&lt;br /&gt;
May be used to flip an image horizontally and/or vertically.&lt;br /&gt;
&lt;br /&gt;
'''~FL(''' ''optional argument list'' ''')'''&lt;br /&gt;
*''vertical'' - if the string &amp;quot;vert&amp;quot; is found anywhere in the argument list, the image will be flipped vertically.&lt;br /&gt;
*''horizontal'' - if the string &amp;quot;horiz&amp;quot; is found anywhere in the argument list, the image will be flipped horizontally.&lt;br /&gt;
*if the argument list is empty, the image will only be flipped horizontally.&lt;br /&gt;
&lt;br /&gt;
=== ROTATE: Rotate function ===&lt;br /&gt;
May be used to rotate an image by a multiple of 90 degrees.&lt;br /&gt;
&lt;br /&gt;
'''~ROTATE(''' ''degrees'' ''')'''&lt;br /&gt;
* ''degrees'' - The number of degrees by which the image will be rotated. This must be a multiple of 90. Positive numbers indicate clockwise rotation, while negative numbers indicate counter-clockwise. (Zero indicates no rotation.)&lt;br /&gt;
If the number of degrees is omitted, a quarter turn (90 degrees) clockwise is assumed.&lt;br /&gt;
&lt;br /&gt;
=== SCALE: Image-scaling function ===&lt;br /&gt;
Scales a graphic up or down.&lt;br /&gt;
&lt;br /&gt;
'''~SCALE( ''new_width'', ''new_height'' )&lt;br /&gt;
&lt;br /&gt;
The ''new_width'' and ''new_height'' parameters are taken as the image's original width or height, respectively, if one of them happens to be zero. Negative values are treated in the same way, but an error is printed in stderr. This uses the bilinear interpolation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== SCALE_INTO function ===&lt;br /&gt;
{{DevFeature1.13|5}}&lt;br /&gt;
&lt;br /&gt;
Similar to SCALE, but preserves aspect aspect ratio, scaling to the minimum extent required to fit into the specified area. The resulting image will have the specified width or the specified height, but not necessarily both.&lt;br /&gt;
&lt;br /&gt;
=== SCALE_SHARP function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
Scales functions using a nearest neighbor algorithm. Specify width and height. (It has the same syntax as ~SCALE.)&lt;br /&gt;
&lt;br /&gt;
'''~SCALE_SHARP(200,300)'''&lt;br /&gt;
&lt;br /&gt;
=== SCALE_INTO_SHARP function ===&lt;br /&gt;
{{DevFeature1.13|5}}&lt;br /&gt;
&lt;br /&gt;
Like SCALE_INTO, but uses nearest neighbor algorithm instead of bilinear interpolation.&lt;br /&gt;
&lt;br /&gt;
=== XBRZ function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
Scales functions using the XBRZ algorithm. You may scale things up either 2x, 3x, 4x, or 5x. The scaling tries to preserve the pixel art nature.&lt;br /&gt;
&lt;br /&gt;
'''~XBRZ(n)'''&lt;br /&gt;
&lt;br /&gt;
== Cut-and-paste ==&lt;br /&gt;
&lt;br /&gt;
=== BLIT: Blit function ===&lt;br /&gt;
Blit the parameter image on the main image. Example: peasant.png~BLIT(hat.png,30,10)&lt;br /&gt;
&lt;br /&gt;
'''~BLIT(src,x,y)'''&lt;br /&gt;
* ''src'': an image file used as source for the blit, other image path functions can be used there.&lt;br /&gt;
* ''x'',''y'': top-left corner coordinates where to blit. Must be greater or equal than zero. If missing assume (0,0).&lt;br /&gt;
&lt;br /&gt;
=== CROP: Crop function ===&lt;br /&gt;
Extracts a rectangular section of an image file.&lt;br /&gt;
&lt;br /&gt;
'''~CROP(x,y,width,height)'''&lt;br /&gt;
* ''x'',''y'': top-left corner coordinates for the rectangular section extracted. Must be greater or equal than zero, and inside the image's bounds.&lt;br /&gt;
* ''width'': width of the selected region. Must be less than or equal to the original image's width, and must not be negative.&lt;br /&gt;
* ''height'': height of the selected region. Must be less than or equal to the original image's height, and must not be negative.&lt;br /&gt;
&lt;br /&gt;
=== MASK: Mask function ===&lt;br /&gt;
Remove parts of the main image using the parameter image as a mask. Example: grass.png~MASK(circle.png) will give a circle of grass.&lt;br /&gt;
&lt;br /&gt;
'''~MASK(mask,x,y)'''&lt;br /&gt;
* ''mask'': an image file used as mask, other image path functions can be used there.&lt;br /&gt;
* ''x'',''y'': top-left corner coordinates where to put the mask. Parts ouside of the mask are considered transparent. If missing assume (0,0).&lt;br /&gt;
&lt;br /&gt;
Only the alpha channel of the mask is used and each alpha value will be the maximum alpha of the resulting image. This means that the fully-transparent parts of the mask will erase the corresponding parts of the image, but also that a semi-transparent mask will create a semi-transparent image. &lt;br /&gt;
&lt;br /&gt;
== Opacity ==&lt;br /&gt;
&lt;br /&gt;
=== ADJUST_ALPHA ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|?}}&lt;br /&gt;
&lt;br /&gt;
Alters the alpha of the image according to a WFL formula. The formula must output an integer from 0 to 255 giving the alpha across the canvas. It is evaluated for every pixel and may use the following variables: x, y, red, green, blue, alpha, width, height. {{DevFeature1.15|0}} The variables u and v are also supported now, evaluating to normalized texture coordinates (in the range 0..1); these are equivalent to &amp;lt;tt&amp;gt;x/width&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;y/height&amp;lt;/tt&amp;gt; respectively.&lt;br /&gt;
&lt;br /&gt;
'''~ADJUST_ALPHA(formula)'''.&lt;br /&gt;
&lt;br /&gt;
The context object for the formula is a '''[[#CHAN:_General_function|pixel object]]'''.&lt;br /&gt;
&lt;br /&gt;
=== O: Opacity modifying function ===&lt;br /&gt;
Changes an image's opacity at render time.&lt;br /&gt;
&lt;br /&gt;
'''~O( ''factor or percentage%'' )'''&lt;br /&gt;
&lt;br /&gt;
If the argument includes the percentage symbol (''%''), it will be treated as a percentage of full (real) opacity; an image will be displayed at its native opacity with ~O(100%).&lt;br /&gt;
&lt;br /&gt;
Without the percentage symbol, the argument is assumed to be a factor by which the image's native opacity should be multiplied. Thus, ~O(0.5) and ~O(50%) are equivalent forms of specifying to reduce an image's opacity by half.&lt;br /&gt;
&lt;br /&gt;
=== PLOT_ALPHA ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
At each pixel, the color is replaced with a grey-tone reflecting the alpha value at that pixel, and the new image is fully opaque. Useful for plotting the alpha to help debug an IPF or inspect a sprite.&lt;br /&gt;
&lt;br /&gt;
'''~PLOT_ALPHA()'''&lt;br /&gt;
&lt;br /&gt;
=== WIPE_ALPHA ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
At each pixel, the alpha value is discarded and the pixel is made fully opaque. Useful again for diagnostics.&lt;br /&gt;
&lt;br /&gt;
'''~WIPE_ALPHA()'''&lt;br /&gt;
&lt;br /&gt;
=== Background coloring function ===&lt;br /&gt;
Sets the color of all the (semi-)transparent pixels of the image.&lt;br /&gt;
&lt;br /&gt;
'''~BG(r,g,b)'''&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&lt;br /&gt;
=== BL: Blurring function ===&lt;br /&gt;
&lt;br /&gt;
Blurs a graphic at render time using the same algorithm used for in-game dialogs.&lt;br /&gt;
&lt;br /&gt;
'''~BL( ''radius'' )'''&lt;br /&gt;
&lt;br /&gt;
=== CHAN: General function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|7}}&lt;br /&gt;
&lt;br /&gt;
This function allows you to do pretty much anything. It takes up to four comma-separated formulas, one each for the red, green, blue, and alpha channels. Each formula functions exactly the same as the formula for '''ADJUST_ALPHA''', but the output integer is used for the corresponding channel rather than always the alpha channel. Do not surround the formula in &amp;lt;code&amp;gt;$(...)&amp;lt;/code&amp;gt;, since that will erase the &amp;lt;tt&amp;gt;self&amp;lt;/tt&amp;gt; variable.&lt;br /&gt;
&lt;br /&gt;
'''~CHAN(formula, formula, formula)'''&lt;br /&gt;
&lt;br /&gt;
The context object for each of the formulas is a '''pixel object''' with the following properties:&lt;br /&gt;
&lt;br /&gt;
* '''x''', '''y''': coordinates of the pixel, from the top left&lt;br /&gt;
* '''u''', '''v''': {{DevFeature1.15|0}} normalized coordinates in the range [0,1]&lt;br /&gt;
* '''width''', '''height''': size of the image canvas&lt;br /&gt;
* '''red''', '''green''', '''blue''', '''alpha''': components of the pixel colour&lt;br /&gt;
&lt;br /&gt;
=== NO_TOD_SHIFT: Disabling ToD ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|8}}&lt;br /&gt;
&lt;br /&gt;
Can be used on terrain and item images to prevent them from being affected by ToD lighting. This is in particular useful when placing unit images as items, as they will look the same as when placed as unit.&lt;br /&gt;
&lt;br /&gt;
'''~NO_TOD_SHIFT()'''&lt;br /&gt;
&lt;br /&gt;
=== DARKEN: Removed function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|7}} This function has been removed. Use a ~BLIT(misc/tod-dark.png) call instead.&lt;br /&gt;
&lt;br /&gt;
Puts a time-of-day schedule overlay (misc/tod-dark.png) on the image, which must be large enough to accommodate it.&lt;br /&gt;
&lt;br /&gt;
'''~DARKEN()'''&lt;br /&gt;
&lt;br /&gt;
=== BRIGHTEN: Removed function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|7}} This function has been removed. Use a ~BLIT(misc/tod-bright.png) call instead.&lt;br /&gt;
&lt;br /&gt;
Puts a time-of-day schedule overlay (misc/tod-bright.png) on the image, which must be large enough to accommodate it.&lt;br /&gt;
&lt;br /&gt;
'''~BRIGHTEN()'''&lt;br /&gt;
&lt;br /&gt;
=== NOP: Null function ===&lt;br /&gt;
&lt;br /&gt;
Does nothing.&lt;br /&gt;
&lt;br /&gt;
'''~NOP()'''&lt;br /&gt;
&lt;br /&gt;
== Creating an image file from IPFs ==&lt;br /&gt;
&lt;br /&gt;
The big advantage of Image Path Functions is that they allow you to alter an image without needing a new image file. However, you can also save the result into a new image file using Wesnoth's command line option ''--render-image'.&lt;br /&gt;
&lt;br /&gt;
Assuming you find a way to open your computer's terminal:&lt;br /&gt;
 wesnoth --render-image &amp;quot;units/human-peasants/ruffian.png~RC(magenta&amp;gt;green)~BLIT(units/human-peasants/woodsman.png~RC(magenta&amp;gt;lightblue),18,12)&amp;quot; /tmp/new_image_file.png&lt;br /&gt;
&lt;br /&gt;
Or on Windows:&lt;br /&gt;
 &amp;quot;C:\Path\to\Battle for Wesnoth\wesnoth.exe&amp;quot; --render-image &amp;quot;units/human-peasants/ruffian.png~RC(magenta&amp;gt;green)~BLIT(units/human-peasants/woodsman.png~RC(magenta&amp;gt;lightblue),18,12)&amp;quot; new_image_file.png&lt;br /&gt;
&lt;br /&gt;
Use cases include:&lt;br /&gt;
* Experimenting with Image Path Functions. If none of the images are from an add-on, adding ''--noaddons'' will speed this up.&lt;br /&gt;
* If a new Image Path Function is added to the development version of Wesnoth, add-ons for older Wesnoth versions can use a generated image instead.&lt;br /&gt;
* In case you want to use this anywhere out of Wesnoth. On a website, in Project Haldric, …&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[FancyAddonIcons]] - Tips and tricks for advanced Image Path Function manipulation&lt;br /&gt;
* [[DataURI]] - An image path may also contain the image directly, as a Base64 encoded string&lt;br /&gt;
* [http://shadowm.ai0867.net/projects/wesnoth-rcx Wesnoth RCX]  - Tool to preview unit recoloring. Covers the effects of the [[#RC:_Re-Color_Function|RC]], [[#TC: Team-Color Function|TC]] and [[#PAL:_Palette-switch_Function|PAL]] functions.&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=69327</id>
		<title>ImagePathFunctions</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=69327"/>
		<updated>2022-02-14T19:33:42Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* FL: Flip function */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Image Path Functions provide a simple method for WML coders to alter the way their specified images will be displayed in the game. All of the function parameters are included at the end of an image path and should not contain any spaces or special characters (other than those specified here).&lt;br /&gt;
&lt;br /&gt;
If you need to practice it without having to reload all WML, you can use an add-on named ''Image loading tester''.  It is available on the 1.9, 1.10, 1.11, 1.12 and 1.14 add-on servers.&lt;br /&gt;
&lt;br /&gt;
All functions are applied in left-to-right order, with the exception of RC(), TC() and PAL() which are applied always before any other functions. Standard team coloring for a unit is applied after all custom RC(), TC() and PAL() functions but before any other functions.&lt;br /&gt;
That is, stuff like&lt;br /&gt;
 &amp;quot;units/elves-wood/fighter.png~CROP(20,20,40,40)~CROP(10,10,10,10)&amp;quot;&lt;br /&gt;
would result in taking a crop to a 40x40 rectangle whose top-left corner is x=20, y=20; and then taking a crop from ''that'' rectangle with x=10, y=10, w=10, h=10. The result is the area x=30, y=30, w=10, h=10 from the original graphic.&lt;br /&gt;
&lt;br /&gt;
== Changing the colors ==&lt;br /&gt;
&lt;br /&gt;
=== BLEND: Color-blend function ===&lt;br /&gt;
Blends the image with the given color to produce a more controlled tinting effect than color-shifting, independently of the image's contents.&lt;br /&gt;
&lt;br /&gt;
'''~BLEND(r,g,b,o)'''&lt;br /&gt;
&lt;br /&gt;
The color is defined by the ''r'', ''g'', and ''b'' parameters (integers ranging from 0 to 255). The ''o'' (opacity) parameter controls the amount by which the given color will be blended into the image, and may be specified either as a factor from 0.0 to 1.0, or percentage up to 100%. Thus, ~BLEND(r,g,b,0.5) and ~BLEND(r,g,b,50%) are equivalent.&lt;br /&gt;
&lt;br /&gt;
=== BW: Black and White function ===&lt;br /&gt;
{{devfeature1.13|1}}&lt;br /&gt;
May be used to convert the image to pure black and white, without grey pixels. &lt;br /&gt;
&lt;br /&gt;
'''~BW(threshold)'''&lt;br /&gt;
* ''threshold'': a value between 0 and 255 (both limits included). All pixels are converted as greyscale first, and if their average value is greater than the threshold they become white, otherwise they become black.&lt;br /&gt;
&lt;br /&gt;
=== CS: Color-shift function ===&lt;br /&gt;
Performs simple per-channel color shifts by adding the arguments to the respective color channels.&lt;br /&gt;
&lt;br /&gt;
''Multi-channel:'' '''~CS(r,g,b)'''&lt;br /&gt;
''Single-channel:'' '''~R(v)''', '''~G(v)''', '''~B(v)'''&lt;br /&gt;
&lt;br /&gt;
The multichannel syntax assumes all arguments are set to zero initially, so one can use, e.g. ~CS(2,4) to add +2 and +4 units to the red and green channels respectively, leaving the blue channel intact. Arguments may be negative to diminish a channel's value; this can be used to change an image's brightness. Checks for out-of-range arguments or results (less than 0 or greater than 255) are made, so the resultant values are truncated if necessary.&lt;br /&gt;
&lt;br /&gt;
The single channel syntax behaves exactly the same, except that only single-channel modifications are made per function. However, one can stack them to produce the same behavior as ~CS(), e.g. ~R(r)~G(g)~B(b), but that tends to be just a performance loss.&lt;br /&gt;
&lt;br /&gt;
=== GS: Greyscale function ===&lt;br /&gt;
May be used to greyscale the image (turn to black and white)&lt;br /&gt;
&lt;br /&gt;
'''~GS( )'''&lt;br /&gt;
&lt;br /&gt;
=== L: Lightmap color-shift function ===&lt;br /&gt;
Performs per-pixel and per-channel color shifts using another image (a &amp;quot;lightmap&amp;quot;) as source, allowing to create textured light effects.&lt;br /&gt;
&lt;br /&gt;
'''~L(lightmap)'''&lt;br /&gt;
&lt;br /&gt;
For each pixel of the original image, it checks the RGB values from the corresponding pixel of the lightmap, slightly transform them, then add these values to the original pixel.&lt;br /&gt;
&lt;br /&gt;
The transformation involved is done to convert the (0,255) spectrum to (-255,255), allowing to add or subtract color. The formula is (x-128)*2, which means that 0 gives -256, 128 gives 0 and 255 gives 254. So, the no-effect lightmap is a fully grey image (RGB = 128,128,128) and any non-grey pixel will shift the colors of the original.&lt;br /&gt;
&lt;br /&gt;
Note that the lightmap will be scaled to the same dimensions as the original image.&lt;br /&gt;
&lt;br /&gt;
=== NEG: Negative function ===&lt;br /&gt;
{{devfeature1.13|0}}&lt;br /&gt;
Also known as ''invert'', it negates all the RGB values of the image, giving it an effect similar to a photographic negative.&lt;br /&gt;
&lt;br /&gt;
'''~NEG( )'''&lt;br /&gt;
&lt;br /&gt;
Inverts the image, giving it an effect like a photographic negative.&lt;br /&gt;
&lt;br /&gt;
{{devfeature1.13|1}} '''~NEG(''' ''threshold'' ''')'''&lt;br /&gt;
&lt;br /&gt;
If a channel has a value greater than the threshold, the channel will be inverted, performing an effect known as ''solarization''.&lt;br /&gt;
Threshold must be between -1 and 255, with -1 equivalent to full inversion and 255 as no-op value.&lt;br /&gt;
&lt;br /&gt;
{{devfeature1.13|1}} '''~NEG(''' ''threshold_red, threshold_green, threshold_blue'' ''')'''&lt;br /&gt;
&lt;br /&gt;
If a channel has a value greater than the corresponding threshold, the channel will be inverted.&lt;br /&gt;
Each threshold must be between -1 and 255, with -1 equivalent to full inversion and 255 as no-op value.&lt;br /&gt;
&lt;br /&gt;
=== PAL: Palette-switch function ===&lt;br /&gt;
May be used to change colors in an image following the specifications of a source and target (new) palette.&lt;br /&gt;
&lt;br /&gt;
'''~PAL(''' ''source color palette'' '''&amp;gt;''' ''target color palette'' ''')'''&lt;br /&gt;
*''source color palette'' - the first parameter is a source color palette, such as magenta. Do not surround this parameter with quotes.&lt;br /&gt;
*''target color palette'' - the new palette to take the place of the source colors in the image.&lt;br /&gt;
&lt;br /&gt;
=== RC: Re-Color function ===&lt;br /&gt;
May be used to change some colors in an image. It is possible to use ''RC'' more than once on the same image, with different source palettes.&lt;br /&gt;
&lt;br /&gt;
'''~RC(''' ''source color palette'' '''&amp;gt;''' ''destination color range'' ''')'''&lt;br /&gt;
&lt;br /&gt;
==== source color palette ====&lt;br /&gt;
The first parameter is a set of colors, usually the magenta palette. Do not surround this parameter with quotes. The three standard palettes are:&lt;br /&gt;
&lt;br /&gt;
* '''magenta''' - the 19 colors described in [[Team_Color_Shifting]]&lt;br /&gt;
* '''ellipse_red''' - all 255 colors with RGB value (n,0,0)&lt;br /&gt;
* '''flag_green''' - all 255 colors with RGB value (0,n,0)&lt;br /&gt;
&lt;br /&gt;
The palette can also be given inline as a set of hexadecimal RGB values.&lt;br /&gt;
&lt;br /&gt;
The named palettes are defined using the '''[[GameConfigWML#Color_Palettes|[color_palette]]]''' tag, and you can also define your own custom color palette using that tag.&lt;br /&gt;
&lt;br /&gt;
Warning: the RC function will also accept (and not give a warning about) '''red''', '''green''' and any other defined '''[color_range]'''; however the set of RGB values for those aren't guaranteed. Using '''red''' instead of '''ellipse_red''' might be equivalent to the palette 030000,060000,0a0000,...,ff0000,ff0a0a,...,fff0f0.&lt;br /&gt;
&lt;br /&gt;
==== destination color range ====&lt;br /&gt;
This is the second parameter, signifying the ID of a color range defined in the file [http://github.com/wesnoth/wesnoth/blob/master/data/core/team-colors.cfg data/core/team-colors.cfg] (or it may be a custom ID for a color range defined locally). You can also define a custom color range inline (the rgb key from [[GameConfigWML#Color_Palettes]]; note that RC does not use the fourth color for anything).&lt;br /&gt;
&lt;br /&gt;
For this destination color range, using '''red''' or '''green''' makes sense.&lt;br /&gt;
&lt;br /&gt;
==== Example ====&lt;br /&gt;
In the following example, the magenta regions in an elvish captain's image are turned a healthy shade of green:&lt;br /&gt;
&lt;br /&gt;
  [message]&lt;br /&gt;
      speaker=narrator&lt;br /&gt;
      image=units/elves-wood/captain.png~RC(magenta&amp;gt;green)&lt;br /&gt;
      message=_ &amp;quot;Now I am on the green team.&amp;quot;&lt;br /&gt;
  [/message]&lt;br /&gt;
&lt;br /&gt;
The following example replaces a few of the '''magenta''' pixels with green ones:&lt;br /&gt;
&lt;br /&gt;
  misc/orb.png~RC(690039,c30074,ec008c &amp;gt; 007f00,00ff00,000000,000000)&lt;br /&gt;
&lt;br /&gt;
The IDs of the color ranges may be the lowercased English name of the palette's base color (e.g. 'red', 'brown', etc.). They may also be numeric color indices from the palette WML included with the game, but this is not recommended.&lt;br /&gt;
&lt;br /&gt;
=== SEPIA: Sepia function ===&lt;br /&gt;
{{devfeature1.13|0}}&lt;br /&gt;
May be used to give to the image a sepia tint (like in old pictures).&lt;br /&gt;
&lt;br /&gt;
'''~SEPIA()'''&lt;br /&gt;
&lt;br /&gt;
=== SWAP: Channel Swap function ===&lt;br /&gt;
{{devfeature1.13|1}}&lt;br /&gt;
May be used to swap the RGBA channels of an image.&lt;br /&gt;
&lt;br /&gt;
'''~SWAP(''' ''r, g, b'' ''')'''&lt;br /&gt;
'''~SWAP(''' ''r, g, b, a'' ''')'''&lt;br /&gt;
* ''r'', ''g'', ''b'', ''a'': each of these arguments may have a value equal to ''red'', ''green'', ''blue'' or ''alpha''. The RGBA channels of the original image will be exchanged accordingly (for example, &amp;lt;tt&amp;gt;~SWAP(blue,green,red)&amp;lt;/tt&amp;gt; swaps the blue and red channels).&lt;br /&gt;
&lt;br /&gt;
=== TC: Team-Color function ===&lt;br /&gt;
In Wesnoth version 1.2, the only Image Path Function was '''~TC()''', which took two comma-separated parameters: the team number and the source color palette. The valid values for both of these parameters are defined in the file ''data/team-colors.cfg''&lt;br /&gt;
&lt;br /&gt;
'''~TC(''' ''team number'' ''',''' ''source color palette'' ''')'''&lt;br /&gt;
*''team number'' - this is the first parameter, a number 1-9 signifying the team number of a unit. Number 1 typically means the red team, 2 typically means the blue team, and so on (unless the scenario color settings for any side have been altered).&lt;br /&gt;
*''source color palette'' - the second parameter is a source color palette, usually magenta. Do not surround this parameter with quotes.&lt;br /&gt;
&lt;br /&gt;
== Transformations ==&lt;br /&gt;
&lt;br /&gt;
=== FL: Flip function ===&lt;br /&gt;
May be used to flip an image horizontally and/or vertically.&lt;br /&gt;
&lt;br /&gt;
'''~FL(''' ''optional argument list'' ''')'''&lt;br /&gt;
*''vertical'' - if the string &amp;quot;vert&amp;quot; is found anywhere in the argument list, the image will be flipped vertically.&lt;br /&gt;
*''horizontal'' - if the string &amp;quot;horiz&amp;quot; is found anywhere in the argument list, the image will be flipped horizontally.&lt;br /&gt;
*if the argument list is empty, the image will only be flipped horizontally.&lt;br /&gt;
&lt;br /&gt;
=== ROTATE: Rotate function ===&lt;br /&gt;
May be used to rotate an image by a multiple of 90 degrees.&lt;br /&gt;
&lt;br /&gt;
'''~ROTATE(''' ''degrees'' ''')'''&lt;br /&gt;
* ''degrees'' - The number of degrees by which the image will be rotated. This must be a multiple of 90. Positive numbers indicate clockwise rotation, while negative numbers indicate counter-clockwise. (Zero indicates no rotation.)&lt;br /&gt;
If the number of degrees is omitted, a quarter turn (90 degrees) clockwise is assumed.&lt;br /&gt;
&lt;br /&gt;
=== SCALE: Image-scaling function ===&lt;br /&gt;
Scales a graphic up or down.&lt;br /&gt;
&lt;br /&gt;
'''~SCALE( ''new_width'', ''new_height'' )&lt;br /&gt;
&lt;br /&gt;
The ''new_width'' and ''new_height'' parameters are taken as the image's original width or height, respectively, if one of them happens to be zero. Negative values are treated in the same way, but an error is printed in stderr. This uses the bilinear interpolation algorithm.&lt;br /&gt;
&lt;br /&gt;
=== SCALE_INTO function ===&lt;br /&gt;
{{DevFeature1.13|5}}&lt;br /&gt;
&lt;br /&gt;
Similar to SCALE, but preserves aspect aspect ratio, scaling to the minimum extent required to fit into the specified area. The resulting image will have the specified width or the specified height, but not necessarily both.&lt;br /&gt;
&lt;br /&gt;
=== SCALE_SHARP function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
Scales functions using a nearest neighbor algorithm. Specify width and height. (It has the same syntax as ~SCALE.)&lt;br /&gt;
&lt;br /&gt;
'''~SCALE_SHARP(200,300)'''&lt;br /&gt;
&lt;br /&gt;
=== SCALE_INTO_SHARP function ===&lt;br /&gt;
{{DevFeature1.13|5}}&lt;br /&gt;
&lt;br /&gt;
Like SCALE_INTO, but uses nearest neighbor algorithm instead of bilinear intorpolation.&lt;br /&gt;
&lt;br /&gt;
=== XBRZ function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
Scales functions using the XBRZ algorithm. You may scale things up either 2x, 3x, 4x, or 5x. The scaling tries to preserve the pixel art nature.&lt;br /&gt;
&lt;br /&gt;
'''~XBRZ(n)'''&lt;br /&gt;
&lt;br /&gt;
== Cut-and-paste ==&lt;br /&gt;
&lt;br /&gt;
=== BLIT: Blit function ===&lt;br /&gt;
Blit the parameter image on the main image. Example: peasant.png~BLIT(hat.png,30,10)&lt;br /&gt;
&lt;br /&gt;
'''~BLIT(src,x,y)'''&lt;br /&gt;
* ''src'': an image file used as source for the blit, other image path functions can be used there.&lt;br /&gt;
* ''x'',''y'': top-left corner coordinates where to blit. Must be greater or equal than zero. If missing assume (0,0).&lt;br /&gt;
&lt;br /&gt;
=== CROP: Crop function ===&lt;br /&gt;
Extracts a rectangular section of an image file.&lt;br /&gt;
&lt;br /&gt;
'''~CROP(x,y,width,height)'''&lt;br /&gt;
* ''x'',''y'': top-left corner coordinates for the rectangular section extracted. Must be greater or equal than zero, and inside the image's bounds.&lt;br /&gt;
* ''width'': width of the selected region. Must be less than or equal to the original image's width, and must not be negative.&lt;br /&gt;
* ''height'': height of the selected region. Must be less than or equal to the original image's height, and must not be negative.&lt;br /&gt;
&lt;br /&gt;
=== MASK: Mask function ===&lt;br /&gt;
Remove parts of the main image using the parameter image as a mask. Example: grass.png~MASK(circle.png) will give a circle of grass.&lt;br /&gt;
&lt;br /&gt;
'''~MASK(mask,x,y)'''&lt;br /&gt;
* ''mask'': an image file used as mask, other image path functions can be used there.&lt;br /&gt;
* ''x'',''y'': top-left corner coordinates where to put the mask. Parts ouside of the mask are considered transparent. If missing assume (0,0).&lt;br /&gt;
&lt;br /&gt;
Only the alpha channel of the mask is used and each alpha value will be the maximum alpha of the resulting image. This means that the fully-transparent parts of the mask will erase the corresponding parts of the image, but also that a semi-transparent mask will create a semi-transparent image. &lt;br /&gt;
&lt;br /&gt;
== Opacity ==&lt;br /&gt;
&lt;br /&gt;
=== ADJUST_ALPHA ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|?}}&lt;br /&gt;
&lt;br /&gt;
Alters the alpha of the image according to a WFL formula. The formula must output an integer from 0 to 255 giving the alpha across the canvas. It is evaluated for every pixel and may use the following variables: x, y, red, green, blue, alpha, width, height. {{DevFeature1.15|0}} The variables u and v are also supported now, evaluating to normalized texture coordinates (in the range 0..1); these are equivalent to &amp;lt;tt&amp;gt;x/width&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;y/height&amp;lt;/tt&amp;gt; respectively.&lt;br /&gt;
&lt;br /&gt;
'''~ADJUST_ALPHA(formula)'''.&lt;br /&gt;
&lt;br /&gt;
The context object for the formula is a '''[[#CHAN:_General_function|pixel object]]'''.&lt;br /&gt;
&lt;br /&gt;
=== O: Opacity modifying function ===&lt;br /&gt;
Changes an image's opacity at render time.&lt;br /&gt;
&lt;br /&gt;
'''~O( ''factor or percentage%'' )'''&lt;br /&gt;
&lt;br /&gt;
If the argument includes the percentage symbol (''%''), it will be treated as a percentage of full (real) opacity; an image will be displayed at its native opacity with ~O(100%).&lt;br /&gt;
&lt;br /&gt;
Without the percentage symbol, the argument is assumed to be a factor by which the image's native opacity should be multiplied. Thus, ~O(0.5) and ~O(50%) are equivalent forms of specifying to reduce an image's opacity by half.&lt;br /&gt;
&lt;br /&gt;
=== PLOT_ALPHA ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
At each pixel, the color is replaced with a grey-tone reflecting the alpha value at that pixel, and the new image is fully opaque. Useful for plotting the alpha to help debug an IPF or inspect a sprite.&lt;br /&gt;
&lt;br /&gt;
'''~PLOT_ALPHA()'''&lt;br /&gt;
&lt;br /&gt;
=== WIPE_ALPHA ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
At each pixel, the alpha value is discarded and the pixel is made fully opaque. Useful again for diagnostics.&lt;br /&gt;
&lt;br /&gt;
'''~WIPE_ALPHA()'''&lt;br /&gt;
&lt;br /&gt;
=== Background coloring function ===&lt;br /&gt;
Sets the color of all the (semi-)transparent pixels of the image.&lt;br /&gt;
&lt;br /&gt;
'''~BG(r,g,b)'''&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&lt;br /&gt;
=== BL: Blurring function ===&lt;br /&gt;
&lt;br /&gt;
Blurs a graphic at render time using the same algorithm used for in-game dialogs.&lt;br /&gt;
&lt;br /&gt;
'''~BL( ''radius'' )'''&lt;br /&gt;
&lt;br /&gt;
=== CHAN: General function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|7}}&lt;br /&gt;
&lt;br /&gt;
This function allows you to do pretty much anything. It takes up to four comma-separated formulas, one each for the red, green, blue, and alpha channels. Each formula functions exactly the same as the formula for '''ADJUST_ALPHA''', but the output integer is used for the corresponding channel rather than always the alpha channel. Do not surround the formula in &amp;lt;code&amp;gt;$(...)&amp;lt;/code&amp;gt;, since that will erase the &amp;lt;tt&amp;gt;self&amp;lt;/tt&amp;gt; variable.&lt;br /&gt;
&lt;br /&gt;
'''~CHAN(formula, formula, formula)'''&lt;br /&gt;
&lt;br /&gt;
The context object for each of the formulas is a '''pixel object''' with the following properties:&lt;br /&gt;
&lt;br /&gt;
* '''x''', '''y''': coordinates of the pixel, from the top left&lt;br /&gt;
* '''u''', '''v''': {{DevFeature1.15|0}} normalized coordinates in the range [0,1]&lt;br /&gt;
* '''width''', '''height''': size of the image canvas&lt;br /&gt;
* '''red''', '''green''', '''blue''', '''alpha''': components of the pixel colour&lt;br /&gt;
&lt;br /&gt;
=== NO_TOD_SHIFT: Disabling ToD ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|8}}&lt;br /&gt;
&lt;br /&gt;
Can be used on terrain and item images to prevent them from being affected by ToD lighting. This is in particular useful when placing unit images as items, as they will look the same as when placed as unit.&lt;br /&gt;
&lt;br /&gt;
'''~NO_TOD_SHIFT()'''&lt;br /&gt;
&lt;br /&gt;
=== DARKEN: Removed function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|7}} This function has been removed. Use a ~BLIT(misc/tod-dark.png) call instead.&lt;br /&gt;
&lt;br /&gt;
Puts a time-of-day schedule overlay (misc/tod-dark.png) on the image, which must be large enough to accommodate it.&lt;br /&gt;
&lt;br /&gt;
'''~DARKEN()'''&lt;br /&gt;
&lt;br /&gt;
=== BRIGHTEN: Removed function ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|7}} This function has been removed. Use a ~BLIT(misc/tod-bright.png) call instead.&lt;br /&gt;
&lt;br /&gt;
Puts a time-of-day schedule overlay (misc/tod-bright.png) on the image, which must be large enough to accommodate it.&lt;br /&gt;
&lt;br /&gt;
'''~BRIGHTEN()'''&lt;br /&gt;
&lt;br /&gt;
=== NOP: Null function ===&lt;br /&gt;
&lt;br /&gt;
Does nothing.&lt;br /&gt;
&lt;br /&gt;
'''~NOP()'''&lt;br /&gt;
&lt;br /&gt;
== Creating an image file from IPFs ==&lt;br /&gt;
&lt;br /&gt;
The big advantage of Image Path Functions is that they allow you to alter an image without needing a new image file. However, you can also save the result into a new image file using Wesnoth's command line option ''--render-image'.&lt;br /&gt;
&lt;br /&gt;
Assuming you find a way to open your computer's terminal:&lt;br /&gt;
 wesnoth --render-image &amp;quot;units/human-peasants/ruffian.png~RC(magenta&amp;gt;green)~BLIT(units/human-peasants/woodsman.png~RC(magenta&amp;gt;lightblue),18,12)&amp;quot; /tmp/new_image_file.png&lt;br /&gt;
&lt;br /&gt;
Or on Windows:&lt;br /&gt;
 &amp;quot;C:\Path\to\Battle for Wesnoth\wesnoth.exe&amp;quot; --render-image &amp;quot;units/human-peasants/ruffian.png~RC(magenta&amp;gt;green)~BLIT(units/human-peasants/woodsman.png~RC(magenta&amp;gt;lightblue),18,12)&amp;quot; new_image_file.png&lt;br /&gt;
&lt;br /&gt;
Use cases include:&lt;br /&gt;
* Experimenting with Image Path Functions. If none of the images are from an add-on, adding ''--noaddons'' will speed this up.&lt;br /&gt;
* If a new Image Path Function is added to the development version of Wesnoth, add-ons for older Wesnoth versions can use a generated image instead.&lt;br /&gt;
* In case you want to use this anywhere out of Wesnoth. On a website, in Project Haldric, …&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[FancyAddonIcons]] - Tips and tricks for advanced Image Path Function manipulation&lt;br /&gt;
* [[DataURI]] - An image path may also contain the image directly, as a Base64 encoded string&lt;br /&gt;
* [http://shadowm.ai0867.net/projects/wesnoth-rcx Wesnoth RCX]  - Tool to preview unit recoloring. Covers the effects of the [[#RC:_Re-Color_Function|RC]], [[#TC: Team-Color Function|TC]] and [[#PAL:_Palette-switch_Function|PAL]] functions.&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=EventWML&amp;diff=69293</id>
		<title>EventWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=EventWML&amp;diff=69293"/>
		<updated>2022-02-09T00:34:43Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* enter_hex */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== The [event] Tag ==&lt;br /&gt;
&lt;br /&gt;
This tag is a subtag of the [scenario], [unit_type] and [era] tags which is used to describe a set of [[ActionWML|actions]] which trigger at a certain point in a scenario. When used in a [scenario] tag (also includes [multiplayer], [tutorial] and [test]), the event only occurs in that scenario. When used in a [unit_type] tag, the event will occur in all scenarios in which a unit of that type appears in (only after such a unit appears during the scenario, however). When used in an [era], the event will occur in any scenario which is played using that era.&lt;br /&gt;
&lt;br /&gt;
This tag has keys and child tags that control when and if the event actions will be triggered. Most important of these is the '''name''' key. Without it, no error will be raised but the event will never fire. Therefore, from a practical standpoint, it can be considered mandatory. All of the others can be used or not and the event actions will fire either way.&lt;br /&gt;
&lt;br /&gt;
'''Lexicon side note:''' ''The word &amp;quot;event&amp;quot; in the [event] tag itself may be considered an abbreviation of the word &amp;quot;event handler&amp;quot; because it is technically not a game &amp;quot;event&amp;quot; but an event '''handler''' for the game events fired with the given 'name'. However, this distinction is usually unimportant in most discussions and the event handlers are therefore simply referred to as &amp;quot;events&amp;quot; in this documentation.''&lt;br /&gt;
&lt;br /&gt;
=== The 'name' Key (Mandatory) ===&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
name=&amp;lt;value&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This key defines which game event or trigger your [event] tag will be handling. This 'name' key should not be confused with a descriptive comment; it is rather a precise value which must match the predefined game event's name to be valid.&lt;br /&gt;
&lt;br /&gt;
The '''name''' key can accept a list of comma separated values describing when the event will be triggered.*  These values may be either predefined event types or  custom event names not matching any predefined type.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
name=attacker misses,defender misses&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''* Note that unless you use [[#first_time_only|first_time_only=no]], the event will fire only once, '''not''' once for each listed type.''&lt;br /&gt;
&lt;br /&gt;
All predefined event types are listed below, along with a description of when this value will cause the event to be triggered, in the [[#Predefined_Events_Without_Filters|Predefined Events Without Filters]] and [[#Predefined_Events_With_Filters|Predefined Events With Filters]] sections. Any value ''not'' listed there is a custom event name which can be triggered only by a '''[fire_event]''' tag somewhere else. &lt;br /&gt;
&lt;br /&gt;
Spaces in event names can be interchanged with ''underscores'' (for example, '''name=new turn''' and '''name=new_turn''' are equivalent).&lt;br /&gt;
&lt;br /&gt;
==== Custom events ====&lt;br /&gt;
&lt;br /&gt;
An event with a custom name may be invoked using the [[InternalActionsWML#.5Bfire_event.5D|[fire_event]]] tag.  Normally you'll use such custom events as named subroutines to be called by events with predefined types.  One common case of this, for example, is that more than one '''sighted''' events might fire the same custom event that changes the scenario objectives. Also, custom events come very handy in [[Wml_optimisation]].&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
# The following is the definition of a custom event &amp;quot;unit recruited&amp;quot;&lt;br /&gt;
[event]&lt;br /&gt;
    name=unit_recruited&lt;br /&gt;
    first_time_only=no&lt;br /&gt;
    [message]&lt;br /&gt;
        speaker=unit&lt;br /&gt;
        message=_ &amp;quot;Reporting for duty!&amp;quot;&lt;br /&gt;
    [/message]&lt;br /&gt;
[/event]&lt;br /&gt;
&lt;br /&gt;
# This is a standard recruit event that triggers whenever a unit is recruited by side 1&lt;br /&gt;
[event]&lt;br /&gt;
    name=recruit&lt;br /&gt;
    first_time_only=no&lt;br /&gt;
    [filter]&lt;br /&gt;
    [/filter]&lt;br /&gt;
    [filter_second]&lt;br /&gt;
        side=1&lt;br /&gt;
    [/filter_second]&lt;br /&gt;
&lt;br /&gt;
    # And now a fire_event tag is used to trigger the previously defined event. To use&lt;br /&gt;
    # &amp;quot;speaker=unit&amp;quot; in the fired event, it's also necessary to specify the [primary_unit].&lt;br /&gt;
    [fire_event]&lt;br /&gt;
        name=unit_recruited&lt;br /&gt;
        [primary_unit]&lt;br /&gt;
            id=$unit.id&lt;br /&gt;
        [/primary_unit]&lt;br /&gt;
    [/fire_event]&lt;br /&gt;
 &lt;br /&gt;
    # As a result, every time side 1 recruits a unit, this unit says &amp;quot;Reporting for duty!&amp;quot;&lt;br /&gt;
[/event]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can have more code after the '''[fire_event]''', which will run after the fired event has happened.&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
# This is a standard recall event that triggers whenever a unit is recalled by side 1&lt;br /&gt;
[event]&lt;br /&gt;
    name=recall&lt;br /&gt;
    first_time_only=no&lt;br /&gt;
    [filter]&lt;br /&gt;
    [/filter]&lt;br /&gt;
    [filter_second]&lt;br /&gt;
        side=1&lt;br /&gt;
    [/filter_second]&lt;br /&gt;
&lt;br /&gt;
    # Fire the custom event, exactly as the in recruit event&lt;br /&gt;
    [fire_event]&lt;br /&gt;
        name=unit_recruited&lt;br /&gt;
        [primary_unit]&lt;br /&gt;
            id=$unit.id&lt;br /&gt;
        [/primary_unit]&lt;br /&gt;
    [/fire_event]&lt;br /&gt;
 &lt;br /&gt;
    # After that event has happened, the remaining code in this event is run&lt;br /&gt;
    [message]&lt;br /&gt;
        speaker=second_unit&lt;br /&gt;
        message=_ &amp;quot;Glad to have you back&amp;quot;&lt;br /&gt;
    [/message]&lt;br /&gt;
    # As a result, every time side 1 recalls a unit, the recalled unit says&lt;br /&gt;
    # &amp;quot;Reporting for duty!&amp;quot;, and the leader replies &amp;quot;Glad to have you back&amp;quot;&lt;br /&gt;
[/event]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Optional Keys and Tags ===&lt;br /&gt;
&lt;br /&gt;
These keys and tags are more complex ways to filter when an event should trigger:&lt;br /&gt;
&lt;br /&gt;
==== first_time_only ====&lt;br /&gt;
: Whether the event should be removed from the scenario after it is triggered. This key takes a [[ConditionalActionsWML#Boolean_Values|boolean]]; for example:&lt;br /&gt;
: ''first_time_only=yes''&lt;br /&gt;
:: Default behavior if key is omitted. The event will trigger the first time it can and never again.&lt;br /&gt;
: ''first_time_only=no''&lt;br /&gt;
:: The event will trigger every time the criteria are met instead of only the first time.&lt;br /&gt;
&lt;br /&gt;
==== id ====&lt;br /&gt;
: If an id is specified, then the event will not be added if another event with the same id already exists. An id will also allow the event to be removed, see below. Supplying a non-empty id= is mandatory in case of a [unit_type][event].&lt;br /&gt;
&lt;br /&gt;
==== remove ====&lt;br /&gt;
: Removes an event instead of adding a new one. This key takes a [[ConditionalActionsWML#Boolean_Values|boolean]]; if yes, does the same as a [[InternalActionsWML#.5Bremove_event.5D|[remove_event]]] with the same id= value, and the other attributes of this event tag are ignored.&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}} May be a comma separated list.&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.15|7}} Prints a deprecation warning recommending to use [remove_event] instead.&lt;br /&gt;
&lt;br /&gt;
==== [filter] ====&lt;br /&gt;
: The event will only trigger if the primary unit matches this filter.&lt;br /&gt;
:* [[StandardUnitFilter]]: selection criteria&lt;br /&gt;
&lt;br /&gt;
==== [filter_second] ====&lt;br /&gt;
: Like [filter], but for the secondary unit.&lt;br /&gt;
:* [[StandardUnitFilter]]: selection criteria&lt;br /&gt;
&lt;br /&gt;
==== [filter_attack] ====&lt;br /&gt;
: Can be used to set additional filtering criteria based on the weapon used by the primary unit. This is usable in the events ''attack'', ''attacker hits'', ''attacker misses'', ''defender hits'', ''defender misses'', ''attack end'', ''last breath'', and ''die''. For more information and filter keys, see [[FilterWML#Filtering Weapons|Filtering Weapons]]. The most commonly used keys are the following.&lt;br /&gt;
:* '''name''': the name of the weapon used.&lt;br /&gt;
:* '''range''': the range of the weapon used.&lt;br /&gt;
:* '''special''': filter on the attack's special power.&lt;br /&gt;
&lt;br /&gt;
==== [filter_second_attack] ====&lt;br /&gt;
: Like [filter_attack], but for the weapon used by the secondary unit.&lt;br /&gt;
&lt;br /&gt;
==== [filter_condition] ====&lt;br /&gt;
: This tag makes sense inside any sort of event - even those that don't have units, or custom events,... The event will only trigger if this condition evaluates to true.&lt;br /&gt;
:* [[ConditionalActionsWML#Condition_Tags|Condition Tags]]&lt;br /&gt;
: note: This tag is meant to be used when the firing of an event shall be based on variables/conditions which cannot be retrieved from the filtered units.&lt;br /&gt;
&lt;br /&gt;
==== [filter_side] ====&lt;br /&gt;
: The current side (usually the side $side_number) must match the passed [[StandardSideFilter]] for the event to fire.&lt;br /&gt;
:* SSF tags and keys as arguments as described in [[StandardSideFilter]].&lt;br /&gt;
: note: This tag makes most sense in side turn and turn refresh events. However, all wml events have a current side so one could also prevent e.g. a moveto event from firing if you put a [filter_side] tag there and the moving unit's side doesn't match.&lt;br /&gt;
&lt;br /&gt;
==== delayed_variable_substitution ====&lt;br /&gt;
: This key is only relevant inside of a [[#Delayed Variable Substitution_2|nested event]] and controls when variable substitution will occur in those special case actions.&lt;br /&gt;
&lt;br /&gt;
=== Actions triggered by [event] ===&lt;br /&gt;
&lt;br /&gt;
After the trigger conditions have been met, all [[ActionWML|action tags]] within the [event] tag are executed in the order they are written in.&lt;br /&gt;
&lt;br /&gt;
There are 3 main types of actions:&lt;br /&gt;
* direct actions ([[DirectActionsWML]]) which have a direct effect on gameplay&lt;br /&gt;
* display actions ([[InterfaceActionsWML]]) which show something to the user&lt;br /&gt;
* internal actions ([[InternalActionsWML]]) which are used by WML internally&lt;br /&gt;
&lt;br /&gt;
More details in [[ActionWML]].&lt;br /&gt;
&lt;br /&gt;
Several actions use standard filters to find out which units&lt;br /&gt;
to execute the command on.  These are denoted by the phrases&lt;br /&gt;
&amp;quot;standard unit filter&amp;quot; and &amp;quot;standard location filter&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Nested Events ===&lt;br /&gt;
&lt;br /&gt;
There is one special type of action: event creation.  By placing an '''[event]''' tag inside another '''[event]''' tag, the nested event is spawned (created) when the parent (outer) event is encountered (when executing the contents of the parent event).&lt;br /&gt;
&lt;br /&gt;
([[#Nested Event Example|See Examples]])&lt;br /&gt;
&lt;br /&gt;
==== Delayed Variable Substitution ====&lt;br /&gt;
&lt;br /&gt;
Variable substitution for a nested event can happen either when it is spawned by the parent event or when it is triggered itself. This is controlled with the key '''delayed_variable_substitution''' which is used in the nested event.&lt;br /&gt;
&lt;br /&gt;
If this key is set to ''yes'', the variables in the nested event will contain values from the turn in which the ''nested'' event was triggered. ''This is the default behavior if the key is omitted.'' If set to ''no'', the variables in the nested event are set at the time the ''parent'' event is triggered.&lt;br /&gt;
&lt;br /&gt;
This behavior can be fine tuned with a special syntax when referencing variables. Instead of the normal '''$variable''' syntax, use '''$|variable''' to cause a variable to contain values relevant to the turn in which the nested event was triggered even when '''delayed_variable_substitution''' is set to ''no''. In this way you can have a mix of variables relevant to the parent and nested event trigger times.&lt;br /&gt;
&lt;br /&gt;
([[#Delayed Variable Substitution Example|See Examples]])&lt;br /&gt;
&lt;br /&gt;
== Multiplayer safety ==&lt;br /&gt;
&lt;br /&gt;
In multiplayer it is only safe to use WML that might require synchronization with other players because of input or random numbers (like [message] with input or options or [unstore_unit] where a unit might advance) in the following events. This is because in these cases WML needs data from other players to work right and/or do the same thing for all players. This data is only available after a network synchronization.&lt;br /&gt;
&lt;br /&gt;
List of synchronized events:&lt;br /&gt;
* moveto&lt;br /&gt;
* enter hex&lt;br /&gt;
* exit hex&lt;br /&gt;
* sighted&lt;br /&gt;
* last breath &lt;br /&gt;
* menu item X&lt;br /&gt;
* die&lt;br /&gt;
* capture &lt;br /&gt;
* recruit&lt;br /&gt;
* prerecruit &lt;br /&gt;
* recall &lt;br /&gt;
* prerecall &lt;br /&gt;
* advance&lt;br /&gt;
* pre advance&lt;br /&gt;
* post advance &lt;br /&gt;
* attack&lt;br /&gt;
* attack end &lt;br /&gt;
* attacker hits &lt;br /&gt;
* attacker misses &lt;br /&gt;
* defender hits&lt;br /&gt;
* defender misses &lt;br /&gt;
* start&lt;br /&gt;
* prestart (prestart are synced but [message][option] &amp;amp; [unstore_unit] advancement choices will do a random decision because UI things don't work during prestart events.)&lt;br /&gt;
* new turn &lt;br /&gt;
* side turn &lt;br /&gt;
* turn X &lt;br /&gt;
* side X turn &lt;br /&gt;
* side X turn Y &lt;br /&gt;
* turn refresh&lt;br /&gt;
* side turn end&lt;br /&gt;
* side X turn end&lt;br /&gt;
* side turn X end&lt;br /&gt;
* side X turn Y end&lt;br /&gt;
* turn end&lt;br /&gt;
* turn X end&lt;br /&gt;
* {{DevFeature1.13|0}} enemies defeated&lt;br /&gt;
* {{DevFeature1.13|0}} time over&lt;br /&gt;
* {{DevFeature1.13|10}} victory&lt;br /&gt;
* {{DevFeature1.13|10}} defeat&lt;br /&gt;
* {{DevFeature1.13|0}} scenario_end&lt;br /&gt;
The following are &amp;lt;b&amp;gt;not&amp;lt;/b&amp;gt; synced:&lt;br /&gt;
* select&lt;br /&gt;
* preload&lt;br /&gt;
* victory {{DevFeature1.13|10}} local_victory&lt;br /&gt;
* defeat {{DevFeature1.13|10}} local_defeat&lt;br /&gt;
* ai turn&lt;br /&gt;
&lt;br /&gt;
If an event is not listed here, ask someone to be sure.&lt;br /&gt;
&lt;br /&gt;
There is also the possibility of events that are normally synchronized when fired by the engine but can be non-synchronized when fired by WML tags from non-synchronized event. So when you are using them you must be extra careful. For example [unstore_unit] may trigger a unit advancement that will fire ''advance'' and ''post advance'' events.&lt;br /&gt;
&lt;br /&gt;
== A Trap for the Unwary ==&lt;br /&gt;
&lt;br /&gt;
You need to beware of using macros to generate events. If you include a macro expanding to an event definition twice, the event will be executed twice (not once) each time the trigger condition fires. Consider this code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
#define DOUBLE&lt;br /&gt;
    [event]&lt;br /&gt;
        name=multiply_by_2&lt;br /&gt;
        {VARIABLE_OP 2_becomes_4 multiply 2}&lt;br /&gt;
    [/event]&lt;br /&gt;
#enddef&lt;br /&gt;
&lt;br /&gt;
{DOUBLE}&lt;br /&gt;
{DOUBLE}&lt;br /&gt;
&lt;br /&gt;
{VARIABLE 2_becomes_4 2}&lt;br /&gt;
		&lt;br /&gt;
[fire_event]&lt;br /&gt;
    name=multiply_by_2&lt;br /&gt;
[/fire_event]&lt;br /&gt;
 &lt;br /&gt;
{DEBUG_MSG &amp;quot;$2_becomes_4 should be 4&amp;quot;}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After it executes, the debug message will reveal that the variable has been set to 8, not 4.&lt;br /&gt;
&lt;br /&gt;
=== Event IDs ===&lt;br /&gt;
&lt;br /&gt;
This problem can be avoided by setting an '''id''' on the event, i.e.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
#define DOUBLE&lt;br /&gt;
    [event]&lt;br /&gt;
        name=multiply_by_2&lt;br /&gt;
        id=doubler_event&lt;br /&gt;
        {VARIABLE_OP 2_becomes_4 multiply 2}&lt;br /&gt;
    [/event]&lt;br /&gt;
#enddef&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Events with the same ID will only be accepted once by the engine no matter how many times they are included, and will only be saved once to the scenario's savefile.  Events with an ID can also be removed by using the '''remove''' key, i.e.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
    id=doubler_event&lt;br /&gt;
    remove=yes&lt;br /&gt;
[/event]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that WML is encountered (at toplevel or after created from another event), the event with this ID is removed from the scenario wml, thus firing it has no effect.  After an event is removed, it can still be re-added later.&lt;br /&gt;
&lt;br /&gt;
== Predefined Events Without Filters ==&lt;br /&gt;
&lt;br /&gt;
These events do not take filter parameters (except [filter_condition] which works for all events).&lt;br /&gt;
&lt;br /&gt;
=== preload ===&lt;br /&gt;
&lt;br /&gt;
Triggers before a scenario 'prestarts' and when loading a savegame -- before anything is shown on the screen at all. Can be used to set up the [[LuaWML|Lua]] environment: loading libraries, defining helper functions, etc.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' If a game is started, saved, and then reloaded, the preload event will fire two times while playing.  However, it will only fire once when viewing the replay. If the preload event alters the gamestate the second time it fired while playing (when loading the saved game) then it can result in Out Of Sync errors.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Unlike prestart and start, the preload event '''must be able to fire more than once!''' This is because it is triggered each time a savegame is loaded in addition to the initial time when it loads before the scenario 'prestart'. This means that it is effectively ''mandatory'' to have the [[#first_time_only|first_time_only=no]] key value in a preload event.&lt;br /&gt;
&lt;br /&gt;
=== prestart ===&lt;br /&gt;
&lt;br /&gt;
Triggers before a scenario 'starts' -- before anything is shown on the screen at all. Can be used to set up things like village ownership. For things displayed on-screen such as character dialog, use '''start''' instead.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' ''This value makes the [[#first_time_only|first_time_only]] key irrelevant since, by definition, it can only fire once.''&lt;br /&gt;
&lt;br /&gt;
=== start ===&lt;br /&gt;
&lt;br /&gt;
Triggers after the map is shown but before the scenario begins -- before players can 'do' anything.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' ''This value makes the [[#first_time_only|first_time_only]] key irrelevant since, by definition, it can only fire once.''&lt;br /&gt;
&lt;br /&gt;
=== new turn ===&lt;br /&gt;
&lt;br /&gt;
Triggers at the start of every turn (not side turn). See also [[#first_time_only|first_time_only=no]]. Before any events of this type trigger, the value of the WML variable '''turn_number''' is set to the number of the turn that is beginning.&lt;br /&gt;
&lt;br /&gt;
=== turn end ===&lt;br /&gt;
&lt;br /&gt;
Triggers at the end of every turn (not side turn). See also [[#first_time_only|first_time_only=no]]. The WML variable '''side_number''' will contain the side that ended their turn.&lt;br /&gt;
&lt;br /&gt;
=== turn ''X'' end ===&lt;br /&gt;
&lt;br /&gt;
Triggers at the end of turn ''X''.&lt;br /&gt;
&lt;br /&gt;
=== side turn ===&lt;br /&gt;
&lt;br /&gt;
Triggers when a side is about to start its turn. Before events of this type trigger, the value of the WML variable '''side_number''' is set to the number of the side of the player about to take their turn. This is before any healing takes place for that side, before calculating income, and before restoring unit movement and status.&lt;br /&gt;
&lt;br /&gt;
=== ai turn ===&lt;br /&gt;
&lt;br /&gt;
Triggered just before the AI is invoked for a side. This is called after ''side turn'', and thus the WML variable '''side_number''' still holds the number of this side. Note that this event might be called several times per turn in case that fallbacks to human or droiding is involved. I.e. it happens at the middle of turn of human side 1 if the human player droids his side. It happens after the selection of ai to play the turn but before AI is told that new turn has come.&lt;br /&gt;
&lt;br /&gt;
'''Note:'''  ''This event can break replays if it is used improperly. The ai turn event does not fire during replays. The intention is only to guide the AI to make choices (movements, attacks) which are then saved to the replay.''&lt;br /&gt;
&lt;br /&gt;
=== turn refresh ===&lt;br /&gt;
&lt;br /&gt;
Like '''side turn''', triggers just before a side is taking control but '''after''' healing, calculating income, and restoring unit movement and status. WML variable '''side_number''' holds the number of this side.&lt;br /&gt;
&lt;br /&gt;
Note that the turn refresh event does occur on turn 1, even though healing, income and unit refreshing do not.&lt;br /&gt;
&lt;br /&gt;
=== turn ''X'' ===&lt;br /&gt;
&lt;br /&gt;
Triggers at the start of turn ''X''. It's the first side initialization event. &lt;br /&gt;
&lt;br /&gt;
Side initialization events go in the order of: &lt;br /&gt;
&lt;br /&gt;
# '''turn ''X''''' &lt;br /&gt;
# '''new turn''' &lt;br /&gt;
# '''side turn''' &lt;br /&gt;
# '''side ''X'' turn''' &lt;br /&gt;
# '''side turn ''X''''' &lt;br /&gt;
# '''side ''X'' turn ''Y''''' &lt;br /&gt;
# '''turn refresh''' &lt;br /&gt;
# '''side ''X'' turn refresh''' &lt;br /&gt;
# '''turn ''X'' refresh''' &lt;br /&gt;
# '''side ''X'' turn ''Y'' refresh'''&lt;br /&gt;
&lt;br /&gt;
=== side ''X'' turn ''Y'' ===&lt;br /&gt;
&lt;br /&gt;
This event triggers at the start of turn ''Y'' of side X &lt;br /&gt;
&lt;br /&gt;
=== side ''X'' turn ===&lt;br /&gt;
&lt;br /&gt;
This event triggers at the start of any turn of side X&lt;br /&gt;
&lt;br /&gt;
'''Note:''' ''Of course, [[#first_time_only|first_time_only=no]] is needed for this event to be triggered more than once.''&lt;br /&gt;
&lt;br /&gt;
=== side turn ''X'' ===&lt;br /&gt;
&lt;br /&gt;
This event triggers at the start of any side on turn X&lt;br /&gt;
&lt;br /&gt;
'''Note:''' ''Of course, [[#first_time_only|first_time_only=no]] is needed for this event to be triggered more than once.''&lt;br /&gt;
&lt;br /&gt;
=== side X turn Y refresh ===&lt;br /&gt;
&lt;br /&gt;
This event triggers at the turn refresh for side X on turn Y&lt;br /&gt;
&lt;br /&gt;
=== side ''X'' turn refresh ===&lt;br /&gt;
&lt;br /&gt;
This event triggers at the turn refresh for side X&lt;br /&gt;
&lt;br /&gt;
'''Note:''' ''Of course, [[#first_time_only|first_time_only=no]] is needed for this event to be triggered more than once.''&lt;br /&gt;
&lt;br /&gt;
=== turn ''X'' refresh ===&lt;br /&gt;
&lt;br /&gt;
This event triggers for any side at the refresh of turn X.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' ''Of course, [[#first_time_only|first_time_only=no]] is needed for this event to be triggered more than once.''&lt;br /&gt;
&lt;br /&gt;
=== side turn end ===&lt;br /&gt;
&lt;br /&gt;
Triggers after a side ends its turn. Like side turn, there are also some variations for specific combinations of side number and turn number. Here is the order in which the turn end events trigger:&lt;br /&gt;
&lt;br /&gt;
# '''side turn end''' &lt;br /&gt;
# '''side ''X'' turn end''' &lt;br /&gt;
# '''side turn ''X'' end''' &lt;br /&gt;
# '''side ''X'' turn ''Y'' end''' &lt;br /&gt;
# '''turn end''' &lt;br /&gt;
# '''turn ''X'' end''' &lt;br /&gt;
&lt;br /&gt;
=== time over ===&lt;br /&gt;
&lt;br /&gt;
Triggers on turn ''turns''. (''turns'' is specified in [scenario])&lt;br /&gt;
&lt;br /&gt;
=== enemies defeated ===&lt;br /&gt;
&lt;br /&gt;
Triggers when all sides that are not defeated are allied and if there is at least one human (or human networked) side among them. Especially this event triggers in a situaltion that would normaly cause a victory due to enemies defeated. (regardless of whether this was disabled with victory_when_enemies_defeated=no). &lt;br /&gt;
&lt;br /&gt;
=== local_victory ===&lt;br /&gt;
&lt;br /&gt;
In Wesnoth 1.12 and earlier, the event described here is '''victory''', {{DevFeature1.13|10}} in 1.14 the event described here is '''local_victory'''.&lt;br /&gt;
&lt;br /&gt;
This event will be fired at the end of a scenario, if the player's side won. If it fires as a result of an '''[endlevel]''' tag, the event is processed before the line after the '''[endlevel]]''' tag. The event is not synchronized, as in networked mp it is possible to have different results for different players.&lt;br /&gt;
&lt;br /&gt;
=== local_defeat ===&lt;br /&gt;
&lt;br /&gt;
In Wesnoth 1.12 are earlier, the event described here is '''defeat''', {{DevFeature1.13|10}} in 1.14 the event described here is '''local_defeat'''.&lt;br /&gt;
&lt;br /&gt;
Functions identically to '''local_victory''', except that the player's side lost.&lt;br /&gt;
&lt;br /&gt;
=== victory ===&lt;br /&gt;
&lt;br /&gt;
This section describes a new event Wesnoth 1.14. In 1.12 and earlier, the '''victory''' event is equivalent to 1.14's '''local_victory'''.&lt;br /&gt;
&lt;br /&gt;
This event will be fired at the end of a scenario, if the game will proceed to the next scenario. In multiplayer, this means that it will fire on all players' clients, even for players who received a '''local_defeat''', as long as the game continues to the next scenario. This event is synchronized.&lt;br /&gt;
&lt;br /&gt;
It helps debugging if the victory event allows you to safely advance to any of the possible next maps after using the &amp;quot;:next_level&amp;quot; command. Scenarios where key units are picked up before the victory, or where some action chosen earlier determines which map to advance to, make it hard to quickly test scenarios in a campaign.&lt;br /&gt;
&lt;br /&gt;
Bug [https://github.com/wesnoth/wesnoth/issues/4667 #4667]: this event is treated as unsynchronized in replays, causing OOS reports when watching the replay.&lt;br /&gt;
&lt;br /&gt;
=== defeat ===&lt;br /&gt;
&lt;br /&gt;
This section describes a new event Wesnoth 1.14. In 1.12 and earlier, the '''defeat''' event is equivalent to 1.14's '''local_defeat'''.&lt;br /&gt;
&lt;br /&gt;
This event will be fired at the end of a scenario, if the game resulted in a game-over other than victoriously reaching the end of a campaign (including single-scenario campaigns). Synchronization (including bug #4667) is the same as '''victory'''.&lt;br /&gt;
&lt;br /&gt;
=== scenario_end ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|10}} This event fires immediately after '''victory''' or '''defeat'''; it is synchronized, but is also affected by bug #4667.&lt;br /&gt;
&lt;br /&gt;
Note: in 1.13.0 - 1.13.9 this event was added as a synchronized alternative to the events that are, since 1.13.10, called local_victory or local_defeat.&lt;br /&gt;
&lt;br /&gt;
== Predefined Events With Filters ==&lt;br /&gt;
&lt;br /&gt;
Filters (except [filter_condition] which is for all sorts of events) can be applied to the following event triggers (see [[FilterWML]]; see also below). The actions specified in the event tag will be executed only if the filter returns true. &lt;br /&gt;
These event triggers are all actions by units ('''moveto''', '''attack''') or things that happen to units ('''recruit''', '''advance'''). When one of these events is triggered, the position of the active unit (referred to as the '''primary unit''') is stored in the variables '''x1''' and '''y1''' and the position of any unit that primary unit does something to is stored in the variables '''x2''' and '''y2''' (this unit is referred to as the '''secondary unit''' below). '' These units are also automatically stored in the variables '''unit''' and '''second_unit''' as if they had been stored using the '''[store_unit]''' tag. see [[SingleUnitWML]]. weapon and second_weapon variables are available inside attack, attacker_hits, defender_hits, die and last_breath events. See [[VariablesWML#Automatically_Stored_Variables|automatically stored variables]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== moveto ===&lt;br /&gt;
&lt;br /&gt;
Triggers after the primary unit moves. Typically this is used when the primary unit gets to a particular location and a filter for the location of the primary unit is included; remember that this is the location that the primary unit lands on, not the location it started on or any location it travels on. If the unit moves to a village, the capture event will be fired before this event. &amp;lt;br /&amp;gt;''An '''[allow_undo]''' tag anywhere within a moveto event will cancel any lack of undo functionality the event would have caused. Note that undo functionality will only move the unit back to its former location; it will not undo other changes to the game caused by the event. Thus it is up to the scenario designer to use this tag correctly.'' $x2 and $y2 refer to the hex the unit came from.&lt;br /&gt;
&lt;br /&gt;
=== sighted ===&lt;br /&gt;
&lt;br /&gt;
A '''sighted''' event is triggered by a unit becoming visible to a side (other than the unit's own side). This is mostly useful when the side seeing the unit uses [[fog of war]] or [[shroud]], but they still fire even when fog/shroud is not in use, and they do take into account the {{tag2|AbilitiesWML#The_.5Babilities.5D_tag|hides}} ability (for a moving unit and for ambushers). The ''primary unit'' is the unit that became visible, and the ''secondary unit'' belongs to the side that now sees the primary unit. In some cases, sighted events can be delayed from when they &amp;quot;should&amp;quot; occur. If that happens, the secondary unit will be filtered as if it was at the location where the event &amp;quot;should&amp;quot; have occurred, and ''x2,y2'' will store that location (not the current position of the secondary unit). To understand when sighted events fire, it is helpful to distinguish the times the acting unit sights other units from the times when the acting unit is sighted.&lt;br /&gt;
&lt;br /&gt;
An acting unit can sight other units when it is recruited, recalled, leveled, or moved, and when fog or shroud is cleared from occupied hexes as a result. In these cases, the acting unit is always the ''secondary unit''. For the first three actions, there are two events associated with the action; clearing occurs between these events, but any sighted events are fired after the second event. (For example, when a unit is recruited, the ''prerecruit'' event fires, then fog is cleared, then the ''recruit'' event fires, then ''sighted'' events fire.) For movement, the sighted events fire between ''enter_hex'' and ''exit_hex'' events, but sometimes sighted events are postponed until the moving unit reaches a good place to stop (e.g. not in an occupied hex). As a major exception to the above, players have the option to delay shroud (and fog) updates. If the player delays shroud updates, sighted events are also delayed until the shroud is updated.&lt;br /&gt;
&lt;br /&gt;
An acting unit can be sighted by other sides when it is recruited, recalled, leveled (in rare cases), or moved. In these cases, the acting unit is always the ''primary unit''. These events fire after sightings by the acting unit (unless the player delayed shroud updates). For the first two, the sighted event fires for all sides that can see the unit, other than the unit's own side (even if those sides use neither fog nor shroud). For leveling units, sides that could see the unit before it leveled are excluded. (This is why these events are rare &amp;amp;ndash; the leveling unit must have lost a [hides] ability as a result of leveling in order to be seen after, but not before, leveling.) For movement, a sighted event is fired for each side that could see the unit after movement, but not before. In particular, only the starting and ending hexes are considered; a unit that moves through seen hexes but ends movement in a fogged hex does not trigger a sighted event for itself. In all cases where the acting unit is sighted, a (single) ''secondary unit'' is chosen from the sighting team. This choice should be considered arbitrary, but units within their sight range of the acting unit are chosen in preference to units further away. You may want to use [filter_second] in order to restrict a sighted event in a single player scenario to only being triggered by the player and not by other non-allied sides.&lt;br /&gt;
&lt;br /&gt;
Sighted events are not triggered by a ''hides'' ability becoming inactive, unless it becomes inactive due to that unit's movement or to that unit ambushing another. (To detect a ''nightstalk'' ability becoming inactive due to time of day, use a ''new_turn'' event. Custom ''hides'' abilities might need similar handling.)&lt;br /&gt;
&lt;br /&gt;
Sighted events have some special caveats for WML authors. First and foremost, {{tag|DirectActionsWML|allow_undo}} should generally be avoided in sighted events. It can be used if current unit positions have no bearing on the event, but otherwise it could cause a replay to go out of sync if a player delays shroud updates and undoes a move. This should not be an onerous restriction, though, as clearing fog will block the ability to undo, regardless of what happens within an event. Secondly, it is currently possible for WML to kill a unit involved in a sighted event before that event fires. If that happens, filters on the killed unit will not match anything and the event may seem to have not fired.&lt;br /&gt;
&lt;br /&gt;
=== enter_hex ===&lt;br /&gt;
&lt;br /&gt;
Triggers for each hex entered during movement, with $x1,$y1 identifying the hex entered and $x2,$y2 identifying the previous hex (just exited). In Wesnoth 1.12, the movement will be interrupted, stopping the unit where it is; this behavior can be avoided by using the {{tag|DirectActionsWML|allow_undo}} tag or `NO_INTERRUPT_NO_UNDO` macro. {{DevFeature1.13|11}} movement is not interrupted unless the {{tag|DirectActionsWML|cancel_action}} tag is used.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This event behaves a bit unusually if the hex is occupied (and the moving unit is simply passing through). When this happens, $x1,$y1 is still the hex where the event was triggered, but the moving unit (stored in $unit) will be located somewhere earlier in the route (the most recent unoccupied hex). That is, $x1,$y1 will not equal $unit.x,$unit.y (a condition that can be used to detect when the entered hex is occupied). The moving unit will have already spent its movement points to enter the event's hex even though it is has not actually moved from the most recent unoccupied hex.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' At the time of writing (7ca5a0df, just before 1.13.11), if the hex is occupied then $unit contains the occupying unit, not the moving unit.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' At the time of writing (1.16.2), if the hex is occupied then $unit does contain the moving unit.&lt;br /&gt;
&lt;br /&gt;
=== exit_hex ===&lt;br /&gt;
&lt;br /&gt;
Triggers for each hex exited during movement, with $x1,$y1 identifying the hex exited and $x2,$y2 identifying the next hex (to be entered). If this event is handled without using {{tag|DirectActionsWML|allow_undo}}, then movement is interrupted, stopping the unit where it is. {{DevFeature1.13|11}} movement is not interrupted unless the {{tag|DirectActionsWML|cancel_action}} tag is used.&lt;br /&gt;
&lt;br /&gt;
'''Note:''' This event behaves a bit unusually if the hex is occupied (and the moving unit is simply passing through). When this happens, $x1,$y1 is still the hex where the event was triggered, but the moving unit (stored in $unit) will be located somewhere earlier in the route (the most recent unoccupied hex). That is, $x1,$y1 will not equal $unit.x,$unit.y (a condition that can be used to detect when the exited hex is occupied). The moving unit will have already spent its movement points to enter the event's hex even though it is has not actually moved from the most recent unoccupied hex.&lt;br /&gt;
&lt;br /&gt;
=== attack ===&lt;br /&gt;
&lt;br /&gt;
Triggers when the primary unit attacks the secondary unit. Variables $weapon and $second_weapon contain weapons used for this attack by primary and secondary units respectively for all attack-related events (attack_end, attacker_hits, attacker_misses, defender_hits, defender_misses, die and last_breath).&lt;br /&gt;
&lt;br /&gt;
=== attack end ===&lt;br /&gt;
&lt;br /&gt;
Similar to '''attack''', but is triggered ''after'' the fight instead of before. Note that if either unit is killed during the fight, this event triggers before any '''die''' events.&lt;br /&gt;
&lt;br /&gt;
=== attacker hits ===&lt;br /&gt;
&lt;br /&gt;
Triggers when the the primary unit (the attacker) hits the secondary unit (the defender). The value of the WML variable '''damage_inflicted''' is set to the number of hitpoints inflicted by the attacker.&lt;br /&gt;
&lt;br /&gt;
=== attacker misses ===&lt;br /&gt;
&lt;br /&gt;
Same as ''attacker hits'', but is triggered when the attacker misses.&lt;br /&gt;
&lt;br /&gt;
=== defender hits ===&lt;br /&gt;
&lt;br /&gt;
Triggers when the primary unit (the attacker) is hit in retaliation by the secondary unit (the defender). The value of the WML variable '''damage_inflicted''' is set to the number of hitpoints inflicted by the defender.&lt;br /&gt;
&lt;br /&gt;
=== defender misses ===&lt;br /&gt;
&lt;br /&gt;
Same as ''defender hits'', but is triggered when the defender misses.&lt;br /&gt;
&lt;br /&gt;
=== petrified ===&lt;br /&gt;
Triggers when the primary unit is hit by an attack with the 'petrifies' ability (See ''petrifies'', [[AbilitiesWML]]) by the secondary unit (the unit with the 'petrifies' ability).&lt;br /&gt;
&lt;br /&gt;
=== last breath ===&lt;br /&gt;
&lt;br /&gt;
Triggers when the primary unit is killed by the secondary unit, but before the death animation is triggered. Use this instead of name=die when you want the primary unit to make a final [message]. &lt;br /&gt;
&lt;br /&gt;
=== die ===&lt;br /&gt;
&lt;br /&gt;
Triggers when the primary unit is killed by the secondary unit. ''Note: The primary unit is not removed from the game until the end of this event. The primary unit can still be manipulated, will block other units from taking its hex, and will still be found by standard unit filters (except [have_unit]). To prevent this behavior, you can use [kill] to remove the unit immediately. However, this will stop any (still unfired) other events that also match the unit from firing afterwards, so use with caution.'' If you want to the primary unit to make a final [message], use name=last_breath, see above.&lt;br /&gt;
&lt;br /&gt;
=== capture ===&lt;br /&gt;
&lt;br /&gt;
Triggers when the primary unit captures a village. The village may have been previously neutral, or previously owned by another side; merely moving into your own villages does not constitute a capture. This event will be fired before the moveto event. Villages becoming neutral (via [capture_village]) do not fire capture events. The variable $owner_side contains the previous owner side of the village. 0 means neutral.&lt;br /&gt;
&lt;br /&gt;
=== recruit ===&lt;br /&gt;
&lt;br /&gt;
Triggers when the primary unit is recruited (by the secondary unit). (That is, when a unit is recruited it will trigger this event and this event's filter will filter that unit.).&lt;br /&gt;
&lt;br /&gt;
=== prerecruit ===&lt;br /&gt;
&lt;br /&gt;
Triggers when the primary unit is recruited (by the secondary unit) but before it is displayed.&lt;br /&gt;
&lt;br /&gt;
=== recall ===&lt;br /&gt;
&lt;br /&gt;
Triggers after the primary unit is recalled (by the secondary unit).&lt;br /&gt;
&lt;br /&gt;
=== prerecall ===&lt;br /&gt;
&lt;br /&gt;
Triggers when the primary unit is recalled (by the secondary unit) but before it is displayed.&lt;br /&gt;
&lt;br /&gt;
=== advance ===&lt;br /&gt;
&lt;br /&gt;
Triggers just before the primary unit is going to advance to another unit, or advance by AMLA. (This is after the player selects which advancement, if there is a choice). If this event removes the unit, changes the unit's type, or reduces the unit's experience below what it needs to advance, then the advancement is aborted. This also applies to advancement by AMLA.&lt;br /&gt;
&lt;br /&gt;
=== pre advance ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}} Triggers before the unit advancement dialog is shown. If this event removes the unit or reduces the unit's experience below what it needs to advance, then the advancement is aborted.&lt;br /&gt;
&lt;br /&gt;
=== post advance ===&lt;br /&gt;
&lt;br /&gt;
Triggers just after the primary unit has advanced to another unit, or advance by AMLA.&lt;br /&gt;
&lt;br /&gt;
=== select ===&lt;br /&gt;
&lt;br /&gt;
Triggers when the primary unit is selected. Prior to version 1.11, this also triggered when a move was interrupted, as the game keeps the moving unit selected by selecting it again at the end of movement. ''Note: in networked multiplayer, these events are only executed by the client on which the event is triggered, leading to out of sync errors if you modify the game state in the event.''&lt;br /&gt;
&lt;br /&gt;
=== menu item ''X'' ===&lt;br /&gt;
&lt;br /&gt;
Triggers when a WML menu item with id=''X'' is selected. ''Note: if the menu item has a [command], this event may be executed before or after the command; there is no guarantee.''&lt;br /&gt;
&lt;br /&gt;
=== unit placed {{DevFeature1.13|3}}===&lt;br /&gt;
&lt;br /&gt;
Triggers when the primary unit is placed on the map, regardless of method. This includes but might not be limited to:&lt;br /&gt;
* Leaders and units placed in side definitions (fired once for every unit right before prestart events)&lt;br /&gt;
* Recruited and recalled units&lt;br /&gt;
* Units placed on the map with the [unit] tag ('''not''' units created directly onto a recall list or variable)&lt;br /&gt;
* Units placed by the wesnoth.put_unit() Lua function&lt;br /&gt;
* Units placed by :to_map in Lua (which is a shortcut for the above)&lt;br /&gt;
* Units created via debug mode&lt;br /&gt;
* Units created by plague &lt;br /&gt;
* Every use of [unstore_unit], when ''fire_event'' is set to ''yes'' (default is ''no'')&lt;br /&gt;
* Units moved on map with [move_unit] before {{DevFeature1.15|8}}&lt;br /&gt;
* Units matching the filter of [petrify], [unpetrify] or [harm_unit] before {{DevFeature1.15|8}}&lt;br /&gt;
* Units who receive a bonus from the feeding ability every time except the first, before {{DevFeature1.15|8}}&lt;br /&gt;
This event is solely intended for special cases where no other event types suffice, for example if you must immediately apply a modification to every unit that ever appears. The event does '''not''' keep track of which units it has previously fired for, but can fire an unlimited number of times for the same unit as long the unit is &amp;quot;placed&amp;quot; several times and the event filter doesn't prevent it.&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Notes and Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Primary/Secondary Unit Speaker Example ===&lt;br /&gt;
&lt;br /&gt;
In events, the primary unit can be referred to as '''unit''' and the secondary unit can be referred to as '''second_unit''' in [message] tags using the '''speaker''' key. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
    name=last breath&lt;br /&gt;
    [message]&lt;br /&gt;
        speaker=second_unit&lt;br /&gt;
        message= _ &amp;quot;Hahaha! I finally killed you!&amp;quot;&lt;br /&gt;
    [/message]&lt;br /&gt;
&lt;br /&gt;
    [message]&lt;br /&gt;
        speaker=unit&lt;br /&gt;
        message= _ &amp;quot;It's not over yet! I'll come back to haunt you!&amp;quot;&lt;br /&gt;
    [/message]&lt;br /&gt;
[/event]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Nested Event Example ===&lt;br /&gt;
&lt;br /&gt;
An event is created for a portal that opens on turn 10. The parent (or 'outer') event executes on turn 10 at which point the nested moveto event is created. This nested event executes when a player steps on a certain spot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
    name=turn 10&lt;br /&gt;
 &lt;br /&gt;
    [event]&lt;br /&gt;
        name=moveto&lt;br /&gt;
        [filter]&lt;br /&gt;
            x,y=5,8&lt;br /&gt;
        [/filter]&lt;br /&gt;
 &lt;br /&gt;
        # moving to 5,8 will trigger this event only on turn 10 and after&lt;br /&gt;
    [/event]&lt;br /&gt;
[/event]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An equivalent way of doing this would be to create a single moveto event with a '''[filter_condition]''' statement to check for turn number but using nested '''[event]''' tags is a convenient shortcut to accomplish this task without resorting to '''[filter_condition]''' statements. Using '''[if]''' tags is also an option especially if your event has '''first_time_only=yes'''.&lt;br /&gt;
&lt;br /&gt;
=== Delayed Variable Substitution Example ===&lt;br /&gt;
&lt;br /&gt;
This code will display a message showing the turn number on which the nested ''moveto'' event happens.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
    name=turn 10&lt;br /&gt;
&lt;br /&gt;
    [event]&lt;br /&gt;
        name=moveto&lt;br /&gt;
        delayed_variable_substitution=yes&lt;br /&gt;
        [filter]&lt;br /&gt;
            x,y=5,8&lt;br /&gt;
        [/filter]&lt;br /&gt;
&lt;br /&gt;
        {DEBUG_MSG &amp;quot;Turn $turn_number&amp;quot;} &lt;br /&gt;
    [/event]&lt;br /&gt;
[/event]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since this is the default behavior for the '''delayed_variable_substitution''' key, the following example is identical.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
    name=turn 10&lt;br /&gt;
&lt;br /&gt;
    [event]&lt;br /&gt;
        name=moveto&lt;br /&gt;
        [filter]&lt;br /&gt;
            x,y=5,8&lt;br /&gt;
        [/filter]&lt;br /&gt;
&lt;br /&gt;
        {DEBUG_MSG &amp;quot;Turn $turn_number&amp;quot;} &lt;br /&gt;
    [/event]&lt;br /&gt;
[/event]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following code will always display &amp;quot;Turn 10&amp;quot; when the nested ''moveto'' event happens. This is because the variable substitution is done when the parent event is triggered and spawns the nested event, ''not'' when the nested event is triggered.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
    name=turn 10&lt;br /&gt;
&lt;br /&gt;
    [event]&lt;br /&gt;
        name=moveto&lt;br /&gt;
        delayed_variable_substitution=no&lt;br /&gt;
        [filter]&lt;br /&gt;
            x,y=5,8&lt;br /&gt;
        [/filter]&lt;br /&gt;
&lt;br /&gt;
        {DEBUG_MSG &amp;quot;Turn $turn_number&amp;quot;} &lt;br /&gt;
    [/event]&lt;br /&gt;
[/event]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Finally, the following example is identical to the first two in that it will display a message showing the turn number on which the nested ''moveto'' event happens, despite the fact that the '''delayed_variable_substitution''' key is set to ''no''. This is because the special '''$|variable''' syntax is used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
    name=turn 10&lt;br /&gt;
&lt;br /&gt;
    [event]&lt;br /&gt;
        name=moveto&lt;br /&gt;
        delayed_variable_substitution=no&lt;br /&gt;
        [filter]&lt;br /&gt;
            x,y=5,8&lt;br /&gt;
        [/filter]&lt;br /&gt;
&lt;br /&gt;
        {DEBUG_MSG &amp;quot;Turn $|turn_number&amp;quot;} &lt;br /&gt;
    [/event]&lt;br /&gt;
[/event]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multiple Nested Events ===&lt;br /&gt;
&lt;br /&gt;
Every delayed_variable_substitution=no causes a variable substitution run on the subevent where it occurs at the spawn time of this event and on all following subevents. For any specific event, variable substitution happens at least one time when the event is executed. For each delayed=no key appearing in itself or in an event of an &amp;quot;older&amp;quot; generation, which is not the toplevel event, an additional variable substitution run is made.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[event] # parent&lt;br /&gt;
    name=turn 2&lt;br /&gt;
    # delayed_variable_substitution=no # In the parent event, delayed= has no effect.&lt;br /&gt;
 &lt;br /&gt;
    [event] # child&lt;br /&gt;
        name=turn 3&lt;br /&gt;
        delayed_variable_substitution=no # Causes variable substitution in the child, grandchild and great-grandchild event&lt;br /&gt;
        # at execution time of the parent event = spawn time of the child event.&lt;br /&gt;
&lt;br /&gt;
        [event]# grandchild&lt;br /&gt;
            name=turn 4&lt;br /&gt;
            delayed_variable_substitution=yes # no variable substitution in the grandchild and great-grandchild event&lt;br /&gt;
            # at execution time of the child event = spawn time of the grandchild event&lt;br /&gt;
&lt;br /&gt;
            [event] # great-grandchild&lt;br /&gt;
                name=turn 5&lt;br /&gt;
                {DEBUG_MSG $turn_number} # output: 2 - value from the variable substitution at execution time of the parent event,&lt;br /&gt;
                # caused by delayed=no in the child event&lt;br /&gt;
&lt;br /&gt;
                {DEBUG_MSG $||turn_number}# output: &amp;quot;$turn_number&amp;quot;&lt;br /&gt;
                # Each variable substitution transforms a &amp;quot;$|&amp;quot; to a &amp;quot;$&amp;quot; (except when no | left).&lt;br /&gt;
&lt;br /&gt;
                {DEBUG_MSG $|turn_number}# output: 5 - from the variable substitution at execution time&lt;br /&gt;
                # of the great-grandchild event&lt;br /&gt;
            [/event]&lt;br /&gt;
        [/event]&lt;br /&gt;
    [/event]&lt;br /&gt;
[/event]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[DirectActionsWML]]&lt;br /&gt;
* [[InternalActionsWML]]&lt;br /&gt;
* [[InterfaceActionsWML]]&lt;br /&gt;
* [[FilterWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=69211</id>
		<title>WML Abilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=69211"/>
		<updated>2022-01-21T02:31:27Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* Blitz */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Remember that you must include the WML ability code in every scenario where you intend them to work. Or include them in the unit file inside the [unit_type] tag.&lt;br /&gt;
&lt;br /&gt;
Some abilities require macros from [[WML_Utilities|Utilities]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Knockback  ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a knockback attack, it is immediately pushed back one hex away from the attacker. Units cannot be knocked back into an occupied hex, out of villages or onto terrain they normally could not move to. Only works on offense.&lt;br /&gt;
&lt;br /&gt;
Use this to display the special correctly on the attacks you want:&lt;br /&gt;
    #define WEAPON_SPECIAL_KNOCKBACK&lt;br /&gt;
        [dummy]&lt;br /&gt;
            id=knockback&lt;br /&gt;
            name= _ &amp;quot;knockback&amp;quot;&lt;br /&gt;
            female_name= _ &amp;quot;female^knockback&amp;quot;&lt;br /&gt;
            description=_ &amp;quot;Knockback:&lt;br /&gt;
    When a unit is hit with a knockback attack, it is immediately pushed back one hex away from the attacker. Units cannot be knocked back into an occupied hex, out of villages or onto terrain they normally could not move to. Only works on offense.&amp;quot;&lt;br /&gt;
        [/dummy]&lt;br /&gt;
    #enddef&lt;br /&gt;
&lt;br /&gt;
And insert this event to your [scenario], [multiplayer], [unit_type] or [era]:&lt;br /&gt;
    [event]&lt;br /&gt;
        name=attacker hits&lt;br /&gt;
        first_time_only=no&lt;br /&gt;
    &lt;br /&gt;
        [filter_attack]&lt;br /&gt;
            special=knockback&lt;br /&gt;
        [/filter_attack]&lt;br /&gt;
    &lt;br /&gt;
        [filter_second]&lt;br /&gt;
            [not]&lt;br /&gt;
                [filter_location]&lt;br /&gt;
                    terrain=*^V*&lt;br /&gt;
                [/filter_location]&lt;br /&gt;
            [/not]&lt;br /&gt;
        [/filter_second]&lt;br /&gt;
    &lt;br /&gt;
        [if]&lt;br /&gt;
            [variable]&lt;br /&gt;
                name=second_unit.hitpoints&lt;br /&gt;
                greater_than=0&lt;br /&gt;
            [/variable]&lt;br /&gt;
    &lt;br /&gt;
                [store_locations]&lt;br /&gt;
                    [not]&lt;br /&gt;
                        [filter]&lt;br /&gt;
                        [/filter]&lt;br /&gt;
                    [/not]&lt;br /&gt;
    &lt;br /&gt;
                    [filter_adjacent_location]&lt;br /&gt;
                        x,y=$x2,$y2&lt;br /&gt;
                        adjacent=-$unit.facing&lt;br /&gt;
                    [/filter_adjacent_location]&lt;br /&gt;
    &lt;br /&gt;
                    variable=knockback_target_hex&lt;br /&gt;
                [/store_locations]&lt;br /&gt;
    &lt;br /&gt;
                [if]&lt;br /&gt;
                    [variable]&lt;br /&gt;
                        name=knockback_target_hex.length&lt;br /&gt;
                        greater_than=0&lt;br /&gt;
                    [/variable]&lt;br /&gt;
    &lt;br /&gt;
                    [then]&lt;br /&gt;
                        [teleport]&lt;br /&gt;
                            [filter]&lt;br /&gt;
                                x,y=$x2,$y2&lt;br /&gt;
                            [/filter]&lt;br /&gt;
    &lt;br /&gt;
                            x,y=$knockback_target_hex.x,$knockback_target_hex.y&lt;br /&gt;
                            ignore_passability=no&lt;br /&gt;
                        [/teleport]&lt;br /&gt;
    &lt;br /&gt;
                        [if]&lt;br /&gt;
                            [have_unit]&lt;br /&gt;
                                x,y=$knockback_target_hex.x,$knockback_target_hex.y&lt;br /&gt;
                            [/have_unit]&lt;br /&gt;
    &lt;br /&gt;
                            [then]&lt;br /&gt;
                                [sound]&lt;br /&gt;
                                    name=fist.ogg&lt;br /&gt;
                                [/sound]&lt;br /&gt;
    &lt;br /&gt;
                                # the knockbacked unit doesn't seem to receive experience by default,&lt;br /&gt;
                                # so we need to add it manually&lt;br /&gt;
                                [store_unit]&lt;br /&gt;
                                    [filter]&lt;br /&gt;
                                        x,y=$knockback_target_hex.x,$knockback_target_hex.y&lt;br /&gt;
                                    [/filter]&lt;br /&gt;
    &lt;br /&gt;
                                    kill=yes&lt;br /&gt;
                                    variable=knockbacked&lt;br /&gt;
                                [/store_unit]&lt;br /&gt;
    &lt;br /&gt;
                                {VARIABLE_OP knockbacked.experience add $unit.level}&lt;br /&gt;
    &lt;br /&gt;
                                [unstore_unit]&lt;br /&gt;
                                    variable=knockbacked&lt;br /&gt;
                                    text= _ &amp;quot;knockback&amp;quot;&lt;br /&gt;
                                    {COLOR_HARM}&lt;br /&gt;
                                    advance=true&lt;br /&gt;
                                [/unstore_unit]&lt;br /&gt;
    &lt;br /&gt;
                                {CLEAR_VARIABLE knockbacked}&lt;br /&gt;
                            [/then]&lt;br /&gt;
                        [/if]&lt;br /&gt;
                    [/then]&lt;br /&gt;
                [/if]&lt;br /&gt;
    &lt;br /&gt;
                {CLEAR_VARIABLE knockback_direction,knockback_target_hex}&lt;br /&gt;
            [/then]&lt;br /&gt;
        [/if]&lt;br /&gt;
    [/event]&lt;br /&gt;
&lt;br /&gt;
=== Charm ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''charm'' attack, it instantly jumps to the attacker's side, and returns to it's original side at the beginning of that side's turn. A charmed unit has 1 movement point and can attack.&lt;br /&gt;
&lt;br /&gt;
Example that makes all Troll Whelps have charm on their attack:&lt;br /&gt;
&lt;br /&gt;
 {CHARM (type=Troll Whelp) fist}&lt;br /&gt;
&lt;br /&gt;
 #define CHARM FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x1,$y1 side charmer_side}&lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x2,$y2 side charmed_side}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR charmer_side not_equals $charmed_side (&lt;br /&gt;
             [then]&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 variables.real_side $charmed_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 side $charmer_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 moves 1}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
 &lt;br /&gt;
                 {VARIABLE_OP varname format &amp;quot;side_$charmed_side|_units_charmed&amp;quot;}&lt;br /&gt;
                 {VARIABLE $varname yes}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE varname}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE charmer_side}&lt;br /&gt;
         {CLEAR_VARIABLE charmed_side}&lt;br /&gt;
     [/event]&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=side turn&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         {VARIABLE_OP this_side_charmed to_variable &amp;quot;side_$side_number|_units_charmed&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR this_side_charmed equals yes (&lt;br /&gt;
             [then]&lt;br /&gt;
                 [store_unit]&lt;br /&gt;
                     [filter]&lt;br /&gt;
                         [not]&lt;br /&gt;
                             side=$side_number&lt;br /&gt;
                         [/not]&lt;br /&gt;
                     [/filter]&lt;br /&gt;
 &lt;br /&gt;
                     variable=possibly_charmed&lt;br /&gt;
                     kill=no&lt;br /&gt;
                 [/store_unit]&lt;br /&gt;
 &lt;br /&gt;
                 {FOREACH possibly_charmed i}&lt;br /&gt;
                     {VARIABLE_OP real_side format &amp;quot;0$possibly_charmed[$i].variables.real_side&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
                     {IF_VAR real_side not_equals &amp;quot;0&amp;quot; (&lt;br /&gt;
                         [then]&lt;br /&gt;
                             {IF_VAR side_number equals $possibly_charmed[$i].variables.real_side (&lt;br /&gt;
                                 [then]&lt;br /&gt;
                                     {CLEAR_VARIABLE possibly_charmed[$i].variables.real_side}&lt;br /&gt;
                                     {VARIABLE possibly_charmed[$i].side $side_number}&lt;br /&gt;
 &lt;br /&gt;
                                     [unstore_unit]&lt;br /&gt;
                                         variable=possibly_charmed[$i]&lt;br /&gt;
                                         find_vacant=no&lt;br /&gt;
                                     [/unstore_unit]&lt;br /&gt;
                                 [/then]&lt;br /&gt;
                             )}&lt;br /&gt;
                         [/then]&lt;br /&gt;
                     )}&lt;br /&gt;
                 {NEXT i}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE possibly_charmed}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Bloodlust ===&lt;br /&gt;
&lt;br /&gt;
Bloodlust is a very simple ability. If a unit that has bloodlust kills an enemy unit when attacking, it may attack again, provided that there are more enemy units adjacent to it.&lt;br /&gt;
&lt;br /&gt;
This would give the bloodlust ability to all Dwarvish Ulfserkers (making them insanely powerful):&lt;br /&gt;
&lt;br /&gt;
 {BLOODLUST (type=Dwarvish Ulfserker)}&lt;br /&gt;
&lt;br /&gt;
 #define BLOODLUST FILTER&lt;br /&gt;
     [event]&lt;br /&gt;
         name=die&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter_second]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter_second]&lt;br /&gt;
 &lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 moves 0}&lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Pickpocket ===&lt;br /&gt;
&lt;br /&gt;
This special could also be called loot. When a unit with this attack special sucessfully hits an enemy unit, it gains a certain amount of gold.&lt;br /&gt;
&lt;br /&gt;
To do this, use this code:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;#define WEAPON_SPECIAL_PICKPOCKET&amp;lt;br /&amp;gt;&lt;br /&gt;
 # Canned definition of the pickpocket ability to be included in a&amp;lt;br /&amp;gt;&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
   id=weapon_pickpocket&lt;br /&gt;
   name= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   name_inactive= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   description= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   description_inactive= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 # event that creates a &amp;quot;pickpocket has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no   &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]&lt;br /&gt;
   [set_variable]&lt;br /&gt;
      name=unit_att_with_pickpocket.variables.pickpocket_has_worked&lt;br /&gt;
      value=yes&lt;br /&gt;
   [/set_variable]&lt;br /&gt;
   [unstore_unit]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
   [/unstore_unit]   &lt;br /&gt;
   {CLEAR_VARIABLE unit_att_with_pickpocket}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no  &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketer&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x2,$y2&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketed&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [if]&lt;br /&gt;
      [variable]&lt;br /&gt;
         name=pickpocketer.variables.pickpocket_has_worked&lt;br /&gt;
         equals=yes&lt;br /&gt;
      [/variable]&lt;br /&gt;
      [then]&lt;br /&gt;
    [gold]&lt;br /&gt;
     side=$side_number&lt;br /&gt;
     amount=2&lt;br /&gt;
    [/gold]&lt;br /&gt;
         [unstore_unit]&lt;br /&gt;
            variable=pickpocketed&lt;br /&gt;
            text=&amp;quot;!&amp;quot;&lt;br /&gt;
            {COLOR_HEAL}&lt;br /&gt;
         [/unstore_unit]&lt;br /&gt;
      [/then]&lt;br /&gt;
   [/if]   &lt;br /&gt;
   {CLEAR_VARIABLE pickpocketer}&lt;br /&gt;
   {CLEAR_VARIABLE pickpocketed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 #enddef&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be placed after the [unit_type] tag, or in its own .cfg file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To change the amount of gold given per hit, change&lt;br /&gt;
    &amp;lt;code&amp;gt;[gold]&lt;br /&gt;
    side=$side_number&lt;br /&gt;
    amount='''X'''&lt;br /&gt;
    [/gold]&amp;lt;/code&amp;gt;&lt;br /&gt;
Where '''X''' is the amount of gold you want.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want the gold to be constant, given at the end of the turn if at least one of the attack hits, instead of '''X''' amount of gold per hit, change&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attacker_hits'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attack_end'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soultaker===&lt;br /&gt;
&lt;br /&gt;
Any unit with this ability will gain an additional point of damage per strike every time it kills an enemy. Coder(s) unknown, made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=19&amp;amp;t=20100).&lt;br /&gt;
&lt;br /&gt;
To give a unit the ability, place the following in any .cfg file loaded by the campaign or era:&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_SOULTAKER&lt;br /&gt;
 	[dummy]&lt;br /&gt;
 		id=soultaker&lt;br /&gt;
 		name= _ &amp;quot;soultaker&amp;quot;&lt;br /&gt;
 		description=_ &amp;quot;Soultaker:&lt;br /&gt;
 This unit gains an additional point added to its maximum damage whenever it kills a living unit.&amp;quot;&lt;br /&gt;
 	[/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/abilities]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=die&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[filter]&lt;br /&gt;
 		[not]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=&amp;quot;yes&amp;quot;&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/not]&lt;br /&gt;
 	[/filter]&lt;br /&gt;
 &lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		ability=soultaker&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 &lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		{COLOR_HEAL}&lt;br /&gt;
 		text= _ &amp;quot;+1 damage&amp;quot;&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 &lt;br /&gt;
 	[object]&lt;br /&gt;
 		silent=yes&lt;br /&gt;
 		duration=forever&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 &lt;br /&gt;
 		[effect]&lt;br /&gt;
 			apply_to=attack&lt;br /&gt;
 			range=melee&lt;br /&gt;
 			increase_damage=1&lt;br /&gt;
 			increase=1&lt;br /&gt;
 		[/effect]&lt;br /&gt;
 	[/object]&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
And the following in the unit's [abilities] tag:&lt;br /&gt;
&lt;br /&gt;
 	{ABILITY_SOULTAKER}&lt;br /&gt;
&lt;br /&gt;
===Soultaker (weapon special)===&lt;br /&gt;
&lt;br /&gt;
Unit with this weapon special will gain an additional point of damage per strike for that weapon every time it kills an enemy with this attack. Coder Ravana, made for ageless era (http://forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=25274) based on previous ability.&lt;br /&gt;
&lt;br /&gt;
To give a unit the weapon special, load the following code:&lt;br /&gt;
&lt;br /&gt;
 #define WEAPON_SPECIAL_SOULTAKER&lt;br /&gt;
  [dummy]&lt;br /&gt;
   id=soultaker&lt;br /&gt;
   name= _ &amp;quot;soultaker&amp;quot;&lt;br /&gt;
   description=_&amp;quot;Soultaker:&lt;br /&gt;
 This unit gains an additional point added to its maximum damage whenever it kills a living unit.&amp;quot;&lt;br /&gt;
  [/dummy]&lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 [event]&lt;br /&gt;
  name=die&lt;br /&gt;
  first_time_only=no&lt;br /&gt;
  id=soultaker_event&lt;br /&gt;
  [filter]&lt;br /&gt;
   [not]&lt;br /&gt;
    [filter_wml]&lt;br /&gt;
     [status]&lt;br /&gt;
      not_living=&amp;quot;yes&amp;quot;&lt;br /&gt;
     [/status]&lt;br /&gt;
    [/filter_wml]&lt;br /&gt;
   [/not]&lt;br /&gt;
  [/filter]&lt;br /&gt;
  [filter_second_attack]&lt;br /&gt;
   special=soultaker&lt;br /&gt;
  [/filter_second_attack]&lt;br /&gt;
  [unstore_unit]&lt;br /&gt;
   variable=second_unit&lt;br /&gt;
   {COLOR_HEAL}&lt;br /&gt;
   text= _ &amp;quot;+1 damage&amp;quot;&lt;br /&gt;
   find_vacant=no&lt;br /&gt;
  [/unstore_unit]&lt;br /&gt;
  [object]&lt;br /&gt;
   silent=yes&lt;br /&gt;
   duration=forever&lt;br /&gt;
   [filter]&lt;br /&gt;
    x,y=$x2,$y2&lt;br /&gt;
   [/filter]&lt;br /&gt;
   [effect]&lt;br /&gt;
    apply_to=attack&lt;br /&gt;
    name=$second_weapon.name&lt;br /&gt;
    increase_damage=1&lt;br /&gt;
   [/effect]&lt;br /&gt;
  [/object]&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+attack]&lt;br /&gt;
  [+specials]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
And the following in the attack's [specials] tag:&lt;br /&gt;
&lt;br /&gt;
  {WEAPON_SPECIAL_SOULTAKER}&lt;br /&gt;
&lt;br /&gt;
===Charm (Type 2)===&lt;br /&gt;
&lt;br /&gt;
An attack special. If the attack hits, and the target is level 0 or 1, the target is converted to the attacker's side. However, if it misses, the attacker is converted to the defender's side. Maintainer is krotop, using 1.6.x syntax (and compatible with 1.7.x], made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=21&amp;amp;t=22539)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define WEAPON_SPECIAL_CHARM&lt;br /&gt;
 # Canned definition of the Charm ability to be included in a&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=weapon_charm&lt;br /&gt;
 	name= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	name_inactive= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	description_inactive= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 &lt;br /&gt;
 # event that creates a variable at the beginning of the fight to check if the attacker hit at least once by the end.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]	&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=no&lt;br /&gt;
 	[/set_variable]	&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that creates a &amp;quot;charm has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=yes&lt;br /&gt;
 	[/set_variable]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that shifts a unit to the other side&lt;br /&gt;
 # if the defending unit&lt;br /&gt;
 #       - was not lvl1 or lvl0 &lt;br /&gt;
 #       - and was not a recruiting unit &lt;br /&gt;
 #       - and was a not a &amp;quot;non-living&amp;quot; creature&lt;br /&gt;
 # then :&lt;br /&gt;
 # -&amp;gt; if the attacker missed all attacks, it goes to the defender side.&lt;br /&gt;
 # -&amp;gt; if the attacker hit once at least, the defender goes to the attacker side.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		canrecruit=no&lt;br /&gt;
 		[and]&lt;br /&gt;
 			level=0&lt;br /&gt;
 			[or]&lt;br /&gt;
 			level=1&lt;br /&gt;
 			[/or]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 		[and]&lt;br /&gt;
 			[not]&lt;br /&gt;
 			[filter_wml]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=yes&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/filter_wml]&lt;br /&gt;
 			[/not]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmer&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmed&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=charmer.variables.charm_has_worked&lt;br /&gt;
 			equals=no&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmer.side&lt;br /&gt;
 				value=$charmed.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmer&lt;br /&gt;
 				text=&amp;quot;Charm failed!&amp;quot;&lt;br /&gt;
 				{COLOR_HARM}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/then]&lt;br /&gt;
 		[else]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmed.side&lt;br /&gt;
 				value=$charmer.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmed&lt;br /&gt;
 				text=&amp;quot;Charmed!&amp;quot;&lt;br /&gt;
  				{COLOR_HEAL}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/else]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 &lt;br /&gt;
 	{CLEAR_VARIABLE charmer}&lt;br /&gt;
 	{CLEAR_VARIABLE charmed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 &lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
== Works ==&lt;br /&gt;
&lt;br /&gt;
Unit with ability ''works'' will produce 1 gold per turn.&lt;br /&gt;
&lt;br /&gt;
Put this macro into you code before the last piece of code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define ABILITY_WORKS&lt;br /&gt;
     [leadership]&lt;br /&gt;
          value=0&lt;br /&gt;
          id=peasant_works&lt;br /&gt;
          cumulative=no&lt;br /&gt;
          name=&amp;quot;works&amp;quot;&lt;br /&gt;
          description= _ &amp;quot;Works:&lt;br /&gt;
This unit produces 1 gold per turn.&amp;quot;&lt;br /&gt;
    [/leadership]&lt;br /&gt;
 #enddef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Put this event into your code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
	name=side turn&lt;br /&gt;
	first_time_only=no&lt;br /&gt;
	[store_unit]&lt;br /&gt;
		[filter]&lt;br /&gt;
	            #your filter here... for example type=Peasant&lt;br /&gt;
		[/filter]&lt;br /&gt;
		variable=worker&lt;br /&gt;
		kill=no&lt;br /&gt;
	[/store_unit]&lt;br /&gt;
&lt;br /&gt;
		{FOREACH worker i}&lt;br /&gt;
	&lt;br /&gt;
			 [gold]&lt;br /&gt;
                            side=$side_number &lt;br /&gt;
                            amount=1&lt;br /&gt;
                         [/gold] &lt;br /&gt;
			[unstore_unit]&lt;br /&gt;
				variable=worker[$i]&lt;br /&gt;
				text=&amp;quot;1&amp;quot;&lt;br /&gt;
			        red,green,blue=255,255,0 &lt;br /&gt;
			[/unstore_unit]&lt;br /&gt;
				&lt;br /&gt;
		{NEXT i}&lt;br /&gt;
	&lt;br /&gt;
	{CLEAR_VARIABLE worker}&lt;br /&gt;
 [/event]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And give the unit the ability like this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [object]&lt;br /&gt;
     silent=yes&lt;br /&gt;
     [effect]&lt;br /&gt;
	apply_to=new_ability&lt;br /&gt;
           [abilities]&lt;br /&gt;
             {ABILITY_WORKS}&lt;br /&gt;
           [/abilities]&lt;br /&gt;
     [/effect]&lt;br /&gt;
 [/object]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mind Flay  ==&lt;br /&gt;
&lt;br /&gt;
The weapon special gives an attacker 1 point of exp taken from a defender for each hit. This will violate minimum experience (i.e. defender can go below 0). &lt;br /&gt;
&lt;br /&gt;
Give this special to the attack(s) you want it to have. &lt;br /&gt;
 #define WEAPON_SPECIAL_MIND_FLAY&lt;br /&gt;
    [mindflay]&lt;br /&gt;
        id=mind_flay&lt;br /&gt;
        name=&amp;quot;Mind Flay&amp;quot;&lt;br /&gt;
        description=&amp;quot;When used offensively, each hit of the mind flay attack takes 1 point of experience from the defender and gives it to the attacker.&amp;quot;&lt;br /&gt;
    [/mindflay]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
Include these events into your scenario.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE hit_number 0}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP hit_number add 1}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP second_unit.experience add -$hit_number}&lt;br /&gt;
 	{VARIABLE_OP unit.experience add $hit_number}&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 		text=$hit_number&lt;br /&gt;
 		blue=255&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	{CLEAR_VARIABLE hit_number}&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
Note: In dev version substitute &amp;quot;name=&amp;quot; instead of &amp;quot;weapon=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Initiative  ==&lt;br /&gt;
&lt;br /&gt;
Initiative is an aura ability. Much like Leadership, it affects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_INITIATIVE TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=initiative&lt;br /&gt;
 	name= _ &amp;quot;initiative&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Initiative:&lt;br /&gt;
 Adjacent allies are granted Firststrike with all weapons.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{VARIABLE unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{VARIABLE second_unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE second_unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== Blitz ==&lt;br /&gt;
&lt;br /&gt;
Blitz is an aura ability. Much like Leadership, it affects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_BLITZ TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=blitz	&lt;br /&gt;
 	name= _ &amp;quot;blitz&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Blitz:&lt;br /&gt;
 Allies that start their turn adjacent to this unit are granted Skirmisher for that turn.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=side turn&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 		&lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				&lt;br /&gt;
 				[wml_filter]&lt;br /&gt;
 					blitzed=1&lt;br /&gt;
 				[/wml_filter]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitz_refresh&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitz_refresh i}&lt;br /&gt;
 			{CLEAR_VARIABLE blitz_refresh[$i].abilities.skirmisher}&lt;br /&gt;
 			{VARIABLE blitz_refresh[$i].blitzed 0}&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=blitz_refresh[$i]&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 &lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				side=$side_number&lt;br /&gt;
 				[filter_adjacent]&lt;br /&gt;
 					type={TYPE}&lt;br /&gt;
 					is_enemy=no&lt;br /&gt;
 				[/filter_adjacent]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitzed&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitzed i}&lt;br /&gt;
 			[if]&lt;br /&gt;
 				[variable]&lt;br /&gt;
 					name=blitzed[$i].abilities.skirmisher.id&lt;br /&gt;
 					not_equals=&amp;quot;skirmisher&amp;quot;&lt;br /&gt;
 				[/variable]&lt;br /&gt;
 				[then]&lt;br /&gt;
 					{VARIABLE blitzed[$i].blitzed 1}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.id skirmisher}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.name &amp;quot;skirmisher&amp;quot;}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.description  &amp;quot;Skirmisher:&lt;br /&gt;
 This unit is skilled in moving past enemies quickly, and ignores all enemy Zones of Control.&amp;quot;}&lt;br /&gt;
 					[unstore_unit]&lt;br /&gt;
 						variable=blitzed[$i]&lt;br /&gt;
 					[/unstore_unit]&lt;br /&gt;
 				[/then]&lt;br /&gt;
 			[/if]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
== Immune to drain or plague or poison ==&lt;br /&gt;
This macro will grant immunity to drain for a unit. By changing a few specials' names and ability names, you can easily expand it for an immunity to plague or drain. This ''will not'' work properly if there is a unit with multiple weapon specials that might be affected (plague+drain, poison+plague, poison+drain, poison+drain+plague), in this case, it will grant immunity to all of them.&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_UNDRAINABLE&lt;br /&gt;
 #This is the ability tagging the unit for the events. Use it as an ability.&lt;br /&gt;
   [dummy]&lt;br /&gt;
       id=undrainable&lt;br /&gt;
       name= _ &amp;quot;undrainable&amp;quot;&lt;br /&gt;
       description= _ &amp;quot;this unit is cannot be drained.&lt;br /&gt;
 It will still be damaged by draining attacks, but the enemy will not gain any HP.&amp;quot;&lt;br /&gt;
   [/dummy]&lt;br /&gt;
 #enddef&lt;br /&gt;
 &lt;br /&gt;
 #define UNDRAINABLE&lt;br /&gt;
 #Place those in every scenario (or era) where these units will appear.&lt;br /&gt;
 #It makes the unit undead for the time of the attack (it cannot be seen),&lt;br /&gt;
 #if the particular weapon special was used.&lt;br /&gt;
   [event]&lt;br /&gt;
       name=attack&lt;br /&gt;
       first_time_only=no&lt;br /&gt;
      [filter_attack]&lt;br /&gt;
          special=drains&lt;br /&gt;
      [/filter_attack]&lt;br /&gt;
      [filter_second]&lt;br /&gt;
          ability=undrainable&lt;br /&gt;
      [/filter_second]&lt;br /&gt;
          [modify_unit]&lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=$x2,$y2&lt;br /&gt;
         [/filter]&lt;br /&gt;
             [status]&lt;br /&gt;
            not_living=yes&lt;br /&gt;
             [/status]&lt;br /&gt;
          [/modify_unit]&lt;br /&gt;
   [/event]&lt;br /&gt;
 &lt;br /&gt;
   [event]&lt;br /&gt;
       name=attack_end&lt;br /&gt;
       first_time_only=no&lt;br /&gt;
      [filter_attack]&lt;br /&gt;
          special=drains&lt;br /&gt;
      [/filter_attack]&lt;br /&gt;
      [filter_second]&lt;br /&gt;
          ability=undrainable&lt;br /&gt;
      [/filter_second]&lt;br /&gt;
          [modify_unit]&lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=$x2,$y2&lt;br /&gt;
         [/filter]&lt;br /&gt;
             [status]&lt;br /&gt;
            not_living=no&lt;br /&gt;
             [/status]&lt;br /&gt;
          [/modify_unit]&lt;br /&gt;
   [/event]&lt;br /&gt;
 &lt;br /&gt;
   [event]&lt;br /&gt;
       name=attack&lt;br /&gt;
       first_time_only=no&lt;br /&gt;
      [filter_second_attack]&lt;br /&gt;
          special=drain&lt;br /&gt;
      [/filter_second_attack]&lt;br /&gt;
      [filter]&lt;br /&gt;
          ability=undrainable&lt;br /&gt;
      [/filter]&lt;br /&gt;
          [modify_unit]&lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=$x1,$y1&lt;br /&gt;
         [/filter]&lt;br /&gt;
             [status]&lt;br /&gt;
            not_living=yes&lt;br /&gt;
             [/status]&lt;br /&gt;
          [/modify_unit]&lt;br /&gt;
   [/event]&lt;br /&gt;
 &lt;br /&gt;
   [event]&lt;br /&gt;
       name=attack_end&lt;br /&gt;
       first_time_only=no&lt;br /&gt;
      [filter_second_attack]&lt;br /&gt;
          special=drain&lt;br /&gt;
      [/filter_second_attack]&lt;br /&gt;
      [filter]&lt;br /&gt;
          ability=undrainable&lt;br /&gt;
      [/filter]&lt;br /&gt;
          [modify_unit]&lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=$x1,$y1&lt;br /&gt;
         [/filter]&lt;br /&gt;
             [status]&lt;br /&gt;
            not_living=no&lt;br /&gt;
             [/status]&lt;br /&gt;
          [/modify_unit]&lt;br /&gt;
   [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== Whirlwind Attack ==&lt;br /&gt;
This attack is supposed to be an attack when you spin with your weapons in arms, hitting all nearby enemies, while they cannot counter. It should be used with the magical weapon special, because the spinning weapons are not easy to dodge and the player would pick to attack the unit with the lowest defence without it. It works with drain, slow and poison weapon specials. The attack is supposed to be attack-only, but it can be easily edited to work also on defence.&lt;br /&gt;
&lt;br /&gt;
This is a pair of two macros, one is a weapon special that makes the enemy unable to counter (lowers the number of attacks by 10; for the case if there was a boss or something). The other one is an event that damages the units, that should be placed into every scenario where the unit appears (or the era), preferably through a macro.&lt;br /&gt;
&lt;br /&gt;
This is the part that is the weapon special that marks it.&lt;br /&gt;
 [attacks]      #This can be changed to a dummy tag if you don't want it to do anything.&lt;br /&gt;
        id=whirlwind&lt;br /&gt;
        name= _ &amp;quot;whirlwind&amp;quot;&lt;br /&gt;
        name_inactive= _ &amp;quot;whirlwind&amp;quot;&lt;br /&gt;
        description= _ &amp;quot;Whirlwind: When this attack is used, all units adjacent the attacker take the damage, and cannot be countered.&amp;quot;&lt;br /&gt;
        description_inactive= _ &amp;quot;Whirlwind: When this attack is used, all units adjacent the attacker take the damage, and cannot be countered.&amp;quot;&lt;br /&gt;
        value=0&lt;br /&gt;
        apply_to=opponent&lt;br /&gt;
 [/attacks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is the event.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 	        special=whirlwind&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	{VARIABLE has_drain 0}		# Notifies the weapon specials&lt;br /&gt;
 	{VARIABLE has_slow no}&lt;br /&gt;
 	{VARIABLE has_poison no}&lt;br /&gt;
 	{FOREACH weapon.specials.damage i}&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=weapon.specials.drains.id&lt;br /&gt;
 			equals=drains&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			{VARIABLE has_drain 1}&lt;br /&gt;
 &lt;br /&gt;
 		[/then]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 	{NEXT i}&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=weapon.specials.poison.id&lt;br /&gt;
 			equals=poison&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			{VARIABLE has_poison yes}&lt;br /&gt;
 &lt;br /&gt;
 		[/then]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=weapon.specials.slow.id&lt;br /&gt;
 			equals=slow&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			{VARIABLE has_slow yes}&lt;br /&gt;
 &lt;br /&gt;
  		[/then]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=has_drain&lt;br /&gt;
 			equals=0&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[else]&lt;br /&gt;
 			[store_unit]		#We need to know how many units were drained, and what were their resistances&lt;br /&gt;
  				[filter]&lt;br /&gt;
 					[filter_adjacent]&lt;br /&gt;
 						x,y=$x1,$y1&lt;br /&gt;
 					[/filter_adjacent]&lt;br /&gt;
 					[not]&lt;br /&gt;
 						side=1              #If you want to use it in an era, use side=$unit.side instead&lt;br /&gt;
 					[/not]&lt;br /&gt;
 					[not]         #The target unit is already hit by the attack&lt;br /&gt;
 						x,y=$x2,$y2&lt;br /&gt;
 					[/not]&lt;br /&gt;
 					[not]          #Undead are undrainable&lt;br /&gt;
 						race=undead&lt;br /&gt;
 					[/not]&lt;br /&gt;
 				[/filter]&lt;br /&gt;
 				variable=units&lt;br /&gt;
 			[/store_unit]  &lt;br /&gt;
 			{VARIABLE healed_amount 0}&lt;br /&gt;
  			{FOREACH units i}&lt;br /&gt;
 			[switch]            #Check the resistances&lt;br /&gt;
 				variable=weapon.type&lt;br /&gt;
 				[case]&lt;br /&gt;
 					value=arcane&lt;br /&gt;
 		    			{VARIABLE_OP healed_amount add &amp;quot;$($units[$i].resistance.arcane*$weapon.damage)&amp;quot;}&lt;br /&gt;
 				[/case]&lt;br /&gt;
 				[case]&lt;br /&gt;
 					value=fire&lt;br /&gt;
 		    			{VARIABLE_OP healed_amount add &amp;quot;$($units[$i].resistance.fire*$weapon.damage)&amp;quot;}&lt;br /&gt;
 				[/case]&lt;br /&gt;
 				[case]&lt;br /&gt;
 					value=cold&lt;br /&gt;
 		    			{VARIABLE_OP healed_amount add &amp;quot;$($units[$i].resistance.cold*$weapon.damage)&amp;quot;}&lt;br /&gt;
 				[/case]&lt;br /&gt;
 				[case]&lt;br /&gt;
 					value=blade&lt;br /&gt;
 		    			{VARIABLE_OP healed_amount add &amp;quot;$($units[$i].resistance.blade*$weapon.damage)&amp;quot;}&lt;br /&gt;
 				[/case]&lt;br /&gt;
 				[case]&lt;br /&gt;
 					value=pierce&lt;br /&gt;
 		    			{VARIABLE_OP healed_amount add &amp;quot;$($units[$i].resistance.pierce*$weapon.damage)&amp;quot;}&lt;br /&gt;
 				[/case]&lt;br /&gt;
 				[case]&lt;br /&gt;
 					value=impact&lt;br /&gt;
 		    			{VARIABLE_OP healed_amount add &amp;quot;$($units[$i].resistance.impact*$weapon.damage)&amp;quot;}&lt;br /&gt;
 				[/case]&lt;br /&gt;
  			[/switch]&lt;br /&gt;
 			{NEXT i}&lt;br /&gt;
 			[store_unit]        #Float the healed amount over the unit, like if it had drained&lt;br /&gt;
 				[filter]    #Two numbers will float, the one from the regular hit and one from this&lt;br /&gt;
 				x,y=$x1,$y1&lt;br /&gt;
 				[/filter]&lt;br /&gt;
 				kill=no&lt;br /&gt;
 				variable=FLOATING_TEXT_temp&lt;br /&gt;
 			[/store_unit]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=FLOATING_TEXT_temp&lt;br /&gt;
 				find_vacant=no&lt;br /&gt;
 				red,green,blue=0,255,0&lt;br /&gt;
 				text=$($healed_amount/200)         #Operating with huge numbers because rounding is a problem&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 			{CLEAR_VARIABLE FLOATING_TEXT_temp}&lt;br /&gt;
 			[heal_unit]&lt;br /&gt;
 				[filter]&lt;br /&gt;
 					x,y=$x1,&amp;amp;y1&lt;br /&gt;
 				[/filter]	&lt;br /&gt;
 				amount=$($healed_amount/200)&lt;br /&gt;
 				animate=no&lt;br /&gt;
 			[/heal_unit]&lt;br /&gt;
 		{CLEAR_VARIABLE units}&lt;br /&gt;
 		{CLEAR_VARIABLE healed_amount}&lt;br /&gt;
 		[/else]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 	[harm_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				x,y=$x1,$y1&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 			[not]&lt;br /&gt;
 				side=1             #If you want to use it in an era, use side=$unit.side instead&lt;br /&gt;
 			[/not]&lt;br /&gt;
 			[not]             #If you want to use it in an era, use side=$unit.side instead&lt;br /&gt;
 				x,y=$x2,$y2&lt;br /&gt;
 			[/not]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		amount=$weapon.damage&lt;br /&gt;
 		damage_type=$weapon.type&lt;br /&gt;
 		fire_event=yes&lt;br /&gt;
 		experience=yes      #You will have to think about this&lt;br /&gt;
 		poisoned=$has_poison   #We have detected these two effects before&lt;br /&gt;
 		slowed=$has_slow&lt;br /&gt;
 	[/harm_unit] &lt;br /&gt;
 	{CLEAR_VARIABLE has_slow}&lt;br /&gt;
 	{CLEAR_VARIABLE has_poison}&lt;br /&gt;
 	{CLEAR_VARIABLE has_drain}&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UsefulWMLFragments]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: UsefulWMLFragments]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=69210</id>
		<title>WML Abilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=69210"/>
		<updated>2022-01-21T02:30:39Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* Initiative */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Remember that you must include the WML ability code in every scenario where you intend them to work. Or include them in the unit file inside the [unit_type] tag.&lt;br /&gt;
&lt;br /&gt;
Some abilities require macros from [[WML_Utilities|Utilities]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Knockback  ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a knockback attack, it is immediately pushed back one hex away from the attacker. Units cannot be knocked back into an occupied hex, out of villages or onto terrain they normally could not move to. Only works on offense.&lt;br /&gt;
&lt;br /&gt;
Use this to display the special correctly on the attacks you want:&lt;br /&gt;
    #define WEAPON_SPECIAL_KNOCKBACK&lt;br /&gt;
        [dummy]&lt;br /&gt;
            id=knockback&lt;br /&gt;
            name= _ &amp;quot;knockback&amp;quot;&lt;br /&gt;
            female_name= _ &amp;quot;female^knockback&amp;quot;&lt;br /&gt;
            description=_ &amp;quot;Knockback:&lt;br /&gt;
    When a unit is hit with a knockback attack, it is immediately pushed back one hex away from the attacker. Units cannot be knocked back into an occupied hex, out of villages or onto terrain they normally could not move to. Only works on offense.&amp;quot;&lt;br /&gt;
        [/dummy]&lt;br /&gt;
    #enddef&lt;br /&gt;
&lt;br /&gt;
And insert this event to your [scenario], [multiplayer], [unit_type] or [era]:&lt;br /&gt;
    [event]&lt;br /&gt;
        name=attacker hits&lt;br /&gt;
        first_time_only=no&lt;br /&gt;
    &lt;br /&gt;
        [filter_attack]&lt;br /&gt;
            special=knockback&lt;br /&gt;
        [/filter_attack]&lt;br /&gt;
    &lt;br /&gt;
        [filter_second]&lt;br /&gt;
            [not]&lt;br /&gt;
                [filter_location]&lt;br /&gt;
                    terrain=*^V*&lt;br /&gt;
                [/filter_location]&lt;br /&gt;
            [/not]&lt;br /&gt;
        [/filter_second]&lt;br /&gt;
    &lt;br /&gt;
        [if]&lt;br /&gt;
            [variable]&lt;br /&gt;
                name=second_unit.hitpoints&lt;br /&gt;
                greater_than=0&lt;br /&gt;
            [/variable]&lt;br /&gt;
    &lt;br /&gt;
                [store_locations]&lt;br /&gt;
                    [not]&lt;br /&gt;
                        [filter]&lt;br /&gt;
                        [/filter]&lt;br /&gt;
                    [/not]&lt;br /&gt;
    &lt;br /&gt;
                    [filter_adjacent_location]&lt;br /&gt;
                        x,y=$x2,$y2&lt;br /&gt;
                        adjacent=-$unit.facing&lt;br /&gt;
                    [/filter_adjacent_location]&lt;br /&gt;
    &lt;br /&gt;
                    variable=knockback_target_hex&lt;br /&gt;
                [/store_locations]&lt;br /&gt;
    &lt;br /&gt;
                [if]&lt;br /&gt;
                    [variable]&lt;br /&gt;
                        name=knockback_target_hex.length&lt;br /&gt;
                        greater_than=0&lt;br /&gt;
                    [/variable]&lt;br /&gt;
    &lt;br /&gt;
                    [then]&lt;br /&gt;
                        [teleport]&lt;br /&gt;
                            [filter]&lt;br /&gt;
                                x,y=$x2,$y2&lt;br /&gt;
                            [/filter]&lt;br /&gt;
    &lt;br /&gt;
                            x,y=$knockback_target_hex.x,$knockback_target_hex.y&lt;br /&gt;
                            ignore_passability=no&lt;br /&gt;
                        [/teleport]&lt;br /&gt;
    &lt;br /&gt;
                        [if]&lt;br /&gt;
                            [have_unit]&lt;br /&gt;
                                x,y=$knockback_target_hex.x,$knockback_target_hex.y&lt;br /&gt;
                            [/have_unit]&lt;br /&gt;
    &lt;br /&gt;
                            [then]&lt;br /&gt;
                                [sound]&lt;br /&gt;
                                    name=fist.ogg&lt;br /&gt;
                                [/sound]&lt;br /&gt;
    &lt;br /&gt;
                                # the knockbacked unit doesn't seem to receive experience by default,&lt;br /&gt;
                                # so we need to add it manually&lt;br /&gt;
                                [store_unit]&lt;br /&gt;
                                    [filter]&lt;br /&gt;
                                        x,y=$knockback_target_hex.x,$knockback_target_hex.y&lt;br /&gt;
                                    [/filter]&lt;br /&gt;
    &lt;br /&gt;
                                    kill=yes&lt;br /&gt;
                                    variable=knockbacked&lt;br /&gt;
                                [/store_unit]&lt;br /&gt;
    &lt;br /&gt;
                                {VARIABLE_OP knockbacked.experience add $unit.level}&lt;br /&gt;
    &lt;br /&gt;
                                [unstore_unit]&lt;br /&gt;
                                    variable=knockbacked&lt;br /&gt;
                                    text= _ &amp;quot;knockback&amp;quot;&lt;br /&gt;
                                    {COLOR_HARM}&lt;br /&gt;
                                    advance=true&lt;br /&gt;
                                [/unstore_unit]&lt;br /&gt;
    &lt;br /&gt;
                                {CLEAR_VARIABLE knockbacked}&lt;br /&gt;
                            [/then]&lt;br /&gt;
                        [/if]&lt;br /&gt;
                    [/then]&lt;br /&gt;
                [/if]&lt;br /&gt;
    &lt;br /&gt;
                {CLEAR_VARIABLE knockback_direction,knockback_target_hex}&lt;br /&gt;
            [/then]&lt;br /&gt;
        [/if]&lt;br /&gt;
    [/event]&lt;br /&gt;
&lt;br /&gt;
=== Charm ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''charm'' attack, it instantly jumps to the attacker's side, and returns to it's original side at the beginning of that side's turn. A charmed unit has 1 movement point and can attack.&lt;br /&gt;
&lt;br /&gt;
Example that makes all Troll Whelps have charm on their attack:&lt;br /&gt;
&lt;br /&gt;
 {CHARM (type=Troll Whelp) fist}&lt;br /&gt;
&lt;br /&gt;
 #define CHARM FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x1,$y1 side charmer_side}&lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x2,$y2 side charmed_side}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR charmer_side not_equals $charmed_side (&lt;br /&gt;
             [then]&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 variables.real_side $charmed_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 side $charmer_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 moves 1}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
 &lt;br /&gt;
                 {VARIABLE_OP varname format &amp;quot;side_$charmed_side|_units_charmed&amp;quot;}&lt;br /&gt;
                 {VARIABLE $varname yes}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE varname}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE charmer_side}&lt;br /&gt;
         {CLEAR_VARIABLE charmed_side}&lt;br /&gt;
     [/event]&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=side turn&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         {VARIABLE_OP this_side_charmed to_variable &amp;quot;side_$side_number|_units_charmed&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR this_side_charmed equals yes (&lt;br /&gt;
             [then]&lt;br /&gt;
                 [store_unit]&lt;br /&gt;
                     [filter]&lt;br /&gt;
                         [not]&lt;br /&gt;
                             side=$side_number&lt;br /&gt;
                         [/not]&lt;br /&gt;
                     [/filter]&lt;br /&gt;
 &lt;br /&gt;
                     variable=possibly_charmed&lt;br /&gt;
                     kill=no&lt;br /&gt;
                 [/store_unit]&lt;br /&gt;
 &lt;br /&gt;
                 {FOREACH possibly_charmed i}&lt;br /&gt;
                     {VARIABLE_OP real_side format &amp;quot;0$possibly_charmed[$i].variables.real_side&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
                     {IF_VAR real_side not_equals &amp;quot;0&amp;quot; (&lt;br /&gt;
                         [then]&lt;br /&gt;
                             {IF_VAR side_number equals $possibly_charmed[$i].variables.real_side (&lt;br /&gt;
                                 [then]&lt;br /&gt;
                                     {CLEAR_VARIABLE possibly_charmed[$i].variables.real_side}&lt;br /&gt;
                                     {VARIABLE possibly_charmed[$i].side $side_number}&lt;br /&gt;
 &lt;br /&gt;
                                     [unstore_unit]&lt;br /&gt;
                                         variable=possibly_charmed[$i]&lt;br /&gt;
                                         find_vacant=no&lt;br /&gt;
                                     [/unstore_unit]&lt;br /&gt;
                                 [/then]&lt;br /&gt;
                             )}&lt;br /&gt;
                         [/then]&lt;br /&gt;
                     )}&lt;br /&gt;
                 {NEXT i}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE possibly_charmed}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Bloodlust ===&lt;br /&gt;
&lt;br /&gt;
Bloodlust is a very simple ability. If a unit that has bloodlust kills an enemy unit when attacking, it may attack again, provided that there are more enemy units adjacent to it.&lt;br /&gt;
&lt;br /&gt;
This would give the bloodlust ability to all Dwarvish Ulfserkers (making them insanely powerful):&lt;br /&gt;
&lt;br /&gt;
 {BLOODLUST (type=Dwarvish Ulfserker)}&lt;br /&gt;
&lt;br /&gt;
 #define BLOODLUST FILTER&lt;br /&gt;
     [event]&lt;br /&gt;
         name=die&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter_second]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter_second]&lt;br /&gt;
 &lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 moves 0}&lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Pickpocket ===&lt;br /&gt;
&lt;br /&gt;
This special could also be called loot. When a unit with this attack special sucessfully hits an enemy unit, it gains a certain amount of gold.&lt;br /&gt;
&lt;br /&gt;
To do this, use this code:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;#define WEAPON_SPECIAL_PICKPOCKET&amp;lt;br /&amp;gt;&lt;br /&gt;
 # Canned definition of the pickpocket ability to be included in a&amp;lt;br /&amp;gt;&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
   id=weapon_pickpocket&lt;br /&gt;
   name= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   name_inactive= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   description= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   description_inactive= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 # event that creates a &amp;quot;pickpocket has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no   &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]&lt;br /&gt;
   [set_variable]&lt;br /&gt;
      name=unit_att_with_pickpocket.variables.pickpocket_has_worked&lt;br /&gt;
      value=yes&lt;br /&gt;
   [/set_variable]&lt;br /&gt;
   [unstore_unit]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
   [/unstore_unit]   &lt;br /&gt;
   {CLEAR_VARIABLE unit_att_with_pickpocket}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no  &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketer&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x2,$y2&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketed&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [if]&lt;br /&gt;
      [variable]&lt;br /&gt;
         name=pickpocketer.variables.pickpocket_has_worked&lt;br /&gt;
         equals=yes&lt;br /&gt;
      [/variable]&lt;br /&gt;
      [then]&lt;br /&gt;
    [gold]&lt;br /&gt;
     side=$side_number&lt;br /&gt;
     amount=2&lt;br /&gt;
    [/gold]&lt;br /&gt;
         [unstore_unit]&lt;br /&gt;
            variable=pickpocketed&lt;br /&gt;
            text=&amp;quot;!&amp;quot;&lt;br /&gt;
            {COLOR_HEAL}&lt;br /&gt;
         [/unstore_unit]&lt;br /&gt;
      [/then]&lt;br /&gt;
   [/if]   &lt;br /&gt;
   {CLEAR_VARIABLE pickpocketer}&lt;br /&gt;
   {CLEAR_VARIABLE pickpocketed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 #enddef&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be placed after the [unit_type] tag, or in its own .cfg file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To change the amount of gold given per hit, change&lt;br /&gt;
    &amp;lt;code&amp;gt;[gold]&lt;br /&gt;
    side=$side_number&lt;br /&gt;
    amount='''X'''&lt;br /&gt;
    [/gold]&amp;lt;/code&amp;gt;&lt;br /&gt;
Where '''X''' is the amount of gold you want.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want the gold to be constant, given at the end of the turn if at least one of the attack hits, instead of '''X''' amount of gold per hit, change&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attacker_hits'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attack_end'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soultaker===&lt;br /&gt;
&lt;br /&gt;
Any unit with this ability will gain an additional point of damage per strike every time it kills an enemy. Coder(s) unknown, made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=19&amp;amp;t=20100).&lt;br /&gt;
&lt;br /&gt;
To give a unit the ability, place the following in any .cfg file loaded by the campaign or era:&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_SOULTAKER&lt;br /&gt;
 	[dummy]&lt;br /&gt;
 		id=soultaker&lt;br /&gt;
 		name= _ &amp;quot;soultaker&amp;quot;&lt;br /&gt;
 		description=_ &amp;quot;Soultaker:&lt;br /&gt;
 This unit gains an additional point added to its maximum damage whenever it kills a living unit.&amp;quot;&lt;br /&gt;
 	[/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/abilities]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=die&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[filter]&lt;br /&gt;
 		[not]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=&amp;quot;yes&amp;quot;&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/not]&lt;br /&gt;
 	[/filter]&lt;br /&gt;
 &lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		ability=soultaker&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 &lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		{COLOR_HEAL}&lt;br /&gt;
 		text= _ &amp;quot;+1 damage&amp;quot;&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 &lt;br /&gt;
 	[object]&lt;br /&gt;
 		silent=yes&lt;br /&gt;
 		duration=forever&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 &lt;br /&gt;
 		[effect]&lt;br /&gt;
 			apply_to=attack&lt;br /&gt;
 			range=melee&lt;br /&gt;
 			increase_damage=1&lt;br /&gt;
 			increase=1&lt;br /&gt;
 		[/effect]&lt;br /&gt;
 	[/object]&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
And the following in the unit's [abilities] tag:&lt;br /&gt;
&lt;br /&gt;
 	{ABILITY_SOULTAKER}&lt;br /&gt;
&lt;br /&gt;
===Soultaker (weapon special)===&lt;br /&gt;
&lt;br /&gt;
Unit with this weapon special will gain an additional point of damage per strike for that weapon every time it kills an enemy with this attack. Coder Ravana, made for ageless era (http://forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=25274) based on previous ability.&lt;br /&gt;
&lt;br /&gt;
To give a unit the weapon special, load the following code:&lt;br /&gt;
&lt;br /&gt;
 #define WEAPON_SPECIAL_SOULTAKER&lt;br /&gt;
  [dummy]&lt;br /&gt;
   id=soultaker&lt;br /&gt;
   name= _ &amp;quot;soultaker&amp;quot;&lt;br /&gt;
   description=_&amp;quot;Soultaker:&lt;br /&gt;
 This unit gains an additional point added to its maximum damage whenever it kills a living unit.&amp;quot;&lt;br /&gt;
  [/dummy]&lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 [event]&lt;br /&gt;
  name=die&lt;br /&gt;
  first_time_only=no&lt;br /&gt;
  id=soultaker_event&lt;br /&gt;
  [filter]&lt;br /&gt;
   [not]&lt;br /&gt;
    [filter_wml]&lt;br /&gt;
     [status]&lt;br /&gt;
      not_living=&amp;quot;yes&amp;quot;&lt;br /&gt;
     [/status]&lt;br /&gt;
    [/filter_wml]&lt;br /&gt;
   [/not]&lt;br /&gt;
  [/filter]&lt;br /&gt;
  [filter_second_attack]&lt;br /&gt;
   special=soultaker&lt;br /&gt;
  [/filter_second_attack]&lt;br /&gt;
  [unstore_unit]&lt;br /&gt;
   variable=second_unit&lt;br /&gt;
   {COLOR_HEAL}&lt;br /&gt;
   text= _ &amp;quot;+1 damage&amp;quot;&lt;br /&gt;
   find_vacant=no&lt;br /&gt;
  [/unstore_unit]&lt;br /&gt;
  [object]&lt;br /&gt;
   silent=yes&lt;br /&gt;
   duration=forever&lt;br /&gt;
   [filter]&lt;br /&gt;
    x,y=$x2,$y2&lt;br /&gt;
   [/filter]&lt;br /&gt;
   [effect]&lt;br /&gt;
    apply_to=attack&lt;br /&gt;
    name=$second_weapon.name&lt;br /&gt;
    increase_damage=1&lt;br /&gt;
   [/effect]&lt;br /&gt;
  [/object]&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+attack]&lt;br /&gt;
  [+specials]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
And the following in the attack's [specials] tag:&lt;br /&gt;
&lt;br /&gt;
  {WEAPON_SPECIAL_SOULTAKER}&lt;br /&gt;
&lt;br /&gt;
===Charm (Type 2)===&lt;br /&gt;
&lt;br /&gt;
An attack special. If the attack hits, and the target is level 0 or 1, the target is converted to the attacker's side. However, if it misses, the attacker is converted to the defender's side. Maintainer is krotop, using 1.6.x syntax (and compatible with 1.7.x], made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=21&amp;amp;t=22539)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define WEAPON_SPECIAL_CHARM&lt;br /&gt;
 # Canned definition of the Charm ability to be included in a&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=weapon_charm&lt;br /&gt;
 	name= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	name_inactive= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	description_inactive= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 &lt;br /&gt;
 # event that creates a variable at the beginning of the fight to check if the attacker hit at least once by the end.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]	&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=no&lt;br /&gt;
 	[/set_variable]	&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that creates a &amp;quot;charm has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=yes&lt;br /&gt;
 	[/set_variable]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that shifts a unit to the other side&lt;br /&gt;
 # if the defending unit&lt;br /&gt;
 #       - was not lvl1 or lvl0 &lt;br /&gt;
 #       - and was not a recruiting unit &lt;br /&gt;
 #       - and was a not a &amp;quot;non-living&amp;quot; creature&lt;br /&gt;
 # then :&lt;br /&gt;
 # -&amp;gt; if the attacker missed all attacks, it goes to the defender side.&lt;br /&gt;
 # -&amp;gt; if the attacker hit once at least, the defender goes to the attacker side.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		canrecruit=no&lt;br /&gt;
 		[and]&lt;br /&gt;
 			level=0&lt;br /&gt;
 			[or]&lt;br /&gt;
 			level=1&lt;br /&gt;
 			[/or]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 		[and]&lt;br /&gt;
 			[not]&lt;br /&gt;
 			[filter_wml]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=yes&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/filter_wml]&lt;br /&gt;
 			[/not]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmer&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmed&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=charmer.variables.charm_has_worked&lt;br /&gt;
 			equals=no&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmer.side&lt;br /&gt;
 				value=$charmed.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmer&lt;br /&gt;
 				text=&amp;quot;Charm failed!&amp;quot;&lt;br /&gt;
 				{COLOR_HARM}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/then]&lt;br /&gt;
 		[else]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmed.side&lt;br /&gt;
 				value=$charmer.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmed&lt;br /&gt;
 				text=&amp;quot;Charmed!&amp;quot;&lt;br /&gt;
  				{COLOR_HEAL}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/else]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 &lt;br /&gt;
 	{CLEAR_VARIABLE charmer}&lt;br /&gt;
 	{CLEAR_VARIABLE charmed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 &lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
== Works ==&lt;br /&gt;
&lt;br /&gt;
Unit with ability ''works'' will produce 1 gold per turn.&lt;br /&gt;
&lt;br /&gt;
Put this macro into you code before the last piece of code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define ABILITY_WORKS&lt;br /&gt;
     [leadership]&lt;br /&gt;
          value=0&lt;br /&gt;
          id=peasant_works&lt;br /&gt;
          cumulative=no&lt;br /&gt;
          name=&amp;quot;works&amp;quot;&lt;br /&gt;
          description= _ &amp;quot;Works:&lt;br /&gt;
This unit produces 1 gold per turn.&amp;quot;&lt;br /&gt;
    [/leadership]&lt;br /&gt;
 #enddef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Put this event into your code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
	name=side turn&lt;br /&gt;
	first_time_only=no&lt;br /&gt;
	[store_unit]&lt;br /&gt;
		[filter]&lt;br /&gt;
	            #your filter here... for example type=Peasant&lt;br /&gt;
		[/filter]&lt;br /&gt;
		variable=worker&lt;br /&gt;
		kill=no&lt;br /&gt;
	[/store_unit]&lt;br /&gt;
&lt;br /&gt;
		{FOREACH worker i}&lt;br /&gt;
	&lt;br /&gt;
			 [gold]&lt;br /&gt;
                            side=$side_number &lt;br /&gt;
                            amount=1&lt;br /&gt;
                         [/gold] &lt;br /&gt;
			[unstore_unit]&lt;br /&gt;
				variable=worker[$i]&lt;br /&gt;
				text=&amp;quot;1&amp;quot;&lt;br /&gt;
			        red,green,blue=255,255,0 &lt;br /&gt;
			[/unstore_unit]&lt;br /&gt;
				&lt;br /&gt;
		{NEXT i}&lt;br /&gt;
	&lt;br /&gt;
	{CLEAR_VARIABLE worker}&lt;br /&gt;
 [/event]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And give the unit the ability like this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [object]&lt;br /&gt;
     silent=yes&lt;br /&gt;
     [effect]&lt;br /&gt;
	apply_to=new_ability&lt;br /&gt;
           [abilities]&lt;br /&gt;
             {ABILITY_WORKS}&lt;br /&gt;
           [/abilities]&lt;br /&gt;
     [/effect]&lt;br /&gt;
 [/object]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mind Flay  ==&lt;br /&gt;
&lt;br /&gt;
The weapon special gives an attacker 1 point of exp taken from a defender for each hit. This will violate minimum experience (i.e. defender can go below 0). &lt;br /&gt;
&lt;br /&gt;
Give this special to the attack(s) you want it to have. &lt;br /&gt;
 #define WEAPON_SPECIAL_MIND_FLAY&lt;br /&gt;
    [mindflay]&lt;br /&gt;
        id=mind_flay&lt;br /&gt;
        name=&amp;quot;Mind Flay&amp;quot;&lt;br /&gt;
        description=&amp;quot;When used offensively, each hit of the mind flay attack takes 1 point of experience from the defender and gives it to the attacker.&amp;quot;&lt;br /&gt;
    [/mindflay]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
Include these events into your scenario.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE hit_number 0}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP hit_number add 1}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP second_unit.experience add -$hit_number}&lt;br /&gt;
 	{VARIABLE_OP unit.experience add $hit_number}&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 		text=$hit_number&lt;br /&gt;
 		blue=255&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	{CLEAR_VARIABLE hit_number}&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
Note: In dev version substitute &amp;quot;name=&amp;quot; instead of &amp;quot;weapon=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Initiative  ==&lt;br /&gt;
&lt;br /&gt;
Initiative is an aura ability. Much like Leadership, it affects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_INITIATIVE TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=initiative&lt;br /&gt;
 	name= _ &amp;quot;initiative&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Initiative:&lt;br /&gt;
 Adjacent allies are granted Firststrike with all weapons.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{VARIABLE unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{VARIABLE second_unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE second_unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== Blitz ==&lt;br /&gt;
&lt;br /&gt;
Blitz is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_BLITZ TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=blitz	&lt;br /&gt;
 	name= _ &amp;quot;blitz&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Blitz:&lt;br /&gt;
 Allies that start their turn adjacent to this unit are granted Skirmisher for that turn.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=side turn&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 		&lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				&lt;br /&gt;
 				[wml_filter]&lt;br /&gt;
 					blitzed=1&lt;br /&gt;
 				[/wml_filter]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitz_refresh&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitz_refresh i}&lt;br /&gt;
 			{CLEAR_VARIABLE blitz_refresh[$i].abilities.skirmisher}&lt;br /&gt;
 			{VARIABLE blitz_refresh[$i].blitzed 0}&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=blitz_refresh[$i]&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 &lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				side=$side_number&lt;br /&gt;
 				[filter_adjacent]&lt;br /&gt;
 					type={TYPE}&lt;br /&gt;
 					is_enemy=no&lt;br /&gt;
 				[/filter_adjacent]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitzed&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitzed i}&lt;br /&gt;
 			[if]&lt;br /&gt;
 				[variable]&lt;br /&gt;
 					name=blitzed[$i].abilities.skirmisher.id&lt;br /&gt;
 					not_equals=&amp;quot;skirmisher&amp;quot;&lt;br /&gt;
 				[/variable]&lt;br /&gt;
 				[then]&lt;br /&gt;
 					{VARIABLE blitzed[$i].blitzed 1}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.id skirmisher}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.name &amp;quot;skirmisher&amp;quot;}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.description  &amp;quot;Skirmisher:&lt;br /&gt;
 This unit is skilled in moving past enemies quickly, and ignores all enemy Zones of Control.&amp;quot;}&lt;br /&gt;
 					[unstore_unit]&lt;br /&gt;
 						variable=blitzed[$i]&lt;br /&gt;
 					[/unstore_unit]&lt;br /&gt;
 				[/then]&lt;br /&gt;
 			[/if]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
== Immune to drain or plague or poison ==&lt;br /&gt;
This macro will grant immunity to drain for a unit. By changing a few specials' names and ability names, you can easily expand it for an immunity to plague or drain. This ''will not'' work properly if there is a unit with multiple weapon specials that might be affected (plague+drain, poison+plague, poison+drain, poison+drain+plague), in this case, it will grant immunity to all of them.&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_UNDRAINABLE&lt;br /&gt;
 #This is the ability tagging the unit for the events. Use it as an ability.&lt;br /&gt;
   [dummy]&lt;br /&gt;
       id=undrainable&lt;br /&gt;
       name= _ &amp;quot;undrainable&amp;quot;&lt;br /&gt;
       description= _ &amp;quot;this unit is cannot be drained.&lt;br /&gt;
 It will still be damaged by draining attacks, but the enemy will not gain any HP.&amp;quot;&lt;br /&gt;
   [/dummy]&lt;br /&gt;
 #enddef&lt;br /&gt;
 &lt;br /&gt;
 #define UNDRAINABLE&lt;br /&gt;
 #Place those in every scenario (or era) where these units will appear.&lt;br /&gt;
 #It makes the unit undead for the time of the attack (it cannot be seen),&lt;br /&gt;
 #if the particular weapon special was used.&lt;br /&gt;
   [event]&lt;br /&gt;
       name=attack&lt;br /&gt;
       first_time_only=no&lt;br /&gt;
      [filter_attack]&lt;br /&gt;
          special=drains&lt;br /&gt;
      [/filter_attack]&lt;br /&gt;
      [filter_second]&lt;br /&gt;
          ability=undrainable&lt;br /&gt;
      [/filter_second]&lt;br /&gt;
          [modify_unit]&lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=$x2,$y2&lt;br /&gt;
         [/filter]&lt;br /&gt;
             [status]&lt;br /&gt;
            not_living=yes&lt;br /&gt;
             [/status]&lt;br /&gt;
          [/modify_unit]&lt;br /&gt;
   [/event]&lt;br /&gt;
 &lt;br /&gt;
   [event]&lt;br /&gt;
       name=attack_end&lt;br /&gt;
       first_time_only=no&lt;br /&gt;
      [filter_attack]&lt;br /&gt;
          special=drains&lt;br /&gt;
      [/filter_attack]&lt;br /&gt;
      [filter_second]&lt;br /&gt;
          ability=undrainable&lt;br /&gt;
      [/filter_second]&lt;br /&gt;
          [modify_unit]&lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=$x2,$y2&lt;br /&gt;
         [/filter]&lt;br /&gt;
             [status]&lt;br /&gt;
            not_living=no&lt;br /&gt;
             [/status]&lt;br /&gt;
          [/modify_unit]&lt;br /&gt;
   [/event]&lt;br /&gt;
 &lt;br /&gt;
   [event]&lt;br /&gt;
       name=attack&lt;br /&gt;
       first_time_only=no&lt;br /&gt;
      [filter_second_attack]&lt;br /&gt;
          special=drain&lt;br /&gt;
      [/filter_second_attack]&lt;br /&gt;
      [filter]&lt;br /&gt;
          ability=undrainable&lt;br /&gt;
      [/filter]&lt;br /&gt;
          [modify_unit]&lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=$x1,$y1&lt;br /&gt;
         [/filter]&lt;br /&gt;
             [status]&lt;br /&gt;
            not_living=yes&lt;br /&gt;
             [/status]&lt;br /&gt;
          [/modify_unit]&lt;br /&gt;
   [/event]&lt;br /&gt;
 &lt;br /&gt;
   [event]&lt;br /&gt;
       name=attack_end&lt;br /&gt;
       first_time_only=no&lt;br /&gt;
      [filter_second_attack]&lt;br /&gt;
          special=drain&lt;br /&gt;
      [/filter_second_attack]&lt;br /&gt;
      [filter]&lt;br /&gt;
          ability=undrainable&lt;br /&gt;
      [/filter]&lt;br /&gt;
          [modify_unit]&lt;br /&gt;
         [filter]&lt;br /&gt;
             x,y=$x1,$y1&lt;br /&gt;
         [/filter]&lt;br /&gt;
             [status]&lt;br /&gt;
            not_living=no&lt;br /&gt;
             [/status]&lt;br /&gt;
          [/modify_unit]&lt;br /&gt;
   [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== Whirlwind Attack ==&lt;br /&gt;
This attack is supposed to be an attack when you spin with your weapons in arms, hitting all nearby enemies, while they cannot counter. It should be used with the magical weapon special, because the spinning weapons are not easy to dodge and the player would pick to attack the unit with the lowest defence without it. It works with drain, slow and poison weapon specials. The attack is supposed to be attack-only, but it can be easily edited to work also on defence.&lt;br /&gt;
&lt;br /&gt;
This is a pair of two macros, one is a weapon special that makes the enemy unable to counter (lowers the number of attacks by 10; for the case if there was a boss or something). The other one is an event that damages the units, that should be placed into every scenario where the unit appears (or the era), preferably through a macro.&lt;br /&gt;
&lt;br /&gt;
This is the part that is the weapon special that marks it.&lt;br /&gt;
 [attacks]      #This can be changed to a dummy tag if you don't want it to do anything.&lt;br /&gt;
        id=whirlwind&lt;br /&gt;
        name= _ &amp;quot;whirlwind&amp;quot;&lt;br /&gt;
        name_inactive= _ &amp;quot;whirlwind&amp;quot;&lt;br /&gt;
        description= _ &amp;quot;Whirlwind: When this attack is used, all units adjacent the attacker take the damage, and cannot be countered.&amp;quot;&lt;br /&gt;
        description_inactive= _ &amp;quot;Whirlwind: When this attack is used, all units adjacent the attacker take the damage, and cannot be countered.&amp;quot;&lt;br /&gt;
        value=0&lt;br /&gt;
        apply_to=opponent&lt;br /&gt;
 [/attacks]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is the event.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 	        special=whirlwind&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	{VARIABLE has_drain 0}		# Notifies the weapon specials&lt;br /&gt;
 	{VARIABLE has_slow no}&lt;br /&gt;
 	{VARIABLE has_poison no}&lt;br /&gt;
 	{FOREACH weapon.specials.damage i}&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=weapon.specials.drains.id&lt;br /&gt;
 			equals=drains&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			{VARIABLE has_drain 1}&lt;br /&gt;
 &lt;br /&gt;
 		[/then]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 	{NEXT i}&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=weapon.specials.poison.id&lt;br /&gt;
 			equals=poison&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			{VARIABLE has_poison yes}&lt;br /&gt;
 &lt;br /&gt;
 		[/then]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=weapon.specials.slow.id&lt;br /&gt;
 			equals=slow&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			{VARIABLE has_slow yes}&lt;br /&gt;
 &lt;br /&gt;
  		[/then]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=has_drain&lt;br /&gt;
 			equals=0&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[else]&lt;br /&gt;
 			[store_unit]		#We need to know how many units were drained, and what were their resistances&lt;br /&gt;
  				[filter]&lt;br /&gt;
 					[filter_adjacent]&lt;br /&gt;
 						x,y=$x1,$y1&lt;br /&gt;
 					[/filter_adjacent]&lt;br /&gt;
 					[not]&lt;br /&gt;
 						side=1              #If you want to use it in an era, use side=$unit.side instead&lt;br /&gt;
 					[/not]&lt;br /&gt;
 					[not]         #The target unit is already hit by the attack&lt;br /&gt;
 						x,y=$x2,$y2&lt;br /&gt;
 					[/not]&lt;br /&gt;
 					[not]          #Undead are undrainable&lt;br /&gt;
 						race=undead&lt;br /&gt;
 					[/not]&lt;br /&gt;
 				[/filter]&lt;br /&gt;
 				variable=units&lt;br /&gt;
 			[/store_unit]  &lt;br /&gt;
 			{VARIABLE healed_amount 0}&lt;br /&gt;
  			{FOREACH units i}&lt;br /&gt;
 			[switch]            #Check the resistances&lt;br /&gt;
 				variable=weapon.type&lt;br /&gt;
 				[case]&lt;br /&gt;
 					value=arcane&lt;br /&gt;
 		    			{VARIABLE_OP healed_amount add &amp;quot;$($units[$i].resistance.arcane*$weapon.damage)&amp;quot;}&lt;br /&gt;
 				[/case]&lt;br /&gt;
 				[case]&lt;br /&gt;
 					value=fire&lt;br /&gt;
 		    			{VARIABLE_OP healed_amount add &amp;quot;$($units[$i].resistance.fire*$weapon.damage)&amp;quot;}&lt;br /&gt;
 				[/case]&lt;br /&gt;
 				[case]&lt;br /&gt;
 					value=cold&lt;br /&gt;
 		    			{VARIABLE_OP healed_amount add &amp;quot;$($units[$i].resistance.cold*$weapon.damage)&amp;quot;}&lt;br /&gt;
 				[/case]&lt;br /&gt;
 				[case]&lt;br /&gt;
 					value=blade&lt;br /&gt;
 		    			{VARIABLE_OP healed_amount add &amp;quot;$($units[$i].resistance.blade*$weapon.damage)&amp;quot;}&lt;br /&gt;
 				[/case]&lt;br /&gt;
 				[case]&lt;br /&gt;
 					value=pierce&lt;br /&gt;
 		    			{VARIABLE_OP healed_amount add &amp;quot;$($units[$i].resistance.pierce*$weapon.damage)&amp;quot;}&lt;br /&gt;
 				[/case]&lt;br /&gt;
 				[case]&lt;br /&gt;
 					value=impact&lt;br /&gt;
 		    			{VARIABLE_OP healed_amount add &amp;quot;$($units[$i].resistance.impact*$weapon.damage)&amp;quot;}&lt;br /&gt;
 				[/case]&lt;br /&gt;
  			[/switch]&lt;br /&gt;
 			{NEXT i}&lt;br /&gt;
 			[store_unit]        #Float the healed amount over the unit, like if it had drained&lt;br /&gt;
 				[filter]    #Two numbers will float, the one from the regular hit and one from this&lt;br /&gt;
 				x,y=$x1,$y1&lt;br /&gt;
 				[/filter]&lt;br /&gt;
 				kill=no&lt;br /&gt;
 				variable=FLOATING_TEXT_temp&lt;br /&gt;
 			[/store_unit]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=FLOATING_TEXT_temp&lt;br /&gt;
 				find_vacant=no&lt;br /&gt;
 				red,green,blue=0,255,0&lt;br /&gt;
 				text=$($healed_amount/200)         #Operating with huge numbers because rounding is a problem&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 			{CLEAR_VARIABLE FLOATING_TEXT_temp}&lt;br /&gt;
 			[heal_unit]&lt;br /&gt;
 				[filter]&lt;br /&gt;
 					x,y=$x1,&amp;amp;y1&lt;br /&gt;
 				[/filter]	&lt;br /&gt;
 				amount=$($healed_amount/200)&lt;br /&gt;
 				animate=no&lt;br /&gt;
 			[/heal_unit]&lt;br /&gt;
 		{CLEAR_VARIABLE units}&lt;br /&gt;
 		{CLEAR_VARIABLE healed_amount}&lt;br /&gt;
 		[/else]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 	[harm_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				x,y=$x1,$y1&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 			[not]&lt;br /&gt;
 				side=1             #If you want to use it in an era, use side=$unit.side instead&lt;br /&gt;
 			[/not]&lt;br /&gt;
 			[not]             #If you want to use it in an era, use side=$unit.side instead&lt;br /&gt;
 				x,y=$x2,$y2&lt;br /&gt;
 			[/not]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		amount=$weapon.damage&lt;br /&gt;
 		damage_type=$weapon.type&lt;br /&gt;
 		fire_event=yes&lt;br /&gt;
 		experience=yes      #You will have to think about this&lt;br /&gt;
 		poisoned=$has_poison   #We have detected these two effects before&lt;br /&gt;
 		slowed=$has_slow&lt;br /&gt;
 	[/harm_unit] &lt;br /&gt;
 	{CLEAR_VARIABLE has_slow}&lt;br /&gt;
 	{CLEAR_VARIABLE has_poison}&lt;br /&gt;
 	{CLEAR_VARIABLE has_drain}&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UsefulWMLFragments]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: UsefulWMLFragments]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=AbilitiesWML&amp;diff=69092</id>
		<title>AbilitiesWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=AbilitiesWML&amp;diff=69092"/>
		<updated>2021-12-09T02:44:31Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* Common keys and tags for every weapon special */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
==  Abilities and their effects ==&lt;br /&gt;
&lt;br /&gt;
There are two types of abilities: ones that apply to units (called ''abilities'') and ones that only apply when using a particular attack (called ''specials'' or ''weapon specials'').  A unit may have multiple abilities and an attack can have multiple specials.&lt;br /&gt;
&lt;br /&gt;
== The ''[abilities]'' tag ==&lt;br /&gt;
&lt;br /&gt;
The following tags are used to describe an ability in WML:&lt;br /&gt;
&lt;br /&gt;
* '''[heals]''': modifies the hitpoints of a unit at the beginning of the healer's turn&lt;br /&gt;
* '''[regenerate]''': modifies the hitpoints of a unit at the beginning of the unit's turn&lt;br /&gt;
* '''[resistance]''': modifies the resistance of a unit to damage&lt;br /&gt;
* '''[leadership]''': modifies the damage of a unit&lt;br /&gt;
* '''[skirmisher]''': negates enemy zones of control&lt;br /&gt;
* '''[illuminates]''': modifies the time of day adjacent to the affected units&lt;br /&gt;
* '''[teleport]''': allows the unit to teleport&lt;br /&gt;
* '''[hides]''': renders the unit invisible to enemies&lt;br /&gt;
* {{DevFeature1.15|0}} A tag matching a [[#The_.5Bspecials.5D_tag|weapon special tag]], [damage] for example, will confer that weapon special to units based on the given conditions. Most weapon specials are supported; however, '''plagues''', '''heal_on_hit''', and '''swarm''' are not.&lt;br /&gt;
Any other name is valid (for example '''[dummy]'''), but will result in an ability that does nothing but report it's there. These tags still use the same common keys and tags as every other ability. '''Note:''' a dummy ability must have an id for the name and description to display.&lt;br /&gt;
&lt;br /&gt;
=== Available formula variables in Abilities and Weapon Specials  ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.15|?}} When using formulas in abilities and weapon specials, the following formula variables are available:&lt;br /&gt;
* '''self''': (unit) the unit that has the ability&lt;br /&gt;
* '''student''': (unit) for leadership-like abilities this is the unit that is adjacent to the unit that has the ability.&lt;br /&gt;
* '''attacker''': (unit) for attack-related abilities and weapon specials, this is the attacking unit during the attack.&lt;br /&gt;
* '''defender''': (unit) for attack-related abilities and weapon specials, this is the defending unit during the attack.&lt;br /&gt;
* '''other''': (unit) the unit whose stats get modified from the ability. For abilities without 'apply_to=opponent' this is always the same as 'student'.&lt;br /&gt;
&lt;br /&gt;
=== Common keys and tags for every ability ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|?}} All keys inside any ability that expects a numeric value will also accept formulas using &lt;br /&gt;
[[Wesnoth Formula Language]]. In order to use a formula in these keys, you must enclose it in parentheses. However, do not precede those parentheses with a dollar sign like &amp;lt;code&amp;gt;$(...)&amp;lt;/code&amp;gt;, since that will erase the &amp;lt;tt&amp;gt;self&amp;lt;/tt&amp;gt; variable.&lt;br /&gt;
&lt;br /&gt;
* '''name''': the (translatable) name of the ability.&lt;br /&gt;
* '''female_name''': the (translatable) name of the ability when possessed by a female unit. Defaults to ''name'' if not specified.&lt;br /&gt;
* '''name_inactive''': the (translatable) name of the ability when inactive. Defaults to ''name'' if not specified; if the ability is supposed to be not displayed when inactive, you must explicitly set ''name_inactive'' to an empty string (nothing after the equals sign).&lt;br /&gt;
* '''female_name_inactive''': the (translatable) name of the ability when inactive and possessed by a female unit. Defaults to ''name_inactive'' if not specified.&lt;br /&gt;
* '''description''': the (translatable) description of the ability.&lt;br /&gt;
* '''description_inactive''': the (translatable) description of the ability when inactive. Defaults to ''description'' if not specified.&lt;br /&gt;
* '''special_note''' {{DevFeature1.15|14}} Translatable string, which will be displayed in the unit’s help. See also [[UnitTypeWML#Special_Notes]].&lt;br /&gt;
* '''affect_self''': if equal to 'yes' (default), the ability will affect the unit that has it.&lt;br /&gt;
* '''affect_allies''': if equal to 'yes', the ability will affect units from the same and allied sides in the specified adjacent hexes. If set to 'no' it will not affect own or allied sides. If not set (default) it will affect units on the same side but not from allied sides.&lt;br /&gt;
* '''affect_enemies''': if equal to 'yes' (default is 'no'), the ability will affect enemies in the specified adjacent hexes.&lt;br /&gt;
* '''cumulative''': if set to 'yes', this ability will be cumulative with the base value for this ability.&lt;br /&gt;
* '''id''': this ability will not be cumulative with other abilities using this id. Must be present if cumulative is anything other than 'yes'.&lt;br /&gt;
* '''[filter]''': [[StandardUnitFilter]] If the unit owning the ability does not match this filter, the ability will be inactive.&lt;br /&gt;
* '''[affect_adjacent]''': an adjacent unit that does not match this filter will not receive its effects. There can be multiple [affect_adjacent] tags in a single ability; a unit needs to match any one of these to receive the effects. The side requirement of matching units is defined by the '''affect_allies''' and '''affect_enemies''' keys. If there are no [affect_adjacent] tags, then no adjacent units will receive the effects.&lt;br /&gt;
** '''adjacent''': a comma separated list of any combination of these directions: '''n''','''ne''','''se''','''s''','''sw''','''nw'''. (See [[StandardLocationFilter#Directions|notes]])&lt;br /&gt;
** '''[filter]''': a [[StandardUnitFilter]]. {{DevFeature1.13|2}} The variable $other_unit refers to the unit owning the ability.&lt;br /&gt;
* '''[filter_self]''': if the owner of the ability does not match this filter, it will not receive the effects of the ability. [filter_self] takes a [[StandardUnitFilter]] as argument.&lt;br /&gt;
* '''[filter_adjacent]''': if an adjacent unit does not match this filter, the ability will not be active and no-one will receive its affects. Takes extra keys ''adjacent'', ''count'', ''is_enemy'', just like in a [[StandardUnitFilter]], with the one difference that, in the absence of a specified ''count'', all listed directions must match (so, with two directiones eg ''adjacent=n,s'', the default is ''count=2''). In fact, it's really a shorthand for a [filter_adjacent] nested within [filter]. The variables $this_unit and {{DevFeature1.13|2}} $other_unit both work as you'd expect. Multiple [filter_adjacent] can be provided, all of which must pass for the ability to activate.&lt;br /&gt;
* '''[filter_adjacent_location]''': like [filter_adjacent], but filters on locations instead of units. This is a shorthand for [filter][filter_location][filter_adjacent_location].&lt;br /&gt;
* '''[filter_base_value]''': filters on the value before any modifications; uses the keys '''equals''', '''not_equals''', etc. If several keys are used all have to match.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[heals]'' ability ===&lt;br /&gt;
&lt;br /&gt;
* '''value''': the amount healed.&lt;br /&gt;
* '''poison''': can be one of ''slowed'',''cured''. ''slowed'' means poison will not take effect for adjacent units (it's not related to the weapon special &amp;quot;slows&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[regenerate]'' ability ===&lt;br /&gt;
&lt;br /&gt;
* '''value''': the amount healed.&lt;br /&gt;
* '''poison''': can be one of ''slowed'',''cured''.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys and tags used by the ''[resistance]'' ability ===&lt;br /&gt;
&lt;br /&gt;
* '''value''': set resistance to this value.&lt;br /&gt;
* '''max_value''': maximum resistance value. This value '''must''' be set in order for [resistance] to function.&lt;br /&gt;
* '''add''': adds to resistance.&lt;br /&gt;
* '''sub''': subtracts from resistance.&lt;br /&gt;
* '''multiply''': multiplies resistance value. &lt;br /&gt;
* '''divide''': divides resistance value.&lt;br /&gt;
* '''apply_to''': a list of damage types; if left out, the ability applies to all types.&lt;br /&gt;
* '''active_on''': one of 'defense' or 'offense'; if left out, the ability is active on both.&lt;br /&gt;
These keys affect the actual resistance (e.g. -20%), not the damage modifier normally used in [resistance] (e.g. 120).&lt;br /&gt;
* '''[filter_weapon]''': {{DevFeature1.15|0}} If present, the resistance ability only takes effect when the owner of the ability uses a matching weapon.&lt;br /&gt;
* '''[filter_second_weapon]''': {{DevFeature1.15|0}} If present, the resistance ability only takes effect when the opponent uses a matching weapon.&lt;br /&gt;
* '''[filter_student]''': {{DevFeature1.15|0}} If present, the ability only takes effect on units matching this filter.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[leadership]'' ability ===&lt;br /&gt;
&lt;br /&gt;
* '''value''': the percentage bonus to damage.&lt;br /&gt;
* '''[filter_weapon]''': If present, the leadership ability only takes effect when the owner of the ability uses a matching weapon.&lt;br /&gt;
* '''[filter_second_weapon]''': If present, the leadership ability only takes effect when the opponent uses a matching weapon.&lt;br /&gt;
* '''[filter_student]''': {{DevFeature1.15|0}} If present, the ability only takes effect on units matching this filter.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[illuminates]'' ability ===&lt;br /&gt;
&lt;br /&gt;
Because this ability changes the terrain instead of units on it, affect_self, affect_allies, affect_enemies and [filter_adjacent] have no effect.&lt;br /&gt;
* '''value''': the percentage bonus to lawful units. Units with '''alignment=lawful''' do +''value'' % damage when under the influence of a unit with this ability. Units with '''alignment=chaotic''' do -''value'' % damage. Units with '''alignment=neutral''' are unaffected by this ability. Units with '''alignment=liminal''' do -(abs(''value'')) % damage. ''value'' can be a negative number; this is useful if you want to give Chaotic units an advantage instead of Lawful ones. &lt;br /&gt;
* '''max_value''': the maximum percentage bonus given.&lt;br /&gt;
* '''min_value''': the minimum percentage bonus given.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[hides]'' ability ===&lt;br /&gt;
&lt;br /&gt;
* '''alert''': the displayed text when the unit is discovered. Default &amp;quot;Ambushed!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Extra tags used by the ''[teleport]'' ability ===&lt;br /&gt;
&lt;br /&gt;
* '''[tunnel]''' - a [[DirectActionsWML#.5Btunnel.5D|tunnel tag]] (without the remove key) defining the tunneling source and target hexes, and maybe other conditions. (It automatically applies only to the unit with the ability.)  You may use $teleport_unit inside the tunnel tag for filtering purposes.&lt;br /&gt;
&lt;br /&gt;
=== Extra tags and keys used by weapon special abilities ===&lt;br /&gt;
&lt;br /&gt;
* '''[filter_weapon]''': If present, the ability only takes effect when the owner of the ability uses a matching weapon.&lt;br /&gt;
* '''[filter_second_weapon]''': If present, the ability only takes effect when the opponent uses a matching weapon.&lt;br /&gt;
* '''[filter_student]''': If present, the ability only takes effect on units matching this filter.&lt;br /&gt;
* Other keys and tags appropriate to the specific weapon special&lt;br /&gt;
&lt;br /&gt;
=== Macros for common abilities ===&lt;br /&gt;
&lt;br /&gt;
* ABILITY_AMBUSH&lt;br /&gt;
* ABILITY_CURES&lt;br /&gt;
* ABILITY_HEALS&lt;br /&gt;
* ABILITY_ILLUMINATES&lt;br /&gt;
* ABILITY_LEADERSHIP_LEVEL_1 to ABILITY_LEADERSHIP_LEVEL_5&lt;br /&gt;
* {{DevFeature1.13|2}} ABILITY_LEADERSHIP (replaces the above leadership macros, which are now deprecated)&lt;br /&gt;
* ABILITY_NIGHTSTALK&lt;br /&gt;
* ABILITY_REGENERATES&lt;br /&gt;
* ABILITY_SKIRMISHER&lt;br /&gt;
* ABILITY_STEADFAST&lt;br /&gt;
* ABILITY_SUBMERGE&lt;br /&gt;
* ABILITY_TELEPORT&lt;br /&gt;
&lt;br /&gt;
== The ''[specials]'' tag ==&lt;br /&gt;
&lt;br /&gt;
The '''[specials]''' tag goes inside the '''[attack]''' tag. It can contain the following tags:&lt;br /&gt;
&lt;br /&gt;
* '''[attacks]''': modifies the number of attacks of a weapon&lt;br /&gt;
* '''[berserk]''': pushes the attack for more than one combat round&lt;br /&gt;
* '''[chance_to_hit]''': modifies the chance to hit of a weapon&lt;br /&gt;
* '''[damage]''': modifies the damage of a weapon&lt;br /&gt;
* '''[disable]''': disables the weapon&lt;br /&gt;
* '''[drains]''': heals the attacker half of the damage dealt&lt;br /&gt;
* '''[firststrike]''': forces the weapon to always strike first&lt;br /&gt;
* '''[heal_on_hit]''': heals the attacker when an attack connects&lt;br /&gt;
* '''[petrifies]''': turns the target to stone&lt;br /&gt;
* '''[plague]''': when used to kill an enemy, a friendly unit takes its place&lt;br /&gt;
* '''[poison]''': poisons the target&lt;br /&gt;
* '''[slow]''': slows the target&lt;br /&gt;
* '''[swarm]''': number of strikes decreases as the unit loses hitpoints&lt;br /&gt;
Any other name is valid, but will result in an special that does nothing but report it is there.&lt;br /&gt;
&lt;br /&gt;
=== Common keys and tags for every weapon special ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|?}} All keys inside any weapon special that expects a numeric value will also accept formulas using [[Wesnoth Formula Language]]. In order to use a formula in these keys, you must enclose it in parentheses.&lt;br /&gt;
&lt;br /&gt;
* '''name''': the (translatable) name of the special.&lt;br /&gt;
* '''name_inactive''': the (translatable) name of the special when inactive. Defaults to ''name'' if not specified; if the special is supposed to be not displayed when inactive, you must explicitly set ''name_inactive'' to an empty string (nothing after the equals sign).&lt;br /&gt;
* '''description''': the (translatable) description of the special.&lt;br /&gt;
* '''description_inactive''': the (translatable) description of the special when inactive. Defaults to ''description'' if not specified.&lt;br /&gt;
* '''special_note''' {{DevFeature1.15|14}} Translatable string, which will be displayed in the unit’s help. See also [[UnitTypeWML#Special_Notes]].&lt;br /&gt;
* '''id''': this ability will not be cumulative with other specials using this id.&lt;br /&gt;
* '''active_on''': one of '''defense''' or '''offense'''; if left out, the special is active on both.&lt;br /&gt;
* '''apply_to''': one of '''self''','''opponent''','''attacker''','''defender''','''both''' (default: ''self''). Determines who the effects of this special are applied to.&lt;br /&gt;
* '''[filter_adjacent]''': if an adjacent unit does not match this filter, the special will not be active and no-one will receive its effects. Takes extra keys ''adjacent'', ''count'', ''is_enemy'', just like in a [[StandardUnitFilter]]. In fact, it's really a shorthand for a [filter_adjacent] nested within [filter_self], with the one difference that, in the absence of a specified ''count'', all listed directions must match (so, with two directiones eg ''adjacent=n,s'', the default is ''count=2''). The variables $this_unit and {{DevFeature1.13|2}} $other_unit both work as you'd expect. Multiple [filter_adjacent] can be provided, all of which must pass for the ability to activate. &lt;br /&gt;
* '''[filter_adjacent_location]''': like [filter_adjacent], but filters on locations instead of units. This is a shorthand for [filter_self][filter_location][filter_adjacent_location].&lt;br /&gt;
* '''[filter_self]''': the special will only be active if the owner matches this [[StandardUnitFilter]] (SUF).&lt;br /&gt;
** '''[filter_weapon]''': a [[FilterWML#Filtering_Weapons|standard weapon filter]], including special=.&lt;br /&gt;
** '''$other_unit''': {{DevFeature1.13|2}} The special variable $other_unit refers to the opponent.&lt;br /&gt;
* '''[filter_opponent]''': the special will only be active if the opponent matches this SUF.&lt;br /&gt;
** '''[filter_weapon]''': a [[FilterWML#Filtering_Weapons|standard weapon filter]], including special=.&lt;br /&gt;
** '''$other_unit''': {{DevFeature1.13|2}} The special variable $other_unit refers to the unit that owns the weapon.&lt;br /&gt;
* '''[filter_attacker]''': the special will only be active if the attacker matches this SUF.&lt;br /&gt;
** '''[filter_weapon]''': a [[FilterWML#Filtering_Weapons|standard weapon filter]], including special=.&lt;br /&gt;
** '''$other_unit''': {{DevFeature1.13|2}} The special variable $other_unit refers to the defender.&lt;br /&gt;
* '''[filter_defender]''' the special will only be active if the defender matches this SUF.&lt;br /&gt;
** '''[filter_weapon]''': a [[FilterWML#Filtering_Weapons|standard weapon filter]], including special=.&lt;br /&gt;
** '''$other_unit''': {{DevFeature1.13|2}} The special variable $other_unit refers to the attacker.&lt;br /&gt;
&lt;br /&gt;
=== Common keys and tags for specials with a value ===&lt;br /&gt;
&lt;br /&gt;
The '''[damage]''', '''[attacks]''', and '''[chance_to_hit]''' specials take values that specify how those specials modify their respective base values. The '''[drains]''' special takes a value specifying the percentage of damage drained (default 50) and '''[heal_on_hit]''' takes the amount to heal (default 0; negative values will harm the attacker, but not kill). &lt;br /&gt;
&lt;br /&gt;
* '''value''': the value to be used.&lt;br /&gt;
* '''add''': the number to add to the base value.&lt;br /&gt;
* '''sub''': the number to subtract from the base value.&lt;br /&gt;
* '''multiply''': this multiplies the base value.&lt;br /&gt;
* '''divide''': this divides the base value.&lt;br /&gt;
* '''cumulative''': if set to 'yes', this special will be cumulative with the base value.&lt;br /&gt;
* '''backstab''': if set to 'yes', this special will only apply to the attacker, and only when there is an enemy on the target's opposite side (i.e. when the standard backstab special applies). {{DevFeature1.13|2}} This is now deprecated. The same functionality can be achieved with a [filter_adjacent] in [filter_opponent]; see the implementation of the default backstab special for details.&lt;br /&gt;
* '''[filter_base_value]''': filters on the value before any modifications; uses the keys '''equals''', '''not_equals''', '''less_than''', '''greater_than''', '''less_than_equal_to''', '''greater_than_equal_to'''.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[berserk]'' special ===&lt;br /&gt;
&lt;br /&gt;
* '''value''': the maximum number of combat rounds (default 1).&lt;br /&gt;
* '''cumulative''': if set to 'yes', this special will be cumulative with other active berserk specials (on the current combatant, not with an opponent's berserk).&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[plague]'' special ===&lt;br /&gt;
&lt;br /&gt;
* '''type''': the unit type to be spawned on kill.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[swarm]'' special ===&lt;br /&gt;
&lt;br /&gt;
* '''swarm_attacks_max''': the maximum number of attacks for the swarm. Defaults to the base number of attacks modified by any applicable [attacks] specials. If this is specified, then the base number of attacks is ignored.&lt;br /&gt;
* '''swarm_attacks_min''': the minimum number of attacks for the swarm. Defaults to zero. This can be set higher than swarm_attacks_max to cause a unit to gain attacks as health decreases.&lt;br /&gt;
The ratio of the unit's current to maximum hit points will be used to scale the number of attacks between these two values.&lt;br /&gt;
&lt;br /&gt;
Prior to version 1.11, a [swarm] special will cause [attacks] specials to be ignored. In 1.11 and later, [attacks] specials are applied before [swarm].&lt;br /&gt;
&lt;br /&gt;
=== Macros for common weapon specials ===&lt;br /&gt;
&lt;br /&gt;
* WEAPON_SPECIAL_BACKSTAB&lt;br /&gt;
* WEAPON_SPECIAL_BERSERK&lt;br /&gt;
* WEAPON_SPECIAL_CHARGE&lt;br /&gt;
* WEAPON_SPECIAL_DRAIN&lt;br /&gt;
* WEAPON_SPECIAL_FIRSTSTRIKE&lt;br /&gt;
* WEAPON_SPECIAL_MAGICAL&lt;br /&gt;
* WEAPON_SPECIAL_MARKSMAN&lt;br /&gt;
* WEAPON_SPECIAL_PLAGUE&lt;br /&gt;
* WEAPON_SPECIAL_PLAGUE_TYPE TYPE&lt;br /&gt;
* WEAPON_SPECIAL_POISON&lt;br /&gt;
* WEAPON_SPECIAL_SLOW&lt;br /&gt;
* WEAPON_SPECIAL_STONE&lt;br /&gt;
* WEAPON_SPECIAL_SWARM&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UnitTypeWML]]&lt;br /&gt;
* [[SingleUnitWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=AbilitiesWML&amp;diff=68812</id>
		<title>AbilitiesWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=AbilitiesWML&amp;diff=68812"/>
		<updated>2021-11-07T16:00:14Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* The [abilities] tag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
==  Abilities and their effects ==&lt;br /&gt;
&lt;br /&gt;
There are two types of abilities: ones that apply to units (called ''abilities'') and ones that only apply when using a particular attack (called ''specials'' or ''weapon specials'').  A unit may have multiple abilities and an attack can have multiple specials, but by convention only one weapon special should be assigned to any given attack.&lt;br /&gt;
&lt;br /&gt;
== The ''[abilities]'' tag ==&lt;br /&gt;
&lt;br /&gt;
The following tags are used to describe an ability in WML:&lt;br /&gt;
&lt;br /&gt;
* '''[heals]''': modifies the hitpoints of a unit at the beginning of the healer's turn&lt;br /&gt;
* '''[regenerate]''': modifies the hitpoints of a unit at the beginning of the unit's turn&lt;br /&gt;
* '''[resistance]''': modifies the resistance of a unit to damage&lt;br /&gt;
* '''[leadership]''': modifies the damage of a unit&lt;br /&gt;
* '''[skirmisher]''': negates enemy zones of control&lt;br /&gt;
* '''[illuminates]''': modifies the time of day adjacent to the affected units&lt;br /&gt;
* '''[teleport]''': allows the unit to teleport&lt;br /&gt;
* '''[hides]''': renders the unit invisible to enemies&lt;br /&gt;
* {{DevFeature1.15|0}} A tag matching a [[#The_.5Bspecials.5D_tag|weapon special tag]], [damage] for example, will confer that weapon special to units based on the given conditions. Most weapon specials are supported; however, '''plagues''', '''heal_on_hit''', and '''swarm''' are not.&lt;br /&gt;
Any other name is valid (for example '''[dummy]'''), but will result in an ability that does nothing but report it's there. These tags still use the same common keys and tags as every other ability. '''Note:''' a dummy ability must have an id for the name and description to display.&lt;br /&gt;
&lt;br /&gt;
=== Available formula variables in Abilities and Weapon Specials  ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.15|?}} When using formulas in abilities and weapon specials, the following formula variables are available:&lt;br /&gt;
* '''self''': (unit) the unit that has the ability&lt;br /&gt;
* '''student''': (unit) for leadership-like abilities this is the unit that is adjacent to the unit that has the ability.&lt;br /&gt;
* '''attacker''': (unit) for attack-related abilities and weapon specials, this is the attacking unit during the attack.&lt;br /&gt;
* '''defender''': (unit) for attack-related abilities and weapon specials, this is the defending unit during the attack.&lt;br /&gt;
* '''other''': (unit) the unit whose stats get modified from the ability. For abilities without 'apply_to=opponent' this is always the same as 'student'.&lt;br /&gt;
&lt;br /&gt;
=== Common keys and tags for every ability ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|?}} All keys inside any ability that expects a numeric value will also accept formulas using &lt;br /&gt;
[[Wesnoth Formula Language]]. In order to use a formula in these keys, you must enclose it in parentheses. However, do not precede those parentheses with a dollar sign like &amp;lt;code&amp;gt;$(...)&amp;lt;/code&amp;gt;, since that will erase the &amp;lt;tt&amp;gt;self&amp;lt;/tt&amp;gt; variable.&lt;br /&gt;
&lt;br /&gt;
* '''name''': the (translatable) name of the ability.&lt;br /&gt;
* '''female_name''': the (translatable) name of the ability when possessed by a female unit. Defaults to ''name'' if not specified.&lt;br /&gt;
* '''name_inactive''': the (translatable) name of the ability when inactive. Defaults to ''name'' if not specified; if the ability is supposed to be not displayed when inactive, you must explicitly set ''name_inactive'' to an empty string (nothing after the equals sign).&lt;br /&gt;
* '''female_name_inactive''': the (translatable) name of the ability when inactive and possessed by a female unit. Defaults to ''name_inactive'' if not specified.&lt;br /&gt;
* '''description''': the (translatable) description of the ability.&lt;br /&gt;
* '''description_inactive''': the (translatable) description of the ability when inactive. Defaults to ''description'' if not specified.&lt;br /&gt;
* '''special_note''' {{DevFeature1.15|14}} Translatable string, which will be displayed in the unit’s help. See also [[UnitTypeWML#Special_Notes]].&lt;br /&gt;
* '''affect_self''': if equal to 'yes' (default), the ability will affect the unit that has it.&lt;br /&gt;
* '''affect_allies''': if equal to 'yes', the ability will affect units from the same and allied sides in the specified adjacent hexes. If set to 'no' it will not affect own or allied sides. If not set (default) it will affect units on the same side but not from allied sides.&lt;br /&gt;
* '''affect_enemies''': if equal to 'yes' (default is 'no'), the ability will affect enemies in the specified adjacent hexes.&lt;br /&gt;
* '''cumulative''': if set to 'yes', this ability will be cumulative with the base value for this ability.&lt;br /&gt;
* '''id''': this ability will not be cumulative with other abilities using this id. Must be present if cumulative is anything other than 'yes'.&lt;br /&gt;
* '''[filter]''': [[StandardUnitFilter]] If the unit owning the ability does not match this filter, the ability will be inactive.&lt;br /&gt;
* '''[affect_adjacent]''': an adjacent unit that does not match this filter will not receive its effects. There can be multiple [affect_adjacent] tags in a single ability; a unit needs to match any one of these to receive the effects. The side requirement of matching units is defined by the '''affect_allies''' and '''affect_enemies''' keys. If there are no [affect_adjacent] tags, then no adjacent units will receive the effects.&lt;br /&gt;
** '''adjacent''': a comma separated list of any combination of these directions: '''n''','''ne''','''se''','''s''','''sw''','''nw'''. (See [[StandardLocationFilter#Directions|notes]])&lt;br /&gt;
** '''[filter]''': a [[StandardUnitFilter]]. {{DevFeature1.13|2}} The variable $other_unit refers to the unit owning the ability.&lt;br /&gt;
* '''[filter_self]''': if the owner of the ability does not match this filter, it will not receive the effects of the ability. [filter_self] takes a [[StandardUnitFilter]] as argument.&lt;br /&gt;
* '''[filter_adjacent]''': if an adjacent unit does not match this filter, the ability will not be active and no-one will receive its affects. Takes extra keys ''adjacent'', ''count'', ''is_enemy'', just like in a [[StandardUnitFilter]], with the one difference that, in the absence of a specified ''count'', all listed directions must match (so, with two directiones eg ''adjacent=n,s'', the default is ''count=2''). In fact, it's really a shorthand for a [filter_adjacent] nested within [filter]. The variables $this_unit and {{DevFeature1.13|2}} $other_unit both work as you'd expect. Multiple [filter_adjacent] can be provided, all of which must pass for the ability to activate.&lt;br /&gt;
* '''[filter_adjacent_location]''': like [filter_adjacent], but filters on locations instead of units. This is a shorthand for [filter][filter_location][filter_adjacent_location].&lt;br /&gt;
* '''[filter_base_value]''': filters on the value before any modifications; uses the keys '''equals''', '''not_equals''', etc. If several keys are used all have to match.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[heals]'' ability ===&lt;br /&gt;
&lt;br /&gt;
* '''value''': the amount healed.&lt;br /&gt;
* '''poison''': can be one of ''slowed'',''cured''. ''slowed'' means poison will not take effect for adjacent units (it's not related to the weapon special &amp;quot;slows&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[regenerate]'' ability ===&lt;br /&gt;
&lt;br /&gt;
* '''value''': the amount healed.&lt;br /&gt;
* '''poison''': can be one of ''slowed'',''cured''.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys and tags used by the ''[resistance]'' ability ===&lt;br /&gt;
&lt;br /&gt;
* '''value''': set resistance to this value.&lt;br /&gt;
* '''max_value''': maximum resistance value. This value '''must''' be set in order for [resistance] to function.&lt;br /&gt;
* '''add''': adds to resistance.&lt;br /&gt;
* '''sub''': subtracts from resistance.&lt;br /&gt;
* '''multiply''': multiplies resistance value. &lt;br /&gt;
* '''divide''': divides resistance value.&lt;br /&gt;
* '''apply_to''': a list of damage types; if left out, the ability applies to all types.&lt;br /&gt;
* '''active_on''': one of 'defense' or 'offense'; if left out, the ability is active on both.&lt;br /&gt;
These keys affect the actual resistance (e.g. -20%), not the damage modifier normally used in [resistance] (e.g. 120).&lt;br /&gt;
* '''[filter_weapon]''': {{DevFeature1.15|0}} If present, the resistance ability only takes effect when the owner of the ability uses a matching weapon.&lt;br /&gt;
* '''[filter_second_weapon]''': {{DevFeature1.15|0}} If present, the resistance ability only takes effect when the opponent uses a matching weapon.&lt;br /&gt;
* '''[filter_student]''': {{DevFeature1.15|0}} If present, the ability only takes effect on units matching this filter.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[leadership]'' ability ===&lt;br /&gt;
&lt;br /&gt;
* '''value''': the percentage bonus to damage.&lt;br /&gt;
* '''[filter_weapon]''': If present, the leadership ability only takes effect when the owner of the ability uses a matching weapon.&lt;br /&gt;
* '''[filter_second_weapon]''': If present, the leadership ability only takes effect when the opponent uses a matching weapon.&lt;br /&gt;
* '''[filter_student]''': {{DevFeature1.15|0}} If present, the ability only takes effect on units matching this filter.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[illuminates]'' ability ===&lt;br /&gt;
&lt;br /&gt;
Because this ability changes the terrain instead of units on it, affect_self, affect_allies, affect_enemies and [filter_adjacent] have no effect.&lt;br /&gt;
* '''value''': the percentage bonus to lawful units. Units with '''alignment=lawful''' do +''value'' % damage when under the influence of a unit with this ability. Units with '''alignment=chaotic''' do -''value'' % damage. Units with '''alignment=neutral''' are unaffected by this ability. Units with '''alignment=liminal''' do -(abs(''value'')) % damage. ''value'' can be a negative number; this is useful if you want to give Chaotic units an advantage instead of Lawful ones. &lt;br /&gt;
* '''max_value''': the maximum percentage bonus given.&lt;br /&gt;
* '''min_value''': the minimum percentage bonus given.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[hides]'' ability ===&lt;br /&gt;
&lt;br /&gt;
* '''alert''': the displayed text when the unit is discovered. Default &amp;quot;Ambushed!&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== Extra tags used by the ''[teleport]'' ability ===&lt;br /&gt;
&lt;br /&gt;
* '''[tunnel]''' - a [[DirectActionsWML#.5Btunnel.5D|tunnel tag]] (without the remove key) defining the tunneling source and target hexes, and maybe other conditions. (It automatically applies only to the unit with the ability.)  You may use $teleport_unit inside the tunnel tag for filtering purposes.&lt;br /&gt;
&lt;br /&gt;
=== Extra tags and keys used by weapon special abilities ===&lt;br /&gt;
&lt;br /&gt;
* '''[filter_weapon]''': If present, the ability only takes effect when the owner of the ability uses a matching weapon.&lt;br /&gt;
* '''[filter_second_weapon]''': If present, the ability only takes effect when the opponent uses a matching weapon.&lt;br /&gt;
* '''[filter_student]''': If present, the ability only takes effect on units matching this filter.&lt;br /&gt;
* Other keys and tags appropriate to the specific weapon special&lt;br /&gt;
&lt;br /&gt;
=== Macros for common abilities ===&lt;br /&gt;
&lt;br /&gt;
* ABILITY_AMBUSH&lt;br /&gt;
* ABILITY_CURES&lt;br /&gt;
* ABILITY_HEALS&lt;br /&gt;
* ABILITY_ILLUMINATES&lt;br /&gt;
* ABILITY_LEADERSHIP_LEVEL_1 to ABILITY_LEADERSHIP_LEVEL_5&lt;br /&gt;
* {{DevFeature1.13|2}} ABILITY_LEADERSHIP (replaces the above leadership macros, which are now deprecated)&lt;br /&gt;
* ABILITY_NIGHTSTALK&lt;br /&gt;
* ABILITY_REGENERATES&lt;br /&gt;
* ABILITY_SKIRMISHER&lt;br /&gt;
* ABILITY_STEADFAST&lt;br /&gt;
* ABILITY_SUBMERGE&lt;br /&gt;
* ABILITY_TELEPORT&lt;br /&gt;
&lt;br /&gt;
== The ''[specials]'' tag ==&lt;br /&gt;
&lt;br /&gt;
The '''[specials]''' tag goes inside the '''[attack]''' tag. It can contain the following tags:&lt;br /&gt;
&lt;br /&gt;
* '''[attacks]''': modifies the number of attacks of a weapon&lt;br /&gt;
* '''[berserk]''': pushes the attack for more than one combat round&lt;br /&gt;
* '''[chance_to_hit]''': modifies the chance to hit of a weapon&lt;br /&gt;
* '''[damage]''': modifies the damage of a weapon&lt;br /&gt;
* '''[disable]''': disables the weapon&lt;br /&gt;
* '''[drains]''': heals the attacker half of the damage dealt&lt;br /&gt;
* '''[firststrike]''': forces the weapon to always strike first&lt;br /&gt;
* '''[heal_on_hit]''': heals the attacker when an attack connects&lt;br /&gt;
* '''[petrifies]''': turns the target to stone&lt;br /&gt;
* '''[plague]''': when used to kill an enemy, a friendly unit takes its place&lt;br /&gt;
* '''[poison]''': poisons the target&lt;br /&gt;
* '''[slow]''': slows the target&lt;br /&gt;
* '''[swarm]''': number of strikes decreases as the unit loses hitpoints&lt;br /&gt;
Any other name is valid, but will result in an special that does nothing but report it is there.&lt;br /&gt;
&lt;br /&gt;
=== Common keys and tags for every weapon special ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|?}} All keys inside any weapon special that expects a numeric value will also accept formulas using [[Wesnoth Formula Language]]. In order to use a formula in these keys, you must enclose it in parentheses.&lt;br /&gt;
&lt;br /&gt;
* '''name''': the (translatable) name of the special.&lt;br /&gt;
* '''name_inactive''': the (translatable) name of the special when inactive. Defaults to ''name'' if not specified; if the special is supposed to be not displayed when inactive, you must explicitly set ''name_inactive'' to an empty string (nothing after the equals sign).&lt;br /&gt;
* '''description''': the (translatable) description of the special.&lt;br /&gt;
* '''description_inactive''': the (translatable) description of the special when inactive. Defaults to ''description'' if not specified.&lt;br /&gt;
* '''special_note''' {{DevFeature1.15|14}} Translatable string, which will be displayed in the unit’s help. See also [[UnitTypeWML#Special_Notes]].&lt;br /&gt;
* '''id''': this ability will not be cumulative with other specials using this id.&lt;br /&gt;
* '''active_on''': one of '''defense''' or '''offense'''; if left out, the special is active on both.&lt;br /&gt;
* '''apply_to''': one of '''self''','''opponent''','''attacker''','''defender''','''both''' (default: ''self''). Determines who the effects of this special are applied to.&lt;br /&gt;
* '''[filter_adjacent]''': if an adjacent unit does not match this filter, the special will not be active and no-one will receive its affects. Takes extra keys ''adjacent'', ''count'', ''is_enemy'', just like in a [[StandardUnitFilter]]. In fact, it's really a shorthand for a [filter_adjacent] nested within [filter_self], with the one difference that, in the absence of a specified ''count'', all listed directions must match (so, with two directiones eg ''adjacent=n,s'', the default is ''count=2''). The variables $this_unit and {{DevFeature1.13|2}} $other_unit both work as you'd expect. Multiple [filter_adjacent] can be provided, all of which must pass for the ability to activate. &lt;br /&gt;
* '''[filter_adjacent_location]''': like [filter_adjacent], but filters on locations instead of units. This is a shorthand for [filter_self][filter_location][filter_adjacent_location].&lt;br /&gt;
* '''[filter_self]''': the special will only be active if the owner matches this [[StandardUnitFilter]] (SUF).&lt;br /&gt;
** '''[filter_weapon]''': a [[FilterWML#Filtering_Weapons|standard weapon filter]], including special=.&lt;br /&gt;
** '''$other_unit''': {{DevFeature1.13|2}} The special variable $other_unit refers to the opponent.&lt;br /&gt;
* '''[filter_opponent]''': the special will only be active if the opponent matches this SUF.&lt;br /&gt;
** '''[filter_weapon]''': a [[FilterWML#Filtering_Weapons|standard weapon filter]], including special=.&lt;br /&gt;
** '''$other_unit''': {{DevFeature1.13|2}} The special variable $other_unit refers to the unit that owns the weapon.&lt;br /&gt;
* '''[filter_attacker]''': the special will only be active if the attacker matches this SUF.&lt;br /&gt;
** '''[filter_weapon]''': a [[FilterWML#Filtering_Weapons|standard weapon filter]], including special=.&lt;br /&gt;
** '''$other_unit''': {{DevFeature1.13|2}} The special variable $other_unit refers to the defender.&lt;br /&gt;
* '''[filter_defender]''' the special will only be active if the defender matches this SUF.&lt;br /&gt;
** '''[filter_weapon]''': a [[FilterWML#Filtering_Weapons|standard weapon filter]], including special=.&lt;br /&gt;
** '''$other_unit''': {{DevFeature1.13|2}} The special variable $other_unit refers to the attacker.&lt;br /&gt;
&lt;br /&gt;
=== Common keys and tags for specials with a value ===&lt;br /&gt;
&lt;br /&gt;
The '''[damage]''', '''[attacks]''', and '''[chance_to_hit]''' specials take values that specify how those specials modify their respective base values. The '''[drains]''' special takes a value specifying the percentage of damage drained (default 50) and '''[heal_on_hit]''' takes the amount to heal (default 0; negative values will harm the attacker, but not kill). &lt;br /&gt;
&lt;br /&gt;
* '''value''': the value to be used.&lt;br /&gt;
* '''add''': the number to add to the base value.&lt;br /&gt;
* '''sub''': the number to subtract from the base value.&lt;br /&gt;
* '''multiply''': this multiplies the base value.&lt;br /&gt;
* '''divide''': this divides the base value.&lt;br /&gt;
* '''cumulative''': if set to 'yes', this special will be cumulative with the base value.&lt;br /&gt;
* '''backstab''': if set to 'yes', this special will only apply to the attacker, and only when there is an enemy on the target's opposite side (i.e. when the standard backstab special applies). {{DevFeature1.13|2}} This is now deprecated. The same functionality can be achieved with a [filter_adjacent] in [filter_opponent]; see the implementation of the default backstab special for details.&lt;br /&gt;
* '''[filter_base_value]''': filters on the value before any modifications; uses the keys '''equals''', '''not_equals''', '''less_than''', '''greater_than''', '''less_than_equal_to''', '''greater_than_equal_to'''.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[berserk]'' special ===&lt;br /&gt;
&lt;br /&gt;
* '''value''': the maximum number of combat rounds (default 1).&lt;br /&gt;
* '''cumulative''': if set to 'yes', this special will be cumulative with other active berserk specials (on the current combatant, not with an opponent's berserk).&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[plague]'' special ===&lt;br /&gt;
&lt;br /&gt;
* '''type''': the unit type to be spawned on kill.&lt;br /&gt;
&lt;br /&gt;
=== Extra keys used by the ''[swarm]'' special ===&lt;br /&gt;
&lt;br /&gt;
* '''swarm_attacks_max''': the maximum number of attacks for the swarm. Defaults to the base number of attacks modified by any applicable [attacks] specials. If this is specified, then the base number of attacks is ignored.&lt;br /&gt;
* '''swarm_attacks_min''': the minimum number of attacks for the swarm. Defaults to zero. This can be set higher than swarm_attacks_max to cause a unit to gain attacks as health decreases.&lt;br /&gt;
The ratio of the unit's current to maximum hit points will be used to scale the number of attacks between these two values.&lt;br /&gt;
&lt;br /&gt;
Prior to version 1.11, a [swarm] special will cause [attacks] specials to be ignored. In 1.11 and later, [attacks] specials are applied before [swarm].&lt;br /&gt;
&lt;br /&gt;
=== Macros for common weapon specials ===&lt;br /&gt;
&lt;br /&gt;
* WEAPON_SPECIAL_BACKSTAB&lt;br /&gt;
* WEAPON_SPECIAL_BERSERK&lt;br /&gt;
* WEAPON_SPECIAL_CHARGE&lt;br /&gt;
* WEAPON_SPECIAL_DRAIN&lt;br /&gt;
* WEAPON_SPECIAL_FIRSTSTRIKE&lt;br /&gt;
* WEAPON_SPECIAL_MAGICAL&lt;br /&gt;
* WEAPON_SPECIAL_MARKSMAN&lt;br /&gt;
* WEAPON_SPECIAL_PLAGUE&lt;br /&gt;
* WEAPON_SPECIAL_PLAGUE_TYPE TYPE&lt;br /&gt;
* WEAPON_SPECIAL_POISON&lt;br /&gt;
* WEAPON_SPECIAL_SLOW&lt;br /&gt;
* WEAPON_SPECIAL_STONE&lt;br /&gt;
* WEAPON_SPECIAL_SWARM&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UnitTypeWML]]&lt;br /&gt;
* [[SingleUnitWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Guide_to_UMC_Content&amp;diff=68462</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=68462"/>
		<updated>2021-08-30T00:52:11Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* Lonely Era (LE) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a guide to the current 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;
This list covers add-ons for the latest (1.14) release of Wesnoth. There are archived versions of this page for [[Guide_to_UMC_Content/1.10|1.10]] and [[Guide_to_UMC_Content/1.12|1.12]].&lt;br /&gt;
&lt;br /&gt;
For content creators who loved an add-on that hasn't been added to 1.14 yet, and are wondering about taking it over, please ensure that its entry on the older (1.12 or 1.10) wiki page is up to date, add a link to the add-on's feedback thread in the forums, and generally do the tidy-up that doesn't need you to start changing the campaign, and then ask the old maintainer. (You should probably also wait until the end of May 2018 before assuming that a maintainer isn't already porting to 1.14).&lt;br /&gt;
&lt;br /&gt;
If you are looking for even more campaigns, please see the links in at the bottom of this page.&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;Version&amp;lt;/b&amp;gt; campaign version on the add-ons server&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;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;
Please note: If you didn't play the campaign, write the difficulty written on the add-ons server.&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. If you don't know which style is the campaign you are listing, don't write this.&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 1.14:&amp;lt;/b&amp;gt;&lt;br /&gt;
** see the list of statuses in the campaign blueprint&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;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.14.x ==&lt;br /&gt;
&lt;br /&gt;
=== Campaigns ===&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:''' shadowm/ShikadiQueen/Iris&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished, 0.10.11&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;
'''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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=32091]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/project-ethea/After_the_Storm]&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;
====A Beastly Tale====&lt;br /&gt;
&lt;br /&gt;
''When a small village is beset by troubles, its fate rests in the hands of a young woodsman and the animals he befriends.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' GloccusV&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 2.0.3&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 5 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Intermediate&lt;br /&gt;
&lt;br /&gt;
'''Custom units:''' [//units.wesnoth.org/1.14/A_Beastly_Tale/en_US/A_Beastly_Tale.html Here]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=41434&amp;amp;p=633612&amp;amp;hilit=A+Beastly+Tale#p579093 Here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====A Song of the Winds====&lt;br /&gt;
&lt;br /&gt;
''Every era has its heroes and heroines. Before the song of Myra, the odyssey of Akhen Wadjet and the aria of Tenma Yozora, there was the song of the winds that echoed in the mountains and halls at the heart of the Great Continent. Follow young Maat of Hiera'Shirsha and Prince Abhai of Garet-Desh in the war that set the stage for one of the greatest upheavals Irdya has ever witnessed.&lt;br /&gt;
(Prequel to the Dragon Trilogy)''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' revansurik&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 43 scenarios (some of them dialogue-only)&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Intermediate&lt;br /&gt;
&lt;br /&gt;
'''Custom units:''' War of Legends + Custom factions&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//https://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=53913 Here]&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:''' Complete 1.10.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 20 scenarios&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=31348]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/doofus-01/wesnoth-Bad_Moon_Rising]&lt;br /&gt;
&lt;br /&gt;
====  The Black Cross of Aleron ====&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 2.0.3&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 scenarios&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;
'''[https://units.wesnoth.org/1.14/Black_Cross_of_Aleron/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;
==== 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, 1.3.2&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 12 scenarios&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;
'''[//units.wesnoth.org/1.14/Danse_Macabre/en_US/Danse_Macabre.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//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.14 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;
&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:''' Incomplete (guessing, based on the discussion thread), 0.1.9.5&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 17 scenarios&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=39512]&lt;br /&gt;
&lt;br /&gt;
==== A Fiery Birth ====&lt;br /&gt;
&lt;br /&gt;
''A scholar of the Great Academy journeys to the land of the drakes to discover their secret origins.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Mathbrush&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.2.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=47861&amp;amp;p=623953 Here]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/brirush84/AFieryBirth]&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:''' Complete, 2.6.1&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 4 scenarios&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:''' [//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;
==== [[FlightToFreedom|Flight to Freedom]] ====&lt;br /&gt;
&lt;br /&gt;
''Flight to Freedom chronicles the story of the drake hero Malakar, and his desperate cross-country flight out of slavery.''&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' MadMax, Nova&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 20 playable scenarios + 1 dialogue-only, for a total of 21&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 5.3.3&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Expert&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Large Battle, Puzzle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Drakes&lt;br /&gt;
&lt;br /&gt;
'''Required Wesnoth version:''' 1.14+&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=1887]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/cooljeanius/Flight_Freedom]&lt;br /&gt;
&lt;br /&gt;
==== Inky's Quest ====&lt;br /&gt;
&lt;br /&gt;
''The Cuttlefish Campaign''&lt;br /&gt;
&lt;br /&gt;
''Are the cuttlefish mere beasts or something more? What stories would they tell if they could speak? This story provides one possible answer. The easiest difficulty provides hints for novice players.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Telchin&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 12 scenarios + story-only epilogue, for a total of 13&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.5.6&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Custom units (cuttlefish, tentacles, giant clams...). Enemies use both default era units and custom ones.&lt;br /&gt;
&lt;br /&gt;
'''[//units.wesnoth.org/1.14/Inky_Quest/en_US/Inky_Quest.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=32501]&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:''' shadowm/ShikadiQueen/Iris&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished, 2.1.9&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;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=43309]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/project-ethea/Invasion_from_the_Unknown]&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;
&lt;br /&gt;
==== Leader of the Drakes ====&lt;br /&gt;
&lt;br /&gt;
''Leader of the drakes is killed. His son tries to defend homeland against the orcs. He choosed to ally with saurians, but other clans of drakes disagrees. Will fast and unexperienced Morin win against orcs and rebel drakes alike?''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Elven&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete, 1.02b&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 3 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy/Medium&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Minigames&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, Drakes&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=53951&amp;amp;start=15]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Short, easy campaign with simple objectives. Features Drake Glider as leader and modified Drake Burner with cold and slowing blade.&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;
'''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;
'''Forum:''' [//r.wesnoth.org/t32384]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/Dugy/Legend_of_the_Invincibles]&lt;br /&gt;
&lt;br /&gt;
'''[[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;
==== A New Order ====&lt;br /&gt;
&lt;br /&gt;
''The old kingdom of Wesnoth has fallen before barbarian hordes. The occupying barbarians are on the brink of civil war, the seeds of Wesnothian rebellion are kept alive by old legends, while bandits and Dunefolk mercenaries roam the land. Can Gawen Hagarthen unite these disparate factions against a common foe?''&lt;br /&gt;
&lt;br /&gt;
''Note: This campaign contains mature themes, some of which may be unsuitable for children.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' szopen&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.3.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' Hard to say as it is non-linear; it is advertised as having 45 scenarios, but the numbering only goes up to 30 due to some of the scenarios being alternates to one another.&lt;br /&gt;
&lt;br /&gt;
'''Requirements:''' Requires BfW 1.14+. Also uses the &amp;quot;Akladian Music&amp;quot; add-on.&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Advertised as intermediate; could be considered hard, though.&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Mostly Skirmish, some Large Battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' mostly various human factions (including the Dunefolk), with the addition of the Akladian faction of humans&lt;br /&gt;
&lt;br /&gt;
'''[//units.wesnoth.org/1.14/A_New_Order/en_US/A_New_Order.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=6486&amp;amp;sid=2e644284f54e65736b4f1543b7098ef9]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/nemaara/A_New_Order]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' (Pyrophorus) Certainly one of the most mature and well designed campaign in add-ons. A must.&lt;br /&gt;
&lt;br /&gt;
''' [http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#A_New_Order Players’ Review(s)]'''&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, 0.3.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 playable scenario, 6 intended&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=42854]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Ravagers====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' ''The Ravagers'' 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 such as drinking, 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;
'''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;
'''[//units.wesnoth.org/1.14/The_Ravagers/en_US/The_Ravagers.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=44930]&lt;br /&gt;
&lt;br /&gt;
'''*Notes:''' The main storyline is complete, but there are unfinished side-missions that are still in development. The campaign is aimed to become finished with version 1.2.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Return from the Abyss ====&lt;br /&gt;
&lt;br /&gt;
''After taking part to a disastrous expedition, Khafir and his men are lost and isolated from their people, thousands of miles away from home, bound by a pact sealed with a powerful dwarvish king. Help him escape from the depth of Irdya and finding his way back, in an adventure across two worlds during the rise of a sinister force in the Great Continent.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' skeptical_troll&lt;br /&gt;
&lt;br /&gt;
'''Status:''' finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 19 playable scenario + 10 story only&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Dungeon&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Dunefolk/Default&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=44545]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Rise of the Dunefolk ====&lt;br /&gt;
&lt;br /&gt;
''Adventure of Siabbin and Helare from small village in desert, who step by step made the foundation of the Dunefolk. Nation. Play a stunning adventure against many enemies in different maps - from sandstorm to swampy areas and caves. Defeat powerful lich lord and train one of the best dark mages in the world of Wesnoth.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Elven&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Completed&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 11 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Medium&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Minigames, Survival&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, Dunefolk and dark mage&lt;br /&gt;
&lt;br /&gt;
'''Note:''' enjoable gameplay with every map different. Enough experience to upgrade your units.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Return of the Darks ====&lt;br /&gt;
&lt;br /&gt;
''The Darks are a race which left Wesnoth in the ancient times and lives on Isles in the sky. But now the Magic wich helped them to move the Isles in Sky got lost and the isles are about to fall down. Rumion an adventurer goes to Wesnoth and searchs for something that could help them.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' thvk&lt;br /&gt;
&lt;br /&gt;
'''Status:''' WIP&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 4 playable scenario + 2 story only&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default + some self made units&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=52731]&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:''' Mainlined (this is now one of the campaigns that is downloaded with Wesnoth itself)&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 18 playable scenarios + 3 story only&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:''' [//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;
&lt;br /&gt;
==== Swamplings ====&lt;br /&gt;
&lt;br /&gt;
''Banished by Yushnak the Ponderer, a tribe of lowly swamp goblins endure in the deadly mire of Pogo Bog. Four centuries before the founding of Wesnoth, this is the story of the goblins' struggle against the intrigues and betrayals of the greater races, and the rise of the first wolf rider.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' John Rawlins (boru)&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.2.0i&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction:''' Goblins&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=41254]&lt;br /&gt;
&lt;br /&gt;
'''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#Swamplings Players’ Review(s)]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Dark Hordes ====&lt;br /&gt;
&lt;br /&gt;
''Lead fugitive dark sorcerer Gwiti Ha’atel to mastery of the undead hordes.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Circon&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Various&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Incomplete/WIP&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 15 scenarios done so far&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.1.2&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 undead&lt;br /&gt;
&lt;br /&gt;
'''[//units.wesnoth.org/1.10/The_Dark_Hordes/en_US/The_Dark_Hordes_1.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=16576&amp;amp;]&lt;br /&gt;
&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:''' Finished 0.11.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 5 scenarios&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=37880]&lt;br /&gt;
&lt;br /&gt;
'''Walkthrough''' There is a video-walkthrough by the campaign maintainer that begins  [https://www.youtube.com/watch?v=dGM1bjImvkI&amp;amp;list=PLZorLYWvUD7VIhaXxKwzO8iQANlp_TaF0 here].&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;
&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;
'''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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=31799]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/inferno8/wesnoth-To_Lands_Unknown]&lt;br /&gt;
&lt;br /&gt;
'''[[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, 1.0.14&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 13 playable scenarios + 1 dialogue-only&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;
'''[//units.wesnoth.org/1.10/A_Vision_Blinded/en_US/A_Vision_Blinded.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=23463]&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;
==== '''War of Legends''' ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A multiplayer era focused on the Dark Irdya Campaigns. Contains 15 factions.&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:''' Complete, new features being added for the 1.15.x version of the add-on&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 (Desert Elves)&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;
# Dunefolk&lt;br /&gt;
# Knalgan Alliance&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=30087 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/knyghtmare/War_of_Legends]&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, 3.1&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:''' [//forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=20039 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
'''GitHub:''' [//github.com/inferno8/wesnoth-Era_of_Magic]&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, 4.19&lt;br /&gt;
&lt;br /&gt;
'''Unit Tree:''' [//units.wesnoth.org/1.12/Ageless_Era/en_US/Ageless%20Era.html Ageless Unit Tree (for 1.12)]&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;
'''Git:''' [https://github.com/ProditorMagnus/Ageless-for-1-11 Ageless-for-1-11] and also for 1.12 and [https://github.com/ProditorMagnus/Ageless-for-1-14 1.14]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//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:''' Complete, 0.23&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;
'''Wiki:''' [[Orbivm]]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?t=37920 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
==== Lonely Era (LE) ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' The Lonely Era is a collection of six selected superior solitary sides with interesting and unusual attributes.&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Era: Shield and Atreides. Factions: Desert_Shyde, Brilliand, Stern, Cloud, Grigistian, mikoc5, Stopsignal, The_Gnat, Minnakht.&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Atreides&lt;br /&gt;
&lt;br /&gt;
'''Status 1.14:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Faction Descriptions:''' Included are:&lt;br /&gt;
&lt;br /&gt;
1) Santa's Helpers are his Elves as well as animated pine trees. They are an updated faction based on the Merry Christmas Campaign. Beware of Elves bearing gifts though, the presents are very distracting. They are unique in not having standard levels, they each can gain up to 4 special abilities via AMLA but always remain at level 1. Of course there are also Flying Reindeer and Christmas Seals.&lt;br /&gt;
&lt;br /&gt;
2) Gremlins are an all teleporting race of elusive ethereal creatures. Individually fragile they work together using their tremendous mobility to swarm and overwhelm their enemies. Their mages are perhaps the ultimate glass cannons but if you can somehow keep one alive long enough it might even get to level 5 and become immortal.&lt;br /&gt;
&lt;br /&gt;
3) Vaeringjar are a Viking faction allied with Wolfkin. The vikings eschew ranged weapons as well as sissy ideas like dodging blows but are a very, very hardy lot. They also have a unique herbalist unit that can inspire berserker rage in adjacent vikings for a turn. The wolfkin are lithe and armed with bows and teeth on the other hand. They are also very agile in contrast to the vikings. As nocturnal hunters they are devastating at night and almost helpless in the day.&lt;br /&gt;
&lt;br /&gt;
4) Avians are cold loving, water hating bipedal birds. Their hollow bones and feathers make them vulnerable to fire and blunt weapons. They are unique in having cheap level 0 healers. Unusually their leaders are not drawn from the ranks but form a separate class only selectable as leaders. Tamed Albatrosses to patrol the awful waters.&lt;br /&gt;
&lt;br /&gt;
5) The Deep Ones - Slimy, slippery, blasphemous fish-frogs of the nameless design - living and horrible - have now been sighted on the edge of Wesnoth. Mutants who slowly evolve from human to monster these creatures are nothing to be trifled with! An all water faction they are still capable of holding their own against the landlubbers.&lt;br /&gt;
&lt;br /&gt;
6) Jephrifs live far up in the sky, miles above land. Away from even the most basic things most other races take for granted, such as solid ground, their society developed to be quite alien indeed. In recent times, jephrifs began descending from the skies to participate in combat against other races - apparently for their own amusement, seeing life as a game.&lt;br /&gt;
&lt;br /&gt;
It can be combined with the Everfell Era if both are installed.&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?t=42630 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
== Additional info ==&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;
* [//r.wesnoth.org/t37476 forum thread] for this page&lt;br /&gt;
* [[Guide_to_UMC_Content/1.12|Guide to user-made content (UMC) for Battle for Wesnoth 1.12]]&lt;br /&gt;
* [[Guide_to_UMC_Content/1.10|Guide to user-made content (UMC) for Battle for Wesnoth 1.10]]&lt;br /&gt;
* [//r.wesnoth.org/t36733 thread discussing 1.8 UMC that wasn't ported to 1.10]&lt;br /&gt;
* [//r.wesnoth.org/t48086 thread discussing all UMC that hasn't been ported to 1.14]&lt;br /&gt;
* [//addons.wesnoth.org the addon server]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WML_for_Complete_Beginners:_Chapter_1&amp;diff=67858</id>
		<title>WML for Complete Beginners: Chapter 1</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WML_for_Complete_Beginners:_Chapter_1&amp;diff=67858"/>
		<updated>2021-05-17T01:01:14Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* Attributes */ typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Translations}}&lt;br /&gt;
&lt;br /&gt;
==Chapter 1: Syntax==&lt;br /&gt;
&lt;br /&gt;
First things first; let's go over the ''syntax'' of WML.&lt;br /&gt;
&lt;br /&gt;
For those of you who might not know what the &amp;quot;syntax&amp;quot; of a language is, think of it as a set of rules for how WML needs to be written in order for the game to understand it. This concept may sound a bit confusing, but whether you realize it or not you have been using the concept of syntax your entire life! Think of the structure of a sentence in English: &amp;quot;I like jelly and cheese sandwiches.&amp;quot; That sentence uses a certain set of rules, or ''syntax'' in order to make sense to people who hear or read it. If you said instead, &amp;quot;Like cheese I and sandwiches jelly&amp;quot;, that would make no sense, and no one would understand what you were saying. Likewise, if you said &amp;quot;I like cheese sandwiches and jelly&amp;quot;, that would change the entire meaning of the sentence! &lt;br /&gt;
&lt;br /&gt;
Just like the syntax of the English language, WML syntax also requires proper capitalization, spelling, grammar and punctuation in order for others to understand what you're saying or writing. For example, if you decided to ignore the syntax of the English language and wrote something like this: &amp;quot;won day mary and i had went to seen the elefant at the zoo it's trunc was reely long&amp;quot;, chances are people would not understand much of what you wrote. On the other hand, if you used the correct syntax and wrote: &amp;quot;One day Mary and I went to see the elephant at the zoo. Its trunk was really long!&amp;quot;, people can easily understand what you wrote because it is written in the syntax they recognize and understand. Just as English-reading people would be unable to understand something were it not written in the correct English syntax, the Battle for Wesnoth game is unable to read any WML that is not written in the correct WML syntax.&lt;br /&gt;
&lt;br /&gt;
So now let's go over the basics of WML syntax. Later on you will be gradually introduced to more complex WML syntax, but for now we'll just go over the basic stuff, enough to get you started.&lt;br /&gt;
&lt;br /&gt;
===Basic Components: Tags and Attributes===&lt;br /&gt;
&lt;br /&gt;
WML, as one can infer from the meaning of the acronym, is a &amp;quot;[http://en.wikipedia.org/wiki/Markup_language markup language].&amp;quot; This means that the syntax of the entire language consists of two fundamental elements: '''tags''' and '''attributes'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tags====&lt;br /&gt;
:A tag is a string of lowercase text encapsulated by two square brackets, one at either end. This is an example of a &amp;quot;campaign&amp;quot; tag:&lt;br /&gt;
 [campaign]&lt;br /&gt;
&lt;br /&gt;
:Tags can only contain alphanumeric characters (letters and numbers) and underscores &amp;quot;_&amp;quot;. Notice I said earlier that &amp;quot;a tag is a string of ''lowercase'' text&amp;quot;. This is a fundamental aspect of the WML syntax: all tags are always written in lowercase letters. If you try using capital letters (even just one), the WML engine won't be able to understand what tag you're trying to use and will give you an error when it tries to read the incorrect tag. &lt;br /&gt;
&lt;br /&gt;
:As with most markup languages, in WML tags are always used in pairs: one opening tag and one closing tag. Think of the opening tag and the closing tag like the covers of a book: when you open the front cover, you know you're at the beginning. When you reach the back cover, you know you're done reading the book. Likewise, when the WML engine finds an opening tag, it realizes it's at the beginning of a task. When it reaches the closing tag, it realizes it has finished the task.&lt;br /&gt;
&lt;br /&gt;
:Closing tags are exactly the same as opening tags except for one key component: closing tags always have a forward slash &amp;quot;/&amp;quot; immediately after the first square bracket. This forward slash tells the WML engine that this tag is a closing tag and not another opening tag. Here is an example of the closing &amp;quot;campaign&amp;quot; tag:&lt;br /&gt;
 [/campaign]&lt;br /&gt;
&lt;br /&gt;
:The opening and closing tag together are referred to as a '''tagset'''. A tagset always contains exactly two tags: the opening tag and the closing tag. For example, the &amp;quot;campaign&amp;quot; tagset would look like this:&lt;br /&gt;
 [campaign]&lt;br /&gt;
 [/campaign]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:So now we know how the WML engine knows where the beginning and end of a task are, and what syntax to use when writing them. These are the basics of tags in WML. Later on we'll go over the more complicated aspects of tags; for now though, make sure you understand the concepts introduced here. &lt;br /&gt;
&lt;br /&gt;
:Before we move on to the next section, let's review the points we've learned in this section about tags:&lt;br /&gt;
::*A tag is a string of lowercase text encapsulated by two square brackets, one at either end.&lt;br /&gt;
::*A closing tag is exactly the same as an opening tag, except a closing tag has a forward slash immediately following the first square bracket.&lt;br /&gt;
::*The opening tag and the closing tag together are called a &amp;quot;tagset&amp;quot;.&lt;br /&gt;
::*A tagset can only ever consist of exactly two tags: the opening tag and the closing tag.&lt;br /&gt;
&lt;br /&gt;
:Now we know how to tell the WML engine where the beginning and the end of a task are, but what about actually making it do the task? This is where attributes come in.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Attributes====&lt;br /&gt;
&lt;br /&gt;
:Attributes consist of two principal elements: ''keys'' and ''values'', and are written like so:&lt;br /&gt;
 key=value&lt;br /&gt;
&lt;br /&gt;
:The basic function of attributes is to store information that is needed by the WML engine. The ''key'' of the attribute specifies what kind of information is stored, and the ''value'' of the attribute is the actual data that is stored. All text to the left of the equals sign &amp;quot;=&amp;quot; is considered to be the key, and all text to the right of the equals sign is considered to be the value of the key.&lt;br /&gt;
&lt;br /&gt;
:This may sound rather confusing, so let's illustrate by a practical example:&lt;br /&gt;
&lt;br /&gt;
:Let's say you wanted your friend to go to the grocery store and pick you up a loaf of bread. Would you just say to him, &amp;quot;Go&amp;quot;? Of course not! He wouldn't understand what you wanted him to do, which means you'd have no bread for dinner. Likewise, if you only write a tagset, that's equivalent to telling the WML engine to &amp;quot;do&amp;quot;, but that's not enough. You will need to be more specific about exactly what the WML engine should do. If your friend were a human WML engine and you wanted him to go to the grocery store to get some bread, you might give him this code to read (''note'': this code isn't actually real WML, it is &amp;quot;pseudocode&amp;quot;, i.e. made up code for the purpose of illustration. If I ever use pseudocode during this tutorial I will tell you that it is pseudocode before you read the example, like I am doing now.):&lt;br /&gt;
 [go]&lt;br /&gt;
     where=grocery_store&lt;br /&gt;
     get=bread&lt;br /&gt;
 [/go]&lt;br /&gt;
&lt;br /&gt;
:Tags tell the WML engine what to do generally (like telling your friend to &amp;quot;go&amp;quot;), but without attributes to specify ''exactly'' what to do (like telling your friend where and when to go, and what to do when he gets there), the WML engine won't be able to do anything because you haven't given it enough specific information. If you told your friend, &amp;quot;Go,&amp;quot; he'd understand that you want him to go somewhere, but he'd be unable to actually perform the task because he doesn't know ''where'' to go or what to do when he gets there.&lt;br /&gt;
&lt;br /&gt;
:*'''Keys'''&lt;br /&gt;
::Keys are sequences of lowercase alphabetic characters that tell the game what kind of information it is dealing with when it reads the attribute. Keys are case-sensitive (i.e., you can't use capital letters) and must be spelled correctly.&lt;br /&gt;
&lt;br /&gt;
:*'''Values'''&lt;br /&gt;
&lt;br /&gt;
::WML keys deal with one and only one type of data, called ''strings''. A string is simply a sequence of ASCII characters that can include pretty much any character on your keyboard. Strings may be divided into two categories: Standard and Numerical.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::'''1. Standard Strings'''&lt;br /&gt;
&lt;br /&gt;
::A standard string is simply a sequence of ASCII characters that is neither a numerical nor a translatable string. For example, this is a standard string:&lt;br /&gt;
 grocery_store&lt;br /&gt;
::as is this:&lt;br /&gt;
 bread&lt;br /&gt;
&lt;br /&gt;
::If a standard string is more than one simple identifier, it is better for it to be enclosed within double quotes:&lt;br /&gt;
 &amp;quot;Everything in these double quotes is a single string. This is the number one: 1. Hooray! :) We are now coming to the end of this string.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
::Everything within the double quotes (including the colon and parenthesis emoticon) is considered to be one long string by the game.&lt;br /&gt;
&lt;br /&gt;
::Sometimes you will want to mark a standard string as translatable so that it can be translated into other languages. The only difference between a translatable sting and a non-translatable is that translatable strings are marked so that translators know that they need to translate that string, and non-translatable strings are not marked, so the translators know that they don't translate those strings.&lt;br /&gt;
&lt;br /&gt;
::To mark a string as translatable, all you have to do is add an underscore before the first double quote that marks the beginning of the string. Example of a translatable string:&lt;br /&gt;
&lt;br /&gt;
  _ &amp;quot;This is a translatable string.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
::If the WML engine does not find an underscore in front of the string, it will assume the string is non-translatable.&lt;br /&gt;
&lt;br /&gt;
::Although not strictly necessary, it is generally considered a good practice to include a space before and after the underscore that marks a string as translatable. For instance, if we were to assign the translatable string &amp;quot;Hello World!&amp;quot; to this key, it would be considered good syntax to write&lt;br /&gt;
 key= _ &amp;quot;Hello World!&amp;quot;&lt;br /&gt;
::rather than&lt;br /&gt;
 key=_&amp;quot;Hello World!&amp;quot;&lt;br /&gt;
::However, the game considers both of the above strings to be equivalent, and will therefore recognize both as translatable strings. Adding whitespaces just allows for better human readability in your WML code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::'''2. Numerical Strings'''&lt;br /&gt;
&lt;br /&gt;
::Unsurprisingly, numerical strings are strings that contain only numbers, decimal points, or minus signs &amp;quot;-&amp;quot;. If a string contains anything other than numbers, decimal points and/or a minus sign, the string becomes a standard string instead of a numerical one. Numerical strings can be either a single numeric character like this:&lt;br /&gt;
 2&lt;br /&gt;
::a sequence of numeric characters, like this:&lt;br /&gt;
 230001&lt;br /&gt;
&lt;br /&gt;
::or floating-point values (that's just a fancy way of saying that they can contain decimal points), like these two examples:&lt;br /&gt;
 2.6&lt;br /&gt;
 395667.49382345&lt;br /&gt;
&lt;br /&gt;
::or negative numbers, like these examples:&lt;br /&gt;
 -49&lt;br /&gt;
 -594.932&lt;br /&gt;
&lt;br /&gt;
::For all intents and purposes, you can treat numerical strings just as you would numbers in real life. You can add, divide, and otherwise mathematically employ them in mathematical computations (we'll discuss Variable Manipulation in chapter 7). Just remember that if you include any characters other than numbers, decimal points, or minus signs, the string will cease to be a numeric string and will become a standard string, which means you won't be able to use it in mathematical calculations.&lt;br /&gt;
&lt;br /&gt;
::Directory paths are simply special strings that tell the game where to find a specific file or folder. Here is an example of a directory path:&lt;br /&gt;
 {data/add-ons/my_first_campaign}&lt;br /&gt;
This directory path tells the game where the folder &amp;quot;my_first_campaign&amp;quot; is located.&lt;br /&gt;
&lt;br /&gt;
===More About Tags===&lt;br /&gt;
&lt;br /&gt;
So now you should understand the basics about tags and attributes. As I promised earlier, we will now discuss some of the more involved aspects of tags.&lt;br /&gt;
&lt;br /&gt;
====Nested Tags: Parents and Children====&lt;br /&gt;
&lt;br /&gt;
:A fundamental aspect of markup languages is that you can use tagsets inside other tagsets. Tagsets located inside other tagsets are called nested tagsets. In the example below, the &amp;quot;side&amp;quot; tagset is nested inside the &amp;quot;scenario&amp;quot; tagset:&lt;br /&gt;
&lt;br /&gt;
 [scenario]&lt;br /&gt;
     [side]&lt;br /&gt;
     [/side]&lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
:When referring to nested tagsets, the tagset located inside the other is called the ''child'' tagset, and the tagset that encloses the child tagset is known ast he ''parent'' tagset. To illustrate with pseudocode:&lt;br /&gt;
&lt;br /&gt;
 [parent]&lt;br /&gt;
     [child]&lt;br /&gt;
     [/child]&lt;br /&gt;
 [/parent]&lt;br /&gt;
&lt;br /&gt;
:Tagsets that are not child tagsets of any other tagsets are called ''toplevel'' tagsets. In this next example, the [scenario] tagset is a toplevel tagset, because it is not the child tagset of any other tagset. The  [event] tagset is the child tagset of [scenario], because it is located inside the [scenario] tagset. The tagset [event] is also the parent tagset of the [message] tagset, because the [message] tagset is located inside the [event] tagset. That means that since [event] is the parent of [message], [message] is the child tagset of [event].&lt;br /&gt;
&lt;br /&gt;
 [scenario]&lt;br /&gt;
     [event]&lt;br /&gt;
         [message]&lt;br /&gt;
         [/message]&lt;br /&gt;
     [/event]&lt;br /&gt;
 [/scenario]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Indentation and Levels====&lt;br /&gt;
&lt;br /&gt;
:You may have noticed that in the examples above, the child tagsets are indented four spaces further to the right than are their parent tagsets. Why is this? It's because proper indentation (although not technically required by the WML engine) makes you code a lot easier to read and maintain. It's like writing an outline for a school paper, where you would write something like this:&lt;br /&gt;
&lt;br /&gt;
 I.&lt;br /&gt;
     A.&lt;br /&gt;
     B.&lt;br /&gt;
     C.&lt;br /&gt;
 II.&lt;br /&gt;
     A.&lt;br /&gt;
         1.&lt;br /&gt;
         2.&lt;br /&gt;
     B.&lt;br /&gt;
     C.&lt;br /&gt;
&lt;br /&gt;
:Indentation makes it much easier to see whether tagset is the child or parent of other tagsets. The amount of indentation before a tagset determines in what level that tagset is located. If the tagset is a toplevel tagset (i.e. has no spaces in front of it because it is not the child of any other tagset), that tagset is located at level one. Tagsets with an indentation of four spaces in front of them are located in level 2, because they are the children of the toplevel (level 1) tagset. Tagsets that are children of level 2 tagsets are called level 3 tagsets (and are indented 8 spaces), tagsets inside level 3 tagsets are called level 4 tagsets (and are indented 12 spaces), etc. As a general rule, all the attributes of a tagset, along with any child tagsets of that tagset, are indented one level deeper than that tagset. To illustrate in pseudocode:&lt;br /&gt;
&lt;br /&gt;
 [toplevel_tagset]&lt;br /&gt;
     level_2_attribute=value&lt;br /&gt;
     [level_2_tagset]&lt;br /&gt;
         level_3_attribute=value&lt;br /&gt;
         [level_3_tagset]&lt;br /&gt;
             level_4_attribute=value&lt;br /&gt;
         [/level_3_tagset]&lt;br /&gt;
     [/level_2_tagset]&lt;br /&gt;
 [/toplevel_tagset]&lt;br /&gt;
&lt;br /&gt;
:Indenting tagsets and attributes into levels like this makes it much easier for you (and others) to read, fix and maintain your code. It is strongly recommended that you indent exactly four spaces for each new level, although you can also use tabs instead of hitting the space key 4 times, if you'd prefer.&lt;br /&gt;
&lt;br /&gt;
Next Chapter:&lt;br /&gt;
[[WML for Complete Beginners: Chapter 2]]&lt;br /&gt;
&lt;br /&gt;
Return to introduction:&lt;br /&gt;
[[WML for Complete Beginners: Introduction]]&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>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=DirectActionsWML&amp;diff=67795</id>
		<title>DirectActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=DirectActionsWML&amp;diff=67795"/>
		<updated>2021-05-12T03:12:58Z</updated>

		<summary type="html">&lt;p&gt;Atreides: /* [terrain] */  typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== Direct actions ==&lt;br /&gt;
&lt;br /&gt;
Direct actions are actions that have a direct effect on gameplay. They can be used inside of [[EventWML|events]].&lt;br /&gt;
&lt;br /&gt;
The following tags are actions:&lt;br /&gt;
&lt;br /&gt;
=== [endlevel] ===&lt;br /&gt;
Ends the scenario.&lt;br /&gt;
* '''result''': before the scenario is over, all events with ''name=result'' are triggered. If ''result=victory'', the player progresses to the next level (i.e., the next scenario in single player); if ''result=defeat'', the game returns to the main menu. &lt;br /&gt;
&lt;br /&gt;
When the result is &amp;quot;victory&amp;quot; the following keys can be used:&lt;br /&gt;
* '''bonus''': whether the player should get bonus gold (maximum possible gold that could have been earned by waiting the level out). The default is bonus=yes. {{DevFeature1.13|2}} Alternatively, a number, defining the bonus multiple (1.0 meaning full).&lt;br /&gt;
* '''carryover_report''': whether the player should receive a summary of the scenario outcome, the default is carryover_report=yes.&lt;br /&gt;
* '''save''': whether a start-of-scenario save should be created for the next scenario, the default is save=yes. Do not confuse this with saving of replays for the current scenario.&lt;br /&gt;
* '''replay_save''': whether a replay save for the current scenario is allowed, the default is replay_save=yes. If yes, the player's settings in preferences will be used to determine if a replay is saved. If no, will override and not save a replay.&lt;br /&gt;
* '''linger_mode''': If ...=yes, the screen is greyed out and there's the possibility to save before advancing to the next scenario, the default is linger_mode=yes.&lt;br /&gt;
* '''reveal_map''': (Multiplayer only) (Default is 'yes') If 'no', shroud doesn't disappear when game ended.&lt;br /&gt;
* '''next_scenario''': (default specified in '''[scenario]''' tag) the ID of the next scenario that should be played.  All units that side 1 controls at this point become available for recall in ''next_scenario''.&lt;br /&gt;
* '''carryover_percentage''': by default 80% of the gold is carried over to the next scenario, with this key the amount can be changed.&lt;br /&gt;
* '''carryover_add''': if yes the gold will be added to the starting gold the next scenario, if no the next scenario will start with the amount of the current scenario (after taxes) or the minimum in the next scenario. Default is no.&lt;br /&gt;
* '''music''': (default specified in '''[scenario]''' or '''[game_config]''' tags) a comma-separated list of music tracks from which one will be chosen and played once after any events related to the end of level result are executed; by default, victory_music is used on victory, and defeat_music on defeat.&lt;br /&gt;
* '''end_credits''': Whether to display the credits screen at the end of a single-player campaign. Defaults to ''yes''. Note that this has cumulative effects over the campaign - it persists even if the endlevel does not trigger the end of the campaign. See also [[CampaignWML]].&lt;br /&gt;
* '''end_text''': (translatable) Text that is shown centered in a black screen at the end of a campaign. Defaults to &amp;quot;The End&amp;quot;. Note that this has cumulative effects over the campaign - it persists even if the endlevel does not trigger the end of the campaign. See also [[CampaignWML]].&lt;br /&gt;
* '''end_text_duration''': Delay, in milliseconds, before displaying the game credits at the end of a campaign. In other words, for how much time '''end_text''' is displayed on screen. Defaults to 3500. Note that this has cumulative effects over the campaign - it persists even if the endlevel does not trigger the end of the campaign. See also [[CampaignWML]].&lt;br /&gt;
* &amp;lt;strike&amp;gt;'''[next_scenario_settings]''': Any tags or attribute children of this optional argument to [endlevel] are merged into the scenario/multiplayer tag of the *next* scenario. This allows you to e.g. reconfigure the [side] tags or settings, just before load. &amp;lt;/strike&amp;gt; This feature was removed in 1.11.17, it might be redesigned and reintroduced.&lt;br /&gt;
* &amp;lt;strike&amp;gt;'''[next_scenario_append]''': Any tags of this optional argument are appended at high level to the next scenario. This is most appropriate for [event] tags, although you may find other uses. Example test scenario for these features: https://gna.org/support/download.php?file_id=20119 &amp;lt;/strike&amp;gt; This feature was removed in 1.11.17, it might be redesigned and reintroduced.&lt;br /&gt;
* '''[result]''' {{DevFeature1.13|0}} Allows specification of a side specific result, this is for competitive multiplayer scenarios/campaigns where it might happen that one player wins but another player loses.  The following attributes are accepted and have the same effect as in '''[endlevel]''':&lt;br /&gt;
** '''result'''&lt;br /&gt;
** '''bonus'''&lt;br /&gt;
** '''carryover_percentage'''&lt;br /&gt;
** '''carryover_add'''&lt;br /&gt;
&lt;br /&gt;
And there is also&lt;br /&gt;
** '''side''' The number of the side for which these results should apply.&lt;br /&gt;
&lt;br /&gt;
=== [unit] ===&lt;br /&gt;
Creates a unit (either on the map, on a recall list, or into a variable for later use.)  For syntax see [[SingleUnitWML]].&lt;br /&gt;
* {{Short Note:Predefined Macro|GENERIC_UNIT}}&lt;br /&gt;
&lt;br /&gt;
This tag can also recall an existing unit, which happens when:&lt;br /&gt;
* the '''id=''' attribute is used&lt;br /&gt;
* a unit with that '''id=''' already exists&lt;br /&gt;
* (might be unnecessary) the existing unit is on the side's recall list&lt;br /&gt;
in this case, the unit is recalled at the '''x,y=''' or '''location_id=''' given, and any other data in the tag is ignored.&lt;br /&gt;
&lt;br /&gt;
Campaign authors: a usual way to recall plot-necessary heroes is to use a macro with the data for creating that hero. This helps during debugging, because you can skip to scenarios and the recall-or-create functionality means that any units which are normally met in a previous scenario are automatically created (otherwise some scenarios may be an instant loss). This can only be used for units that must survive the previous scenarios, as it would recreate units if they died in a previous scenario.&lt;br /&gt;
For example,&lt;br /&gt;
[https://github.com/wesnoth/wesnoth/blob/1.14.7/data/campaigns/Heir_To_The_Throne/utils/httt_utils.cfg#L685 HttT's NEED_DELFADOR macro].&lt;br /&gt;
&lt;br /&gt;
=== [recall] ===&lt;br /&gt;
Recalls a unit taking into account any [http://wiki.wesnoth.org/SingleUnitWML filter_recall] of the leader.   The unit is recalled free of charge, and is placed near its leader, e.g., if multiple leaders are present, near the first found which would be able to normally recall it.&lt;br /&gt;
&lt;br /&gt;
If neither a valid map location is provided nor a leader on the map would be able to recall it, the tag is ignored.&lt;br /&gt;
 &lt;br /&gt;
* [[StandardUnitFilter]]: the first matching unit will be recalled.  If no units match this tag is ignored. Do not use a [filter] tag. If a comma separated list is given, every unit currently considered for recall is checked against all the types (not each single one of the types against all units).&lt;br /&gt;
* '''x,y''': the unit is placed here instead of next to the leader.&lt;br /&gt;
* '''location_id''': {{DevFeature1.15|0}} the name of a special map location to recall to. Used instead of '''x,y'''.&lt;br /&gt;
* '''show''': yes/no, default yes: whether the unit is animated (faded in) or instantly displayed&lt;br /&gt;
* '''fire_event''': boolean yes|no (default no); whether any according prerecall or recall events shall be fired.&lt;br /&gt;
* '''check_passability''': (boolean yes|no, default yes): If yes, checks for terrain passability when placing the unit (a nearby passable hex is chosen).&lt;br /&gt;
* '''[secondary_unit]''': {{DevFeature1.13|?}} If present and show=yes, a matching unit will be chosen and their recruiting animation played.&lt;br /&gt;
&lt;br /&gt;
=== [teleport] ===&lt;br /&gt;
Teleports a unit on map. {{Short Note:Predefined Macro|TELEPORT_UNIT}}&lt;br /&gt;
* '''[filter]''': [[StandardUnitFilter]] the first unit matching this filter will be teleported.&lt;br /&gt;
* '''x,y''': the hex to teleport to. If that hex is occupied, the closest unoccupied hex will be used instead.&lt;br /&gt;
* '''location_id''': {{DevFeature1.15|0}} the name of a special map location to teleport to. Used instead of '''x,y'''.&lt;br /&gt;
* '''clear_shroud''': should shroud be cleared on arrival&lt;br /&gt;
* '''animate''': should a teleport animation be played (if the unit doesn't have a teleport animation, it will fade out/fade in)&lt;br /&gt;
* '''check_passability''': (boolean yes|no, default yes): normally, units will not be teleported into terrain that is impassable for them. Setting this attribute to &amp;quot;no&amp;quot; permits it.&lt;br /&gt;
&lt;br /&gt;
(Note: There is also a ability named teleport, see [[AbilitiesWML]].)&lt;br /&gt;
&lt;br /&gt;
=== [terrain_mask] ===&lt;br /&gt;
Changes the terrain on the map.  See [[TerrainMaskWML]].&lt;br /&gt;
&lt;br /&gt;
=== [terrain] ===&lt;br /&gt;
Changes the terrain on the map.&lt;br /&gt;
* '''terrain''': the character of the terrain to use.  See [[TerrainCodesWML]] to see what letter a type of terrain uses.&lt;br /&gt;
* [[StandardLocationFilter]]. This [[StandardLocationFilter]]'s terrain= key is used for the new terrain, filtering by terrain can be done with a nested [[StandardLocationFilter]]: [and]terrain=terrain_string_to_be_filtered_for.&lt;br /&gt;
* '''layer''': (overlay|base|both, default=both) only change the specified layer.&lt;br /&gt;
* '''replace_if_failed''': (default=no) When replacing just one layer failed, try to replace the whole terrain. If '''terrain''' is an overlay only terrain, use the default_base as base layer. If the terrain has no default base, do nothing.&lt;br /&gt;
&lt;br /&gt;
If you want to remove the overlays from a terrain and leave only the base, use:&lt;br /&gt;
 layer=overlay&lt;br /&gt;
 terrain=&amp;quot;^&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; When a hex changes from a village terrain to a non-village terrain, and a team owned that village it loses that village. When a hex changes from a non-village terrain to a village terrain and there is a unit on that hex it does not automatically capture the village. The reason for not capturing villages is that there are too many choices to make; should a unit lose its movement points, should capture events be fired. It is easier to do this as wanted by the author in WML.&lt;br /&gt;
&lt;br /&gt;
=== [gold] ===&lt;br /&gt;
Gives sides gold.&lt;br /&gt;
* '''amount''': the amount of gold to give.&lt;br /&gt;
* '''side''': (default=1) the number of the side to give the gold to. Can be a comma-separated list of sides. note: Default side=1 for empty side= is deprecated.&lt;br /&gt;
* [[StandardSideFilter]] tags and keys; default for empty side= is all sides, as usual in a SSF.&lt;br /&gt;
&lt;br /&gt;
=== [unstore_unit] ===&lt;br /&gt;
Creates a unit from a game variable, and activates it on the playing field or recall list.  This must be a specific variable describing a unit, and may not be an array (if it is, only the first unit will be unstored).&lt;br /&gt;
&lt;br /&gt;
This may be useful in different contexts:&lt;br /&gt;
* To update a unit on the map after having edited its WML. This usage is common, but discouraged - if possible, you should use [[#.5Bmodify_unit.5B|[modify_unit]]] or [[#.5Bobject.5B|[object]]] instead.&lt;br /&gt;
* To place a previously-defined unit into the scenario, if it was directly defined in a WML variable, using [unit] with the key '''to_variable'''. This usage is rather uncommon.&lt;br /&gt;
* To place a unit back into the game that was removed earlier, for example a hero that leaves the party for awhile and then comes back.&lt;br /&gt;
&lt;br /&gt;
The variable is not cleared. To unstore units from an array variable, iterate over the array. See [[SyntaxWML]] and [[VariablesWML/How to use variables]] for more information about variable usage. See also [[InternalActionsWML#.5Bstore_unit.5D|[store_unit]]], [[ConditionalActionsWML|For]], [[ConditionalActionsWML#.5Bwhile.5D|[while]]] and [[InternalActionsWML#.5Bclear_variable.5D|[clear_variable]]].&lt;br /&gt;
&lt;br /&gt;
The tag takes the following keys:&lt;br /&gt;
* '''variable''': This is required to indicate the name of the variable to read the unit from.&lt;br /&gt;
* '''Placement keys''':&lt;br /&gt;
** '''x''' ,'''y''': By default, the unit will be placed at the location specified in the variable, but if these keys are present, the unit will be placed at that location instead. To place the unit on the recall list of its side, use '''x,y=recall,recall'''. (If you want to change the said, you need to first update ''$unit.side'' in the variable before unstoring.)&lt;br /&gt;
** '''location_id''': {{DevFeature1.15|0}} The name of a special map location to unstore to. Used instead of '''x,y'''.&lt;br /&gt;
** '''find_vacant''' (yes|no, default no): Whether the unit should be placed on the nearest vacant tile to its specified location. If this is set to 'no' (default), then any unit on the same tile as the unit being unstored will be destroyed.&lt;br /&gt;
** '''check_passability''' (yes|no, default yes): Only relevant if '''find_vacant=yes'''. In that case, this determines whether game will try to find a passable tile for the unit. If set to no, the unit may be placed on an impassable tile. Note that if both '''find_vacant''' and '''check_passability''' are set, then the unit's position may be shifted even if there is not a unit on the target space, if that space is not passable for the unit.&lt;br /&gt;
* '''Animation keys''' (these determine the visual effect of how the unit is placed or updated):&lt;br /&gt;
** '''text''': (translatable) A floating text to display above the unit, such as a damage amount.&lt;br /&gt;
** '''male_text''', '''female_text''': {{DevFeature1.13|2}} (translatable) gender-specific versions of the above&lt;br /&gt;
** '''red''', '''green''', '''blue''': (default=0,0,0) the color of the text. Values vary from 0-255. You may find it convenient to use the {COLOR_HARM} or {COLOR_HEAL} macro instead. (Use {COLOR_HARM} or {COLOR_HEAL} instead of the whole red,green,blue= line.)&lt;br /&gt;
** '''animate''': (boolean yes|no, default yes) Determines whether to play any animations associated with the unstore. Currently this only affects the advancement animation (&amp;quot;levelout&amp;quot; and &amp;quot;levelin&amp;quot;, defaulting to a fade to white and back) if the unit ends up advancing.&lt;br /&gt;
* '''Side-effect keys''' (these directly modify the behaviour of the action):&lt;br /&gt;
** '''advance''': (default=yes) if yes the unit is advanced if it has enough XP. When modifying XP, make sure to do it from inside a [[EventWML#Multiplayer_safety|synchronized event]] or it may lead to OOS errors, especially when several advancement paths exist. Note that advance and post advance events are called, so infinite loops can happen.&lt;br /&gt;
** '''fire_event''' (yes|no, default no): Whether any advance/post advance events shall be fired if an advancement takes place. This also affects whether the unit placed event is fired.&lt;br /&gt;
&lt;br /&gt;
Units can be unstored with negative (or zero) hit points. This can be useful if modifying a unit in its last_breath event (as the unit's death is already the next step), but tends to look wrong in other cases. In particular, it is possible to have units with negative hit points in play. Such units are aberrations, subject to unusual behavior as the game compensates for them. (For example, such units are currently automatically hit&amp;amp;ndash;and killed&amp;amp;ndash;in combat.) The details of the unusual behavior are subject to change between stable releases without warning.&lt;br /&gt;
&lt;br /&gt;
=== [allow_recruit] ===&lt;br /&gt;
Allows a side to recruit units it couldn't previously recruit.&lt;br /&gt;
* '''type''': the types of units that the side can now recruit.&lt;br /&gt;
* '''side''': (default=1) the number of the side that is being allowed to recruit the units. This can be a comma-separated list note: Default side=1 for empty side= is deprecated.&lt;br /&gt;
* [[StandardSideFilter]] tags and keys; default for empty side= is all sides, as usual in a SSF.&lt;br /&gt;
&lt;br /&gt;
=== [allow_extra_recruit] ===&lt;br /&gt;
Allows a leader to recruit units it couldn't previously recruit.&lt;br /&gt;
These types add to the types the leader can recruit because of [side]recruit=.&lt;br /&gt;
* '''extra_recruit''': the types of units that the unit can now recruit.&lt;br /&gt;
* '''[[StandardUnitFilter]]''': All units matching this filter are modified. Does not match on recall list units.&lt;br /&gt;
&lt;br /&gt;
=== [disallow_recruit] ===&lt;br /&gt;
Prevents a side from recruiting units it could previously recruit.&lt;br /&gt;
* '''type''': the types of units that the side can no longer recruit. {{DevFeature1.13|0}} If omitted, all recruits for matching sides will be disallowed.&lt;br /&gt;
* '''side''': (default=1) the number of the side that may no longer recruit the units. This can be a comma-separated list note: Default side=1 for empty side= is deprecated.&lt;br /&gt;
* [[StandardSideFilter]] tags and keys; default for empty side= is all sides, as usual in a SSF.&lt;br /&gt;
&lt;br /&gt;
=== [disallow_extra_recruit] ===&lt;br /&gt;
Prevents a leader from recruiting units it could previously recruit.&lt;br /&gt;
* '''extra_recruit''': the types of units that the side can no longer recruit.&lt;br /&gt;
* '''[[StandardUnitFilter]]''': All units matching this filter are modified. Does not match on recall list units.&lt;br /&gt;
&lt;br /&gt;
=== [set_recruit] ===&lt;br /&gt;
Sets the units a side can recruit.&lt;br /&gt;
* '''recruit''': the types of units that the side can now recruit.&lt;br /&gt;
* '''side''': The number of the side that is having its recruitment set. This can be a comma-separated list.&lt;br /&gt;
* [[StandardSideFilter]] tags and keys; default for empty side= is all sides, as usual in a SSF.&lt;br /&gt;
&lt;br /&gt;
=== [set_extra_recruit] === &lt;br /&gt;
Sets the units a leader can recruit.&lt;br /&gt;
* '''extra_recruit''': the types of units that the leader can now recruit.&lt;br /&gt;
* '''[[StandardUnitFilter]]''': All units matching this filter are modified. Does not match on recall list units.&lt;br /&gt;
&lt;br /&gt;
=== [modify_side] ===&lt;br /&gt;
Modifies some details of a given side in the middle of a scenario.  '''The following listed properties are the only properties that [modify_side] can affect!'''&lt;br /&gt;
* '''side''': (default=1) the number of the side that is to be changed. note: Default side=1 for empty side= is deprecated.&lt;br /&gt;
* '''[filter_side]''' with a [[StandardSideFilter]] as argument&lt;br /&gt;
* '''income''': the income given at the begining of each turn.&lt;br /&gt;
* '''recruit''': a list of unit types, replacing the side's current recruitment list.&lt;br /&gt;
* '''team_name''': the team in which the side plays the scenario.&lt;br /&gt;
* '''user_team_name''': a translatable string representing the team's description. This has no effect on alliances. Defaults to ''team_name''.&lt;br /&gt;
* '''side_name''': {{DevFeature1.13|?}} a translatable string representing the side leader's description.&lt;br /&gt;
* '''gold''': the amount of gold the side owns.&lt;br /&gt;
* '''village_gold''': the income setting per village for the side.&lt;br /&gt;
* '''controller''': the identifier string of the side's controller. Uses the same syntax of the ''controller'' key in the [[SideWML|[side]]] tag. warning: in multiplayer, changing the controller of a side might result in OOS during some events like, for example 'side_turn_end'; see [https://github.com/wesnoth/wesnoth/issues/2563 issue #2563].&lt;br /&gt;
* '''fog''': a boolean string (yes/no) describing the status of Fog for the side.&lt;br /&gt;
* '''shroud''': a boolean string describing the status of Shroud for the side.&lt;br /&gt;
* '''hidden''': a boolean string specifying whether side is shown in status table.&lt;br /&gt;
* '''color''': a team color range specification, name (e.g. &amp;quot;red&amp;quot;, &amp;quot;blue&amp;quot;), or number (e.g. &amp;quot;1&amp;quot;, &amp;quot;2&amp;quot;) for this side. The default color range names, numbers, and definitions can be found in data/core/team_colors.cfg.&lt;br /&gt;
* '''[ai]''': sets/changes AI parameters for the side. Only parameters that are specified in the tag are changed, this does not reset others to their default values. Uses the same syntax as described in [[AiWML]].  Note that [modify_side][ai] works for all simple AI parameters and some, but not all, of the composite ones. If in doubt, use [http://wiki.wesnoth.org/AiWML#Adding_and_Deleting_Aspects_with_the_.5Bmodify_ai.5D_Tag [modify_ai]] instead, which always works. {{DevFeature1.13|?}} If this contains an '''ai_algorithm''', the AI parameters will be reset to those of the indicated AI before adding any additional parameters included in the tag. In other words, this allows replacing the AI config rather than appending to it.&lt;br /&gt;
* '''switch_ai''': replaces a side ai with a new AI from specified file(ignoring those AI parameters above). Path to file follows the usual WML convention.&lt;br /&gt;
* '''reset_maps''': If set to &amp;quot;yes&amp;quot;, then the shroud is spread to all hexes, covering the parts of the map that had already been explored by the side, including hexes currently seen. (Seen hexes will be cleared at the end of most events; they can also be manually cleared with {{tag|InterfaceActionsWML|redraw}}.) This is only effective if shroud is on, but this is evaluated after shroud= (and before shroud_data=).&lt;br /&gt;
* '''reset_view''': If set to &amp;quot;yes&amp;quot;, then the fog of war is spread to all hexes, covering the parts of the map that had already been seen this turn by the side, including hexes currently seen, excluding hexes affected by multi-turn {{tag|DirectActionsWML|lift_fog}}. (Seen hexes will be cleared at the end of most events; they can also be manually cleared with {{tag|InterfaceActionsWML|redraw}}.) This is only effective if fog is on, but this is evaluated after fog=.&lt;br /&gt;
* '''share_maps''': change the share_maps side attribute. Be sure to use shroud=yes for that side and have it as an ally&lt;br /&gt;
* '''share_view''': change the share_view side attribute. Be sure to use fog=yes for that side and have it as an ally&lt;br /&gt;
* '''share_vision''': change both the above at the same time&lt;br /&gt;
* '''shroud_data''': changes to the side's shroud, using the same format as when defining the [side].&lt;br /&gt;
* '''suppress_end_turn_confirmation''': Boolean value controlling whether or not a player is asked for confirmation when skipping a turn.&lt;br /&gt;
* '''scroll_to_leader''': Boolean value controlling whether or not the game view scrolls to the side leader at the start of their turn when present.&lt;br /&gt;
* '''flag''': Flag animation for villages owned by this side (see [[SideWML|[side]]]).&lt;br /&gt;
* '''flag_icon''': Flag icon used for this side in the status bar (see [[SideWML|[side]]]).&lt;br /&gt;
* '''village_support''': The number of unit levels this side is able to support (does not pay upkeep on) per village it controls.&lt;br /&gt;
* '''defeat_condition''' {{DevFeature1.13|0}}: When the side is considered defeated (see [[SideWML|[side]]]).&lt;br /&gt;
* '''[set_variable]''', '''[clear_variable]''' {{DevFeature1.15|3}} Sets or clears a variable within the side; uses the same syntax as [[InternalActionsWML#.5Bset_variable.5D|[set_variable]]] or [[InternalActionsWML#.5Bclear_variable.5D|[clear_variable]]] in ActionWML.&lt;br /&gt;
* '''[variables]''' {{DevFeature1.15|3}} The contents of this tag is merged into the side's variables.&lt;br /&gt;
&lt;br /&gt;
=== [modify_turns] ===&lt;br /&gt;
Modifies the turn limit in the middle of a scenario.&lt;br /&gt;
* '''value''': the new turn limit.&lt;br /&gt;
* '''add''': if used instead of ''value'', specifies the number of turns to add to the current limit (can be negative).&lt;br /&gt;
* '''current''': changes the current turn number after applying turn limit modifications, if any. It is not possible to change the turn number to exceed the turn limit (1 &amp;lt;= current turns &amp;lt;= max turns).&lt;br /&gt;
&lt;br /&gt;
=== [allow_end_turn] ===&lt;br /&gt;
Allows human players to end their turn through the user interface if they were previously affected by the '''[disallow_end_turn]''' action. This action doesn't take any arguments.&lt;br /&gt;
&lt;br /&gt;
=== [disallow_end_turn] ===&lt;br /&gt;
Disallows human players to end their turn through the user interface. This action doesn't require arguments.&lt;br /&gt;
* '''reason''' (translatable): {{DevFeature1.15|0}} Allows to optionally specify a reason.&lt;br /&gt;
&lt;br /&gt;
=== [capture_village] ===&lt;br /&gt;
Changes the ownership of a village.&lt;br /&gt;
* [[StandardLocationFilter]]: all village locations matching the filter are affected.&lt;br /&gt;
* '''side''': the side that takes control of the village. This side needs to have a leader (canrecruit=yes). If the side key is not given, the village will become neutral (unless [filter_side] is present, in which case that side fiter decides, see below).&lt;br /&gt;
* '''[filter_side]''' with [[StandardSideFilter]] tags and keys as arguments; if both this tag and inline side= are present it's an error. Otherwise, the first matching side gets ownership (or the village becomes neutral if none match).&lt;br /&gt;
* '''fire_event''' (boolean yes|no, default: no): Whether any capture events shall be fired.&lt;br /&gt;
&lt;br /&gt;
=== [kill] ===&lt;br /&gt;
Removes all units (including units in a recall list) that match the filter from the game.&lt;br /&gt;
* [[StandardUnitFilter]]: Selection criterion; do not use a [filter] tag.&lt;br /&gt;
* '''animate''' (default 'no'): if 'yes', displays the unit dying (fading away). {{DevFeature1.13|8}} If '''[secondary_unit]''' is given, also plays the victory animation of that unit.&lt;br /&gt;
* '''fire_event''' (default 'no'): if 'yes', triggers any appropriate 'die' events (See [[EventWML]]). Note that events are only fired for killed units that have been on the map (as opposed to recall list).&lt;br /&gt;
* '''[secondary_unit]''' with a [[StandardUnitFilter]] as argument. Do not use a [filter] tag. Has an effect only if fire_event=yes ({{DevFeature1.13|8}} or if it has a victory animation and animate=yes). The first on-map unit matching the filter becomes second_unit in any fired die and last breath events. If an on-map unit matches and if there are several units killed with a single [kill] tag, second_unit is this same unit for all of them. If no on-map unit matches or [secondary_unit] isn't present, the variable second_unit in each of the die and last breath events is always the same as the variable unit (the dying unit).&lt;br /&gt;
* '''[primary_attack]''', '''[secondary_attack]''' {{DevFeature1.13|8}} The attacks to use for matching the animation. Useful for example on the wose, whose death animation depends on the damage type it was killed by.&lt;br /&gt;
&lt;br /&gt;
=== [move_unit] ===&lt;br /&gt;
Moves a unit along a path on the map. The path can be specified exactly, or as a series of waypoints that the unit will pass through.&lt;br /&gt;
* [[StandardUnitFilter]] as argument; do not use a [filter] tag. All units matching the filter are moved. If the target location is occupied, the nearest free location is chosen.&lt;br /&gt;
* '''to_x''' (unsigned integer): The units are moved to this x coordinate. Can be a comma-separated list, in which case the unit follows this given path during the move.&lt;br /&gt;
* '''to_y''' (unsigned integer): The units are moved to this y coordinate. Can be a comma-separated list.&lt;br /&gt;
* '''dir''' (string): {{DevFeature1.15|0}} Performs a relative movement instead of an absolute movement. For example, dir=n,n,nw will move two spaces north and then one space to the northwest. This is used instead of '''to_x''' and '''to_y'''.&lt;br /&gt;
* '''to_location''': {{DevFeature1.15|0}} Moves matching units to locations placed in the map editor with the &amp;quot;New Location&amp;quot; button. Can be a comma-separated list. This is used instead of '''to_x''' and '''to_y'''.&lt;br /&gt;
* '''check_passability''' (boolean yes|no, default yes): Whether the terrain the unit is moved to should be checked for suiting the unit. (If it does not, a nearby suitable hex is chosen.)&lt;br /&gt;
* '''force_scroll''': Whether to scroll the map or not even when [[InterfaceActionsWML#.5Block_view.5D|[lock_view]]] is in effect or ''Follow Unit Actions'' is disabled in ''Advanced Preferences''. Defaults to using [[InterfaceActionsWML#.5Bmove_unit_fake.5D|[move_unit_fake]]]'s default value.&lt;br /&gt;
* '''clear_shroud''': {{DevFeature1.15|0}} (boolean yes|no, default no) Whether to remove shroud and fog after the unit was moved, but before events are fired. It will not clear all alongside the path, only around the target destination.&lt;br /&gt;
* '''fire_event''' (boolean yes|no, default no): Whether any according moveto events shall be fired. The target location ($x1, $y1 in the event) may not be the same location that the unit was tried to be moved to, if the original target location is occupied or impassable.&lt;br /&gt;
&lt;br /&gt;
=== [modify_ai] ===&lt;br /&gt;
Changes AI objects (aspects, goals, candidate actions or stages) for a specified side. See [[Modifying_AI_Components#The_.5Bmodify_ai.5D_Tag|Modifying AI Components]] for full description.&lt;br /&gt;
&lt;br /&gt;
* '''action''' (string): Takes values 'add', 'change', 'delete' or 'try_delete' to do just that for the AI object.&lt;br /&gt;
* '''path''' (string): Describes which AI object is to be modified.  &lt;br /&gt;
* '''[facet]''', '''[goal]''', '''[candidate_action]''' or '''[stage]''': Details about the AI object to be modified.&lt;br /&gt;
* [[StandardSideFilter]] tags and keys; default for empty side= is all sides, as usual in a SSF.&lt;br /&gt;
&lt;br /&gt;
=== [modify_unit] ===&lt;br /&gt;
works similar to the MODIFY_UNIT macro.&lt;br /&gt;
* '''[filter]''' with a [[StandardUnitFilter]] as argument. All units matching this filter are modified. Matches on recall list units too.&lt;br /&gt;
* '''[object]''', '''[trait]''', {{DevFeature1.13|5}} '''[advancement]''' - The given modifications will be immediately applied to all units matching the filter. ([object] is described further below)&lt;br /&gt;
** '''delayed_variable_substitution''' {{DevFeature1.13|5}} (boolean yes|no, default no): If set to &amp;quot;yes&amp;quot;, the wml block contained in this [object], [trait], or [advancement] is not variable-substituted at execution time of the event containing this [modify_unit]. You need this for any effect that uses variable substitution or when using [effect][filter] with a $this_unit. {{DevFeature1.13|9}} This is no longer needed when adding ABILITY_TELEPORT, ABILITY_LEADERSHIP or SPECIAL_BACKSTAB.&lt;br /&gt;
** Do not use a '''[modifications]''' tag, as this may skip some of the special-case handling for newly added objects, traits and advancements.&lt;br /&gt;
* '''[effect]''' {{DevFeature1.13|6}} Applies the effect directly to the unit. See [[EffectWML]].&lt;br /&gt;
* '''[set_variable]''', '''[clear_variable]''' {{DevFeature1.15|3}} Sets or clears a variable within the unit; uses the same syntax as [[InternalActionsWML#.5Bset_variable.5D|[set_variable]]] or [[InternalActionsWML#.5Bclear_variable.5D|[clear_variable]]] in ActionWML.&lt;br /&gt;
* Accepts generally the syntax inside of wml unit variables created by [store_unit] which can be viewed in a savefile or by using the [[CommandMode|inspect command]]. Cannot remove things or add/alter unit animations. Subtags with the same name must be written in the correct order to match them with the tag they are supposed to modify. Note that keys will be processed in arbitrary order, which may cause problems if you use formulas that depend on other formulas. To work around this you may need to use the tag twice with the same filter.&lt;br /&gt;
example usage (see also the test scenario):&lt;br /&gt;
&amp;lt;syntaxhighlight lang='wml'&amp;gt;&lt;br /&gt;
[modify_unit]&lt;br /&gt;
  [filter]&lt;br /&gt;
    x,y=38,6&lt;br /&gt;
  [/filter]&lt;br /&gt;
  hitpoints=10&lt;br /&gt;
  {TRAIT_HEALTHY}&lt;br /&gt;
[/modify_unit]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The unit which is currently modified is accessible via $this_unit, e.g. hitpoints = &amp;quot;$($this_unit.hitpoints / 2)&amp;quot; to set the hitpoints of all units to half of their particular maxima. This this_unit variable is independent from the this_unit variable available in the SUF used to determine which units to modify (first all matching units are gathered, and then all those are modified).&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Some some properties of the units are reset sometimes (for example when the unit advances or when [remove_object] is called), so it's usually better to change them with [object] ([object] inside [modify_unit]) than to change those properties directly via [modify_unit]. The following properties are _not_ reset in [remove_object] and are thus safe to use directly in [modify_unit]:&lt;br /&gt;
* '''side'''&lt;br /&gt;
* '''gender'''&lt;br /&gt;
* '''name'''&lt;br /&gt;
* '''canrecruit'''&lt;br /&gt;
* '''unrenamable'''&lt;br /&gt;
* '''extra_recruit'''&lt;br /&gt;
* '''[variables]'''&lt;br /&gt;
* '''facing'''&lt;br /&gt;
* '''goto_x, goto_y'''&lt;br /&gt;
* '''hitpoints'''&lt;br /&gt;
* '''experience'''&lt;br /&gt;
* '''moves'''&lt;br /&gt;
* '''[status]''' (not sure on this one)&lt;br /&gt;
* '''attacks_left'''&lt;br /&gt;
* '''role'''&lt;br /&gt;
&lt;br /&gt;
=== [transform_unit] ===&lt;br /&gt;
Transforms every unit on the map matching the filter to the given unit type. Keeps intact hit points, experience and status. If the unit is transformed to a non-living type (undead or mechanical), it will be also unpoisoned. Hit points will be changed if necessary to respect the transformed unit's maximum hit points.&lt;br /&gt;
* [[StandardUnitFilter]]: do not use a [filter] tag.&lt;br /&gt;
* '''transform_to''': the unit type in which all the units matching the filter will be transformed. If missing, the units will follow their normal advancement.&lt;br /&gt;
&lt;br /&gt;
=== [petrify] ===&lt;br /&gt;
&lt;br /&gt;
* [[StandardUnitFilter]] as an argument. Do not use a [filter] tag. All units matching this filter are petrified. Recall list units are included.&lt;br /&gt;
&lt;br /&gt;
=== [unpetrify] ===&lt;br /&gt;
* [[StandardUnitFilter]] as an argument. Do not use a [filter] tag. All units matching this filter are unpetrified. Recall list units are included.&lt;br /&gt;
&lt;br /&gt;
=== [object] ===&lt;br /&gt;
Gives some unit an object which modifies their stats in some way.&lt;br /&gt;
* '''id''': (Optional) allows the item to be removed later. By default, an object with a defined ID can only be picked up once per scenario, even if it is removed later or first_time_only=no is set for the event. You can remove this restriction by setting take_only_once=no. For filtering objects, it might be simpler to use a custom key such as item_id. The id string can contain only letters, numbers and underscores.&lt;br /&gt;
* '''take_only_once''': (default yes) {{DevFeature1.13|6}} If set to &amp;quot;no&amp;quot;, the object's ID does not prevent it from being taken more than once.&lt;br /&gt;
* '''delayed_variable_substitution''' (boolean yes|no, default no): If set to &amp;quot;yes&amp;quot;, the wml block contained in this [object] is not variable-substituted at execution time of the event where this [object] is within.  You need this for any effect that uses variable substitution or when using [effect][filter] with a $this_unit. {{DevFeature1.13|9}} This is no longer needed when adding ABILITY_TELEPORT, ABILITY_LEADERSHIP or SPECIAL_BACKSTAB.&lt;br /&gt;
* '''[effect]''': one or more effect elements may be listed.  See [[EffectWML]] for a description of [effect].&lt;br /&gt;
* '''duration''':&lt;br /&gt;
**if 'scenario', effects only last until the end of the scenario.&lt;br /&gt;
**if 'forever' or not set, effects never wear off.&lt;br /&gt;
** if 'turn', effects only last until the start of the unit's next turn (when the unit refreshes movement and attacks). (Like other start-of-turn behavior, objects with a duration of &amp;quot;turn&amp;quot; won't expire before turn 2.)&lt;br /&gt;
** {{DevFeature1.13|1}} if 'turn end' or 'turn_end', effects only last until the end of the unit's next turn (exactly like the slowed status).&lt;br /&gt;
* '''[filter]''' with a [[StandardUnitFilter]] as argument. The first unit found that matches the filter will be given the object. Only on-map units are considered. If no unit matches or no [filter] is supplied, it is tried to apply the object to the unit at the $x1,$y1 location of the event where this [object] is in. The case of no unit being at that spot is handled in the same way as no unit matching a given filter ([else] commands executed, cannot_use_message displayed). Note that units on the recall list will not be checked. To add an [object] to a unit on the recall list you have to use '''[modify_unit][object]'''.&lt;br /&gt;
* '''[then]''': a subtag that lets you execute actions if the filter conditions are met.  The most common action that should be inside here is a '''[remove_item]''' tag, but you could probably put any tags that otherwise work in a [then] tag.&lt;br /&gt;
* '''[else]''': a subtag that lets you execute actions if the filter conditions are *not* met.&lt;br /&gt;
* '''silent''': whether or not messages should be suppressed. Default is &amp;quot;no&amp;quot;. {{DevFeature1.13|2}} If no description is provided, this defaults to yes, but can still be overridden.&lt;br /&gt;
* '''image''': the displayed image of the object.&lt;br /&gt;
* '''name''': (translatable) displayed as a caption of the image.&lt;br /&gt;
&lt;br /&gt;
* '''description''': (translatable) displayed as a message of the image.&lt;br /&gt;
* '''cannot_use_message''': (translatable) displayed instead of '''description''' if no unit passes the filter test.&lt;br /&gt;
&lt;br /&gt;
=== [remove_object] ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|6}}&lt;br /&gt;
&lt;br /&gt;
Removes an object from matching units.&lt;br /&gt;
&lt;br /&gt;
* [[StandardUnitFilter]]: All units matching the filter have matching objects removed. Use no [filter] tag.&lt;br /&gt;
* '''object_id''': The id of the object to be removed.&lt;br /&gt;
&lt;br /&gt;
Note that some unit properties are not restored ideally, e.g. current unit's health reversion might not work as expected (max_hitpoints will though). {{DevFeature1.15|0}} This was fixed.&lt;br /&gt;
&lt;br /&gt;
Note that remove_object worked the following way: Step1) remove thos objects from the unit wml, Step2) Rebuild the unit to make the changes effective. Step2 implies that changes done for example via [modify_unit] (or via the [store_unit] + [set_variable] + [unstore_unit] technique) will be reset if those changes change a property that is a property of the unit type. See the note under [modify_unit] to get a list of properties that can safely be changes via [modify_unit]&lt;br /&gt;
&lt;br /&gt;
=== [remove_shroud] ===&lt;br /&gt;
Removes some shroud from the map for a certain side (only relevant for sides that have shroud=yes).&lt;br /&gt;
* '''side''': (default=1) the side for which to remove shroud. This can be a comma-separated list of sides. note: Default side=1 for empty side= is deprecated.&lt;br /&gt;
* '''[filter_side]''' with a [[StandardSideFilter]] as argument&lt;br /&gt;
* [[StandardLocationFilter]]: the range of tiles for which shroud should be removed&lt;br /&gt;
&lt;br /&gt;
=== [place_shroud] ===&lt;br /&gt;
Places some shroud on the map for a certain side (only relevant for sides that have shroud=yes).&lt;br /&gt;
* '''side''': (default=1) the side for which to place shroud. This can be a comma-separated list. note: Default side=1 for empty side= is deprecated.&lt;br /&gt;
* '''[filter_side]''' with a [[StandardSideFilter]] as argument&lt;br /&gt;
* [[StandardLocationFilter]]: the range of tiles on which shroud should be placed&lt;br /&gt;
&lt;br /&gt;
=== [lift_fog] ===&lt;br /&gt;
Lifts the fog of war from parts of the map for a certain side (only relevant for sides that have fog=yes), allowing a player to witness what occurs there even if that player has no units within vision range.&lt;br /&gt;
* '''[filter_side]''' with a [[StandardSideFilter]] indicating which sides should be affected.&lt;br /&gt;
* [[StandardLocationFilter]]: the tiles from which fog should be lifted.&lt;br /&gt;
* '''multiturn''': ''yes/no, default:no''. The default (not multiturn) causes fog to be removed in the same way that normal vision works; the cleared tiles will remain cleared until fog is recalculated (which normally happens when a side ends its turn). When multiturn is set to &amp;quot;yes&amp;quot;, the cleared tiles remain clear until {{tag||reset_fog}} cancels the clearing. This allows tiles to remain clear for multiple turns, or to be refogged before the end of the current turn (without also refogging all tiles). Multiturn lifted fog is not shared with allies (even when share_vision=all).&lt;br /&gt;
&lt;br /&gt;
=== [reset_fog] ===&lt;br /&gt;
The primary use of this tag is to remove multiturn lifted fog (created by {{tag||lift_fog}}), which causes the fog to reset to what it would have been had WML not interfered. (That is, hexes that a side's units could not see at any point this turn will be re-fogged, while seen hexes remain defogged.)&lt;br /&gt;
* '''[filter_side]''' with a [[StandardSideFilter]] indicating which sides should be affected.&lt;br /&gt;
* [[StandardLocationFilter]]: the fog reset will be restricted to these tiles.&lt;br /&gt;
* '''reset_view''': ''yes/no, default: no'' If set to &amp;quot;yes&amp;quot;, then in addition to removing multiturn fog, the side's current view is canceled (independent of the SLF). This means that all hexes will become fogged for the side unless multiturn fog exists outside the tiles selected by the SLF. Normally, one would want the currently seen hexes to become clear of fog; this is done automatically at the end of many events, and it can be done manually with {{tag|InterfaceActionsWML|redraw}}.&lt;br /&gt;
Omitting both the SSF and the SLF would cancel all earlier uses of [lift_fog].&lt;br /&gt;
Additionally setting reset_view=&amp;quot;yes&amp;quot; would cause the side's entire map to be fogged (unless an ally keeps hexes clear by sharing its view).&lt;br /&gt;
&lt;br /&gt;
=== [allow_undo] ===&lt;br /&gt;
Normally when an event with a handler fires, the player's undo stack is cleared, preventing all actions performed so far from being undone. Including this tag in the event handler prevents the stack from being cleared for this reason, allowing the player to undo actions. (However, the stack might still be cleared for other reasons, such as fog being cleared or combat occurring.) In the common cases, this means '''[allow_undo]''' allows the current action to be undone even though an event was handled. There is a less common case, though &amp;amp;mdash; specifically when handling a menu item, where there is no current action &amp;amp;mdash; and in this case, '''[allow_undo]''' means merely that earlier actions can still be undone.&lt;br /&gt;
* Using this tag in a menu item has an additional side effect in 1.11. Starting with version 1.11.1, executing a WML menu item normally counts as doing something as far as the &amp;quot;you have not started your turn yet&amp;quot; dialog is concerned. However, a menu item whose handler includes '''[allow_undo]''' will not count.&lt;br /&gt;
&lt;br /&gt;
The types of actions that can be undone are movement, recalling, and dismissing a unit from the recall list. If an action is undone, only the position (or existence) of the involved unit will be restored; any altered variables or changes to the game will remain changed after the action is undone.  It is up to the scenario designer to avoid abusing this command.&lt;br /&gt;
* Technically, if '''[allow_undo]''' is inside an '''[event]''' with ''first_time_only=yes'' (the default setting), and the user undoes the event, then the state of the game has changed in this way: the event will not fire a second time, even though the user undid the action the first time.&lt;br /&gt;
* Although recalling can be undone, recruitment can not be undone; this seems to apply even when the recruit's traits are not randomly-generated (tested on 1.12.6 and 1.14.4+dev).&lt;br /&gt;
&lt;br /&gt;
If an '''[event]''' uses both '''[allow_undo]''' and [[InternalActionsWML#.5Bfire_event.5D|'''[fire_event]''']] then the '''[allow_undo]''' must be after the '''[fire_event]'''.&lt;br /&gt;
&lt;br /&gt;
Due to a bug in 1.12 (https://gna.org/bugs/?23323) '''[allow_undo]''' should not be used in events that use one of the following things because it might cause OOS: &lt;br /&gt;
* [message] with [option]s&lt;br /&gt;
* [get_global_variable]&lt;br /&gt;
* wesnoth.synchronize_choice&lt;br /&gt;
&lt;br /&gt;
While in 1.13 using '''[allow_undo]''' together with those things won't give you a guaranteed OOS, there are some non-obvious situations where it will, for example assume the following event:&lt;br /&gt;
&lt;br /&gt;
   [event]&lt;br /&gt;
     name=&amp;quot;moveto&amp;quot;&lt;br /&gt;
     [message]&lt;br /&gt;
       message = &amp;quot;message&amp;quot;&lt;br /&gt;
       [option]&lt;br /&gt;
         label = &amp;quot;option 1&amp;quot;&lt;br /&gt;
         [command]&lt;br /&gt;
         [/command]&lt;br /&gt;
       [/option]&lt;br /&gt;
       [option]&lt;br /&gt;
         label = &amp;quot;option 2&amp;quot;&lt;br /&gt;
         [command]&lt;br /&gt;
         [/command]&lt;br /&gt;
       [/option]&lt;br /&gt;
     [/message]&lt;br /&gt;
     [allow_undo]&lt;br /&gt;
     [/allow_undo]&lt;br /&gt;
   [/event]&lt;br /&gt;
&lt;br /&gt;
It will cause OOS when the message is undone: since the event is already executed (erased) on one client only , the clients will disagree about how many choices happen during the next moveto action.&lt;br /&gt;
&lt;br /&gt;
=== [on_undo] ===&lt;br /&gt;
{{DevFeature1.13|2}}&lt;br /&gt;
Contains commands to execute when the player undoes the action which triggered the parent event.&lt;br /&gt;
*'''delayed_variable_substitution''' {{DevFeature1.13|5}}: ''yes/no, default no (always no before 1.13.5)'' As in [[EventWML]], specifies whether to perform variable substitution when the parent event is run, or when the contents are run. If delayed substitution is used, [[SyntaxWML#Automatically_Stored_Variables|automatically stored variables]] from the parent event context are available, but may occasionally have unexpected values. (In particular, $unit.x and $unit.y may not have the expected value when undoing a move event, though $x1 and $y1 should be correct.)&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
It is not clear where whether the actionwml in [on_undo] in executed before or after the action is undone. Also, specially for enter/leave_hex events the units position when executing the [on_undo] code is usually different than when executing the original event. The recommended way to work around these issues is to refer to the unit by id instead of position and store all other needed information variables as 'upvalues'. You can also move the actual undo code to an external event. For example&lt;br /&gt;
 [event]&lt;br /&gt;
   name=&amp;quot;undo_blah&amp;quot;&lt;br /&gt;
   first_time_only=no&lt;br /&gt;
   [store_unit]&lt;br /&gt;
     id=&amp;quot;$moved_unit_id&amp;quot;&lt;br /&gt;
   [/store_unit]&lt;br /&gt;
   ... do undo stuff stuff&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 ... in some other event&lt;br /&gt;
   [on_undo]&lt;br /&gt;
     # store ''upvalues&lt;br /&gt;
     {VARIABLE moved_unit_id $unit.id}&lt;br /&gt;
     # call actual undo handler&lt;br /&gt;
     [fire_event]&lt;br /&gt;
       name = &amp;quot;undo_blah&amp;quot;&lt;br /&gt;
     [/fire_event]&lt;br /&gt;
   [on_undo]&lt;br /&gt;
&lt;br /&gt;
=== [on_redo] ===&lt;br /&gt;
{{DevFeature1.13|2}}&lt;br /&gt;
Same as [on_undo], except executes the commands on redo. Note that the parent event is not triggered again on a redo.&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|8}} [on_redo] is deprecated and has no effect anymore.&lt;br /&gt;
&lt;br /&gt;
Note that [on_redo] is not guaranteed to be called when redoing an action, the engine might also decide to just fire the original events again.&lt;br /&gt;
&lt;br /&gt;
=== [cancel_action] ===&lt;br /&gt;
Although Wesnoth 1.12 does not have this tag, it is the default behavior of {{tag|EventWML|enter_hex}}/{{tag|EventWML|leave_hex}} events in that version.&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|9}} In this version, [cancel_action] is recognised, but has no effect (a bug).&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|11}}&lt;br /&gt;
In an {{tag|EventWML|enter_hex}}/{{tag|EventWML|leave_hex}} event, interrupt the movement, leaving the unit where it is. This is intended to be used with an event that gives the player new information, to let the player choose whether to change their plans. For example, if the player has commanded a unit to move from (1,1) to (3,3) and attack a unit on (4,4); then a [cancel_action] inside an [enter_hex] event on (2,2) would make the unit stop on (2,2). A [cancel_action] inside an [enter_hex] on (3,3) would let the player choose whether to attack.&lt;br /&gt;
&lt;br /&gt;
=== [heal_unit] ===&lt;br /&gt;
Heal a unit. The variable '''$heal_amount''' will be set to the exact number of points healed (i.e can be less than the parameter '''amount''' if the unit is fully healed). $heal_amount contains only the number of hitpoints the first unit that was found got healed. When the variable is not needed, use {CLEAR_VARIABLE heal_amount} after this tag.&lt;br /&gt;
*  '''[filter]''': [[StandardUnitFilter]] All matching on-map units are healed. If no filter is supplied, it is tried to take the unit at $x1, $y1.&lt;br /&gt;
*  '''[filter_second]''': [[StandardUnitFilter]] all the units matching the filter ''and'' having the ''heals'' ability will have their animation played (if ''animate'' is set to yes) for each of the units healed.&lt;br /&gt;
*  '''amount''': (integer, default full) the maximum points the unit(s) will be healed. This can't be used to set the unit's hitpoints below 1 or above the unit's maximum hitpoints. If &amp;quot;full&amp;quot;, it fully heals the unit.&lt;br /&gt;
*  '''animate''': a boolean which indicate if the healing animations must be played. (default no)&lt;br /&gt;
*  '''moves''': (integer, default 0) The maximum current movement points the units will be &amp;quot;healed&amp;quot;. Can't set below 0 or above max_moves. If &amp;quot;full&amp;quot;, sets moves to max_moves.&lt;br /&gt;
* '''restore_attacks''': (boolean, default no) Whether the units' attacks_left should be reset to their max_attacks (usually 1).&lt;br /&gt;
* '''restore_statuses''': (boolean, default yes) Whether standard statuses should be reset to &amp;quot;no&amp;quot;. This affects poisoned, slowed, petrified and unhealable.&lt;br /&gt;
&lt;br /&gt;
=== [harm_unit] ===&lt;br /&gt;
Harms every unit matching the filter, for the specific damage amount.&lt;br /&gt;
*  '''[filter]''': [[StandardUnitFilter]] all matching units will be harmed (required).&lt;br /&gt;
*  '''[filter_second]''': [[StandardUnitFilter]] if present, the first matching unit will attack all the units matching the filter above.&lt;br /&gt;
*  '''amount''': the amount of damage that will be done (required).&lt;br /&gt;
*  '''alignment''': (default neutral) applies an alignment to the damage, this means that if alignment=chaotic, the damage will be increased at night and reduced at day.&lt;br /&gt;
*  '''damage_type''': if present, amount will be altered by unit resistance to the damage type specified.&lt;br /&gt;
*  '''kill''': (default yes) if yes, when a harmed unit goes to or below 0 HP, it is killed; if no its HP are set to 1.&lt;br /&gt;
*  '''fire_event''': (default no) if yes, when a unit is killed by harming, the corresponding events are fired.  If yes, also the corresponding advance and post advance events are fired.&lt;br /&gt;
*  '''animate''': (default no) if yes, scrolls to each unit before harming it and plays its defense (or attack, if it's the harmer) and death animations. Special values supported, other than the usual yes and no, are &amp;quot;attacker&amp;quot;, that means only the harmer will be animated, and &amp;quot;defender&amp;quot;, that means only the harmed units will be animated. If the supplied value is yes, attacker or defender also advancement animations are played.&lt;br /&gt;
*  '''[primary_attack], [secondary_attack]''': these set the weapon against which the harmed units will defend, and that the harming unit will use to attack, respectively (notice this is the opposite of '''[filter]''' and '''[filter_second]''' above). This allows for playing specific defense and attack animations. Both tags are expected to contain a [[FilterWML#Filtering_Weapons|Standard Weapon Filter]].&lt;br /&gt;
*  '''delay''': if animate=yes, sets the delay (in milliseconds, default 500) between each unit harming.&lt;br /&gt;
*  '''variable''': if present, the damage caused to the unit, altered by resistances, will be stored in a WML array with the given name, under the &amp;quot;harm_amount&amp;quot; key.&lt;br /&gt;
*  '''poisoned, slowed, petrified, unhealable''': (default no) if yes, every harmed unit that doesn't already have such status will have it set.&lt;br /&gt;
*  '''experience''': if yes, and there is a harmer, experience will be attributed like in regular combat.&lt;br /&gt;
*  '''resistance_multiplier''': the harmed unit's resistance is multiplied by the supplied value; this means that a value lower than 1 increases it, and a value greater than 1 decreases it. Default value is 1, that means no modification.&lt;br /&gt;
&lt;br /&gt;
=== [time_area] ===&lt;br /&gt;
How a day should progress in a given area. Everywhere not specified in a [time_area] tag is affected by the [time] tags in the [scenario] tag.&lt;br /&gt;
* [[StandardLocationFilter]]: the locations to affect. ''note: only for [event][time_area]s - at scenario toplevel [time_area] does not support [[StandardLocationFilter]], only location ranges''&lt;br /&gt;
* '''[time]''': one or more tags describing the new schedule, see [[TimeWML]].&lt;br /&gt;
* '''id''': an unique identifier assigned to a time_area. Optional, unless you want to remove the time_area later or reference it from a location filter elsewhere. Can be a comma-separated list when removing time_areas, see below.&lt;br /&gt;
* '''remove''': (boolean) yes/no value. Indicates whether the specified time_area should be removed. Requires an identifier. If no identifier is used, however, all time_areas are removed.&lt;br /&gt;
* '''current_time''': The time slot number (starting with zero) active at the creation of the area.&lt;br /&gt;
&lt;br /&gt;
''Example:'' (caves in parts of a map)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=wml&amp;gt;&lt;br /&gt;
[time_area]&lt;br /&gt;
    id = cave_area&lt;br /&gt;
    x = 1-2,4-5&lt;br /&gt;
    y = 1-2,1-2&lt;br /&gt;
    {UNDERGROUND}&lt;br /&gt;
[/time_area]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Specifying an id allows the area to be referenced from location filters. Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=wml&amp;gt;&lt;br /&gt;
    [time_area]&lt;br /&gt;
        id = glyphs&lt;br /&gt;
        x = 9,14&lt;br /&gt;
        y = 11,3&lt;br /&gt;
    [/time_area]&lt;br /&gt;
    [event]&lt;br /&gt;
        name = moveto&lt;br /&gt;
        first_time_only=no&lt;br /&gt;
        [filter]&lt;br /&gt;
            side = 1&lt;br /&gt;
            [filter_location]&lt;br /&gt;
                area = glyphs&lt;br /&gt;
            [/filter_location]&lt;br /&gt;
        [/filter]&lt;br /&gt;
        # Do something, for example healing the unit&lt;br /&gt;
    [/event]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [remove_time_area] ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|2}}&lt;br /&gt;
&lt;br /&gt;
This is a syntactic shortcut for [time_area] remove=.&lt;br /&gt;
* '''id''': Comma-separated list of time area ids to remove.&lt;br /&gt;
&lt;br /&gt;
=== [end_turn] ===&lt;br /&gt;
End the current side's turn. The current event is finished before the turn is ended. Also, if the current event (where the tag appears) has been fired by another event, that event (and the complete stack of other possible parent events) is ended before [end_turn] comes into affect. Also, events following the event stack that fired [end_turn] are not omitted (e.g. [end_turn] is used by a side turn event and a turn refresh event does something afterwards).&lt;br /&gt;
&lt;br /&gt;
=== [replace_map] ===&lt;br /&gt;
&lt;br /&gt;
Replaces the entire map.&lt;br /&gt;
* '''map''': Content of a wesnoth map file. Example:&lt;br /&gt;
 map=&amp;quot;{campaigns/Heir_To_The_Throne/maps/01_The_Elves_Besieged.map}&amp;quot;&lt;br /&gt;
* '''map_file''': {{DevFeature1.13|?}} Path to a Wesnoth map file; can be used instead of '''map'''. The file will be loaded when the tag is executed, rather than being embedded wholesale in the preprocessed WML. Example:&lt;br /&gt;
 map_file=campaigns/Heir_To_The_Throne/maps/01_The_Elves_Besieged.map&lt;br /&gt;
{{DevFeature1.15|3}} If the file is not found directly, it will be searched for in the [[BinaryPathWML|[binary_path]]]. Assuming a standard campaign or add-on layout, the example above can be replaced by:&lt;br /&gt;
 map_file=01_The_Elves_Besieged.map&lt;br /&gt;
* '''expand''': if 'yes', allows the map size to increase. The expansion direction is currently always bottom-right.&lt;br /&gt;
* '''shrink''': if 'yes', allows the map size to decrease. If the map size is reduced, any units that would no longer be on the map due to its coordinates no longer existing will be put into the recall list.&lt;br /&gt;
Note: When a hex changes from a village terrain to a non-village terrain, and a team owned that village it loses that village. When a hex changes from a non-village terrain to a village terrain and there is a unit on that hex it does not automatically capture the village. The reason for not capturing villages it that there are too many choices to make; should a unit lose its movement points, should capture events be fired. It is easier to do this as wanted by the author in WML.&lt;br /&gt;
&lt;br /&gt;
=== [replace_schedule] ===&lt;br /&gt;
Replace the time of day schedule of the entire scenario.&lt;br /&gt;
* [[TimeWML]]: the new schedule.&lt;br /&gt;
* '''current_time''': The time slot number (starting with zero) active at schedule replacement.&lt;br /&gt;
&lt;br /&gt;
=== [tunnel] ===&lt;br /&gt;
&lt;br /&gt;
Create a tunnel between some locations, later usable by units to move from source hex to target hex (using the movement cost of unit on the target terrain).&lt;br /&gt;
&lt;br /&gt;
'''Behavior Change as of Wesnoth 1.13.6:''' Vision is now possible (and enabled by default) through tunnels and allied units on the exit hex do not block a tunnel by default any more. This is done in order for moves through tunnels to be consistent with other moves. The previous behavior can still be accomplished by using the new optional keys listed below.&lt;br /&gt;
&lt;br /&gt;
* '''[filter]''': (required) [[StandardUnitFilter]] the units which can use the tunnel. Leave empty for &amp;quot;all units&amp;quot;.&lt;br /&gt;
* '''[source]''': (required) [[StandardLocationFilter]] the source hex(es).&lt;br /&gt;
* '''[target]''': (required) [[StandardLocationFilter]] the target hex(es).&lt;br /&gt;
* '''id''': (optional) identifier for the tunnel, to allow removing.&lt;br /&gt;
* '''remove''': (boolean, default: no)  If yes, removes all defined tunnels with the same ID (then only id= is necessary).&lt;br /&gt;
* '''bidirectional''': (boolean, default: yes) If yes, creates also a tunnel in the other direction. &lt;br /&gt;
* '''always_visible''': (boolean, default: no) If yes, the possible movement of enemies under fog can be seen.&lt;br /&gt;
* '''allow_vision''': (boolean, default: yes) {{DevFeature1.13|6}} If no, vision through a tunnel is not possible. Note that in that case the tunnel cannot be used if the tunnel exit is under shroud (which previously was ''always'' the case).&lt;br /&gt;
* '''pass_allied_units''': (boolean, default: yes) {{DevFeature1.13|6}} If no, allied (including own) units on the exit hex block a tunnel.&lt;br /&gt;
* '''delayed_variable_substitution''' (boolean, default: yes): If yes, the WML block contained in this [tunnel] is not variable-substituted at execution time of the event where this [tunnel] is within. Instead, variables are substituted when the tunnel is used by a unit. See [[EventWML#Nested_Events]]&lt;br /&gt;
&lt;br /&gt;
(Note: The tunnel tag can also be used inside the [[AbilitiesWML|[teleport]]] ability, without remove= and id=).&lt;br /&gt;
&lt;br /&gt;
=== [do_command] ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
Executes a command, specified using the same syntax as a [command] tag in [[ReplayWML]]. Not all [command]'s are valid: only these are accepted&lt;br /&gt;
&lt;br /&gt;
* [attack]&lt;br /&gt;
* [move]&lt;br /&gt;
* [recruit]&lt;br /&gt;
* [recall]&lt;br /&gt;
* [disband]&lt;br /&gt;
* [fire_event]&lt;br /&gt;
* [lua_ai] {{DevFeature1.13|12}} This has been removed and is replaced with [custom_command]&lt;br /&gt;
&lt;br /&gt;
The tags corresponding to player actions generally use the same codepath as if a player had ordered it. That means for example that only moves that player would be allowed to do are possible, and movement is interrupted when sighting enemy unit.&lt;br /&gt;
&lt;br /&gt;
One purpose of this tag is to allow scripting of noninteractive scenarios -- without a tag like this, this might require elaborate mechanisms to coerce ais in order to test these code paths.&lt;br /&gt;
&lt;br /&gt;
This command should always be replay safe.&lt;br /&gt;
&lt;br /&gt;
=== [put_to_recall_list] ===&lt;br /&gt;
&lt;br /&gt;
{{DevFeature1.13|0}}&lt;br /&gt;
&lt;br /&gt;
Puts a unit to the recall list of its side.&lt;br /&gt;
* '''[[StandardUnitFilter]]''': the unit(s) to get put to the recall list.&lt;br /&gt;
* '''heal''': (default=no) Whether the unit should be refreshed, similar to the unit moving to the recall list at the end of a scenario.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Useful Macros ==&lt;br /&gt;
There are some predefined macros that you find useful for direct actions. You can find a complete list along with a detailed explanation of how they work [http://www.wesnoth.org/macro-reference.xhtml here].&lt;br /&gt;
* '''{MOVE_UNIT}''': Moves a unit to another location in the map and the player sees the movement (unlike [teleport])&lt;br /&gt;
* '''{FULL_HEAL}''': Brings a unit to full HP&lt;br /&gt;
* '''{LOYAL_UNIT}''': Create a loyal unit&lt;br /&gt;
* '''{MODIFY_TERRAIN_MASK}''': Modify an area of terrain&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[InternalActionsWML]]&lt;br /&gt;
* [[InterfaceActionsWML]]&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;br /&gt;
[[Category: ActionsWML]]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Guide_to_UMC_Content&amp;diff=67615</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=67615"/>
		<updated>2021-04-18T18:38:51Z</updated>

		<summary type="html">&lt;p&gt;Atreides: Appending my era&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a guide to the current 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;
This list covers add-ons for the latest (1.14) release of Wesnoth. There are archived versions of this page for [[Guide_to_UMC_Content/1.10|1.10]] and [[Guide_to_UMC_Content/1.12|1.12]].&lt;br /&gt;
&lt;br /&gt;
For content creators who loved an add-on that hasn't been added to 1.14 yet, and are wondering about taking it over, please ensure that its entry on the older (1.12 or 1.10) wiki page is up to date, add a link to the add-on's feedback thread in the forums, and generally do the tidy-up that doesn't need you to start changing the campaign, and then ask the old maintainer. (You should probably also wait until the end of May 2018 before assuming that a maintainer isn't already porting to 1.14).&lt;br /&gt;
&lt;br /&gt;
If you are looking for even more campaigns, please see the links in at the bottom of this page.&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;Version&amp;lt;/b&amp;gt; campaign version on the add-ons server&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;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;
Please note: If you didn't play the campaign, write the difficulty written on the add-ons server.&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. If you don't know which style is the campaign you are listing, don't write this.&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 1.14:&amp;lt;/b&amp;gt;&lt;br /&gt;
** see the list of statuses in the campaign blueprint&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;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.14.x ==&lt;br /&gt;
&lt;br /&gt;
=== Campaigns ===&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:''' shadowm/ShikadiQueen/Iris&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished, 0.10.11&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;
'''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:''' [//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;
====A Beastly Tale====&lt;br /&gt;
&lt;br /&gt;
''When a small village is beset by troubles, its fate rests in the hands of a young woodsman and the animals he befriends.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' GloccusV&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 2.0.3&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 5 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Intermediate&lt;br /&gt;
&lt;br /&gt;
'''Custom units:''' [//units.wesnoth.org/1.14/A_Beastly_Tale/en_US/A_Beastly_Tale.html Here]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=41434&amp;amp;p=633612&amp;amp;hilit=A+Beastly+Tale#p579093 Here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====A Song of the Winds====&lt;br /&gt;
&lt;br /&gt;
''Every era has its heroes and heroines. Before the song of Myra, the odyssey of Akhen Wadjet and the aria of Tenma Yozora, there was the song of the winds that echoed in the mountains and halls at the heart of the Great Continent. Follow young Maat of Hiera'Shirsha and Prince Abhai of Garet-Desh in the war that set the stage for one of the greatest upheavals Irdya has ever witnessed.&lt;br /&gt;
(Prequel to the Dragon Trilogy)''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' revansurik&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.0.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 43 scenarios (some of them dialogue-only)&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Intermediate&lt;br /&gt;
&lt;br /&gt;
'''Custom units:''' War of Legends + Custom factions&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//https://forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=53913 Here]&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:''' Complete 1.10.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 20 scenarios&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=31348]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====  The Black Cross of Aleron ====&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 2.0.3&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 scenarios&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;
'''[https://units.wesnoth.org/1.14/Black_Cross_of_Aleron/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;
==== 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, 1.3.2&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 12 scenarios&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;
'''[//units.wesnoth.org/1.14/Danse_Macabre/en_US/Danse_Macabre.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//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.14 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;
&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:''' Incomplete (guessing, based on the discussion thread), 0.1.9.5&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 17 scenarios&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=39512]&lt;br /&gt;
&lt;br /&gt;
==== A Fiery Birth ====&lt;br /&gt;
&lt;br /&gt;
''A scholar of the Great Academy journeys to the land of the drakes to discover their secret origins.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Mathbrush&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.2.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 9 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=47861&amp;amp;p=623953 Here]&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:''' Complete, 2.6.1&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 4 scenarios&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:''' [//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;
==== Flight to Freedom ====&lt;br /&gt;
&lt;br /&gt;
''Flight to Freedom chronicles the story of the drake hero Malakar, and his desperate cross-country flight out of slavery.''&lt;br /&gt;
&lt;br /&gt;
'''Authors:''' MadMax, Nova&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 20 playable scenarios + 1 dialogue-only, for a total of 21&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 5.3.2&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Expert&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Large Battle, Puzzle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Drakes&lt;br /&gt;
&lt;br /&gt;
'''Required Wesnoth version:''' 1.14+&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=1887]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Inky's Quest ====&lt;br /&gt;
&lt;br /&gt;
''The Cuttlefish Campaign''&lt;br /&gt;
&lt;br /&gt;
''Are the cuttlefish mere beasts or something more? What stories would they tell if they could speak? This story provides one possible answer. The easiest difficulty provides hints for novice players.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Telchin&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 12 scenarios + story-only epilogue, for a total of 13&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.5.6&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Custom units (cuttlefish, tentacles, giant clams...). Enemies use both default era units and custom ones.&lt;br /&gt;
&lt;br /&gt;
'''[//units.wesnoth.org/1.14/Inky_Quest/en_US/Inky_Quest.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=32501]&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:''' shadowm/ShikadiQueen/Iris&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished, 2.1.9&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;
&lt;br /&gt;
==== Leader of the Drakes ====&lt;br /&gt;
&lt;br /&gt;
''Leader of the drakes is killed. His son tries to defend homeland against the orcs. He choosed to ally with saurians, but other clans of drakes disagrees. Will fast and unexperienced Morin win against orcs and rebel drakes alike?''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Elven&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Complete, 1.02b&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 3 scenarios&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy/Medium&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Minigames&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default, Drakes&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=53951&amp;amp;start=15]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Short, easy campaign with simple objectives. Features Drake Glider as leader and modified Drake Burner with cold and slowing blade.&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;
'''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;
'''Forum:''' [//r.wesnoth.org/t32384]&lt;br /&gt;
&lt;br /&gt;
'''[[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;
==== A New Order ====&lt;br /&gt;
&lt;br /&gt;
''The old kingdom of Wesnoth has fallen before barbarian hordes. The occupying barbarians are on the brink of civil war, the seeds of Wesnothian rebellion are kept alive by old legends, while bandits and Dunefolk mercenaries roam the land. Can Gawen Hagarthen unite these disparate factions against a common foe?''&lt;br /&gt;
&lt;br /&gt;
''Note: This campaign contains mature themes, some of which may be unsuitable for children.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' szopen&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 1.2.19&lt;br /&gt;
&lt;br /&gt;
'''Length:''' Hard to say as it is non-linear; it is advertised as having 45 scenarios, but the numbering only goes up to 30 due to some of the scenarios being alternates to one another.&lt;br /&gt;
&lt;br /&gt;
'''Requirements:''' Requires BfW 1.14+. Also uses the &amp;quot;Akladian Music&amp;quot; add-on.&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Advertised as intermediate; could be considered hard, though.&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Mostly Skirmish, some Large Battle&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' mostly various human factions (including the Dunefolk), with the addition of the Akladian faction of humans&lt;br /&gt;
&lt;br /&gt;
'''[//units.wesnoth.org/1.14/A_New_Order/en_US/A_New_Order.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=6486&amp;amp;sid=2e644284f54e65736b4f1543b7098ef9]&lt;br /&gt;
&lt;br /&gt;
'''Note:''' (Pyrophorus) Certainly one of the most mature and well designed campaign in add-ons. A must.&lt;br /&gt;
&lt;br /&gt;
''' [http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#A_New_Order Players’ Review(s)]'''&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, 0.3.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 1 playable scenario, 6 intended&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=42854]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Ravagers====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' ''The Ravagers'' 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 such as drinking, 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;
'''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;
'''[//units.wesnoth.org/1.14/The_Ravagers/en_US/The_Ravagers.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=44930]&lt;br /&gt;
&lt;br /&gt;
'''*Notes:''' The main storyline is complete, but there are unfinished side-missions that are still in development. The campaign is aimed to become finished with version 1.2.0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Return from the Abyss ====&lt;br /&gt;
&lt;br /&gt;
''After taking part to a disastrous expedition, Khafir and his men are lost and isolated from their people, thousands of miles away from home, bound by a pact sealed with a powerful dwarvish king. Help him escape from the depth of Irdya and finding his way back, in an adventure across two worlds during the rise of a sinister force in the Great Continent.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' skeptical_troll&lt;br /&gt;
&lt;br /&gt;
'''Status:''' finished&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 19 playable scenario + 10 story only&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Hard&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish, Dungeon&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Dunefolk/Default&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=44545]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Return of the Darks ====&lt;br /&gt;
&lt;br /&gt;
''The Darks are a race which left Wesnoth in the ancient times and lives on Isles in the sky. But now the Magic wich helped them to move the Isles in Sky got lost and the isles are about to fall down. Rumion an adventurer goes to Wesnoth and searchs for something that could help them.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' thvk&lt;br /&gt;
&lt;br /&gt;
'''Status:''' WIP&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 4 playable scenario + 2 story only&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Easy&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction/Era:''' Default + some self made units&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=52731]&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:''' Mainlined (this is now one of the campaigns that is downloaded with Wesnoth itself)&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 18 playable scenarios + 3 story only&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:''' [//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;
&lt;br /&gt;
==== Swamplings ====&lt;br /&gt;
&lt;br /&gt;
''Banished by Yushnak the Ponderer, a tribe of lowly swamp goblins endure in the deadly mire of Pogo Bog. Four centuries before the founding of Wesnoth, this is the story of the goblins' struggle against the intrigues and betrayals of the greater races, and the rise of the first wolf rider.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' John Rawlins (boru)&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.2.0i&lt;br /&gt;
&lt;br /&gt;
'''Difficulty:''' Normal&lt;br /&gt;
&lt;br /&gt;
'''Style:''' Skirmish&lt;br /&gt;
&lt;br /&gt;
'''Faction:''' Goblins&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=41254]&lt;br /&gt;
&lt;br /&gt;
'''[http://wiki.wesnoth.org/Guide_to_UMC_Campaigns/Players_Reviews#Swamplings Players’ Review(s)]'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== The Dark Hordes ====&lt;br /&gt;
&lt;br /&gt;
''Lead fugitive dark sorcerer Gwiti Ha’atel to mastery of the undead hordes.''&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Circon&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Various&lt;br /&gt;
&lt;br /&gt;
'''Status:''' Incomplete/WIP&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 15 scenarios done so far&lt;br /&gt;
&lt;br /&gt;
'''Version:''' 0.1.2&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 undead&lt;br /&gt;
&lt;br /&gt;
'''[//units.wesnoth.org/1.10/The_Dark_Hordes/en_US/The_Dark_Hordes_1.html Custom Units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=16576&amp;amp;]&lt;br /&gt;
&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:''' Finished 0.11.0&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 5 scenarios&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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=37880]&lt;br /&gt;
&lt;br /&gt;
'''Walkthrough''' There is a video-walkthrough by the campaign maintainer that begins  [https://www.youtube.com/watch?v=dGM1bjImvkI&amp;amp;list=PLZorLYWvUD7VIhaXxKwzO8iQANlp_TaF0 here].&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;
&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;
'''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:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=31799]&lt;br /&gt;
&lt;br /&gt;
'''[[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, 1.0.14&lt;br /&gt;
&lt;br /&gt;
'''Length:''' 13 playable scenarios + 1 dialogue-only&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;
'''[//units.wesnoth.org/1.10/A_Vision_Blinded/en_US/A_Vision_Blinded.html Custom units]'''&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=8&amp;amp;t=23463]&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;
==== '''War of Legends''' ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A multiplayer era focused on the Dark Irdya Campaigns. Contains 15 factions.&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:''' Complete, new features being added for the 1.15.x version of the add-on&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 (Desert Elves)&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;
# Dunefolk&lt;br /&gt;
# Knalgan Alliance&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?f=19&amp;amp;t=30087 Development and Feedback Thread]&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, 3.1&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:''' [//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, 4.19&lt;br /&gt;
&lt;br /&gt;
'''Unit Tree:''' [//units.wesnoth.org/1.12/Ageless_Era/en_US/Ageless%20Era.html Ageless Unit Tree (for 1.12)]&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;
'''Git:''' [https://github.com/ProditorMagnus/Ageless-for-1-11 Ageless-for-1-11] and also for 1.12 and 1.14&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//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:''' Complete, 0.23&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;
'''Wiki:''' [[Orbivm]]&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?t=37920 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
==== Lonely Era (LE) ====&lt;br /&gt;
&lt;br /&gt;
'''Description:''' A collection of selected solitary factions with unusual characteristics.&lt;br /&gt;
&lt;br /&gt;
'''Author:''' Shield&lt;br /&gt;
&lt;br /&gt;
'''Maintainer:''' Atreides&lt;br /&gt;
&lt;br /&gt;
'''Status 1.14:''' Finished&lt;br /&gt;
&lt;br /&gt;
'''Faction Descriptions:''' Included are:&lt;br /&gt;
&lt;br /&gt;
1) Santa's Helpers are his Elves as well as animated pine trees. Beware of Elves bearing gifts though, the presents are very distracting. They are unique in not having standard levels, they each can gain up to 4 special abilities via AMLA but always remain at level 1. Of course there are also Flying Reindeer and Christmas Seals.&lt;br /&gt;
&lt;br /&gt;
2) Gremlins are an all teleporting race of elusive ethereal creatures. Individually fragile they work together using their tremendous mobility to swarm and overwhelm their enemies. Their mages are perhaps the ultimate glass cannons but if you can somehow keep one alive long enough it might even get to level 5 and become immortal.&lt;br /&gt;
&lt;br /&gt;
3) Vaeringjar are a Viking faction allied with Wolfkin. The vikings eschew ranged weapons as well as sissy ideas like dodging blows but are a very, very hardy lot. They also have a unique herbalist unit that can inspire berserker rage in adjacent vikings for a turn. The wolfkin are lithe and armed with bows and teeth on the other hand. They are also very agile in contrast to the vikings. As nocturnal hunters they are devastating at night and almost helpless in the day.&lt;br /&gt;
&lt;br /&gt;
4) Avians are cold loving, water hating bipedal birds. Their hollow bones and feathers make them vulnerable to fire and blunt weapons. They are unique in having cheap level 0 healers. Unusually their leaders are not drawn from the ranks but form a separate class only selectable as leaders. Tamed Albatrosses to patrol the awful waters.&lt;br /&gt;
&lt;br /&gt;
5) The Deep Ones - Slimy, slippery, blasphemous fish-frogs of the nameless design - living and horrible - have now been sighted on the edge of Wesnoth. Mutants who slowly evolve from human to monster these creatures are nothing to be trifled with! An all water faction they are still capable of holding their own against the landlubbers.&lt;br /&gt;
&lt;br /&gt;
'''Forum:''' [//forums.wesnoth.org/viewtopic.php?t=42630 Development and Feedback Thread]&lt;br /&gt;
&lt;br /&gt;
== Additional info ==&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;
* [//r.wesnoth.org/t37476 forum thread] for this page&lt;br /&gt;
* [[Guide_to_UMC_Content/1.12|Guide to user-made content (UMC) for Battle for Wesnoth 1.12]]&lt;br /&gt;
* [[Guide_to_UMC_Content/1.10|Guide to user-made content (UMC) for Battle for Wesnoth 1.10]]&lt;br /&gt;
* [//r.wesnoth.org/t36733 thread discussing 1.8 UMC that wasn't ported to 1.10]&lt;br /&gt;
* [//r.wesnoth.org/t48086 thread discussing all UMC that hasn't been ported to 1.14]&lt;br /&gt;
* [//addons.wesnoth.org the addon server]&lt;/div&gt;</summary>
		<author><name>Atreides</name></author>
		
	</entry>
</feed>