<?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=Alink</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=Alink"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Alink"/>
	<updated>2026-06-02T15:34:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=46522</id>
		<title>User:Alink</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=46522"/>
		<updated>2012-04-26T16:54:46Z</updated>

		<summary type="html">&lt;p&gt;Alink: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I joined the project in 2007 as a coder.&lt;br /&gt;
I mainly worked on:&lt;br /&gt;
&lt;br /&gt;
* Optimizations: graphics(engine and SDL), pathfinding, caching and loading/parsing data.&lt;br /&gt;
&lt;br /&gt;
* Mouse interface on the main view: attack direction system, most info displayed on &lt;br /&gt;
path and units.&lt;br /&gt;
&lt;br /&gt;
* Various pathfinding features, including some specific to MP (fog of war, out-of-sync), also handling teleport ability.&lt;br /&gt;
&lt;br /&gt;
* Map view: lighting system, animated terrains perfomance, zoom and z-order issues. Full map screenshot and minimap scaling.&lt;br /&gt;
&lt;br /&gt;
* Help system: sub-sections, faster loading, and better handling of special hyperlinks.&lt;br /&gt;
&lt;br /&gt;
* Sidebar: readability improvements, better tooltips, also made clickable to open help)&lt;br /&gt;
&lt;br /&gt;
* Attack window: readability improvements (central attack type, colors)&lt;br /&gt;
&lt;br /&gt;
* Menu (GUI1): text filters in few places, some columns sorting etc.&lt;br /&gt;
&lt;br /&gt;
* Map editor: map building improvements and few interface features.&lt;br /&gt;
&lt;br /&gt;
* Various mouse shortcuts: middle-click on scrollbar (linux-like), right-click outside to close dialog, new middle-click map-scrolling.&lt;br /&gt;
&lt;br /&gt;
* Some Image Path Functions.&lt;br /&gt;
&lt;br /&gt;
* Many debug commands: show redraw(:sunset), terrain layers (:layers, :foreground), command alias(:alias), custom command hotkey (:command), benchmark, level-selection, discover hidden units, change time of day&lt;br /&gt;
&lt;br /&gt;
* Experiment to convert the SDL engine to OpenGL, which works and is already faster on decent GPU. In pause for now. Wesnoth is currently used by a lot of different systems and hardwares (including mobile devices). I didn't want to cut some of them or split the codebase. The conversion to OpenGL is already a lot of work, and the compatibility burden is a bit too much for a one-man team. The OGL branch is still there and I might come back to it when I have time and maybe more testers.&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=44426</id>
		<title>ImagePathFunctions</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=44426"/>
		<updated>2011-12-16T21:21:44Z</updated>

		<summary type="html">&lt;p&gt;Alink: add ~MASK() doc&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;
== 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;
=== Syntax ===&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;
== Re-Color Function ==&lt;br /&gt;
May be used to change some colors in an image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~RC(''' ''source color palette'' '''&amp;gt;''' ''color range ID'' ''')'''&lt;br /&gt;
*''source color palette'' - the first parameter is a source color palette, usually magenta. Do not surround this parameter with quotes.&lt;br /&gt;
*''color range ID'' - this is the second parameter, signifying the ID of a color range defined in the file ''data/core/team-colors.cfg'' (or it may be a custom ID for a color range defined locally).  &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 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;
== 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;
=== Syntax ===&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;
== Flip Function ==&lt;br /&gt;
May be used to flip an image horizontally and/or vertically&lt;br /&gt;
=== Syntax ===&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 horizantally.&lt;br /&gt;
*if the argument list is empty, the image will only be flipped horizontally.&lt;br /&gt;
&lt;br /&gt;
== Greyscale Function ==&lt;br /&gt;
May be used to greyscale the image (turn to black and white)&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~GS( )'''&lt;br /&gt;
&lt;br /&gt;
== Crop Function ==&lt;br /&gt;
Extracts a rectangular section of an image file.&lt;br /&gt;
=== Syntax ===&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.&lt;br /&gt;
* ''height'': height of the selected region. Must be less than or equal to the original image's height.&lt;br /&gt;
&lt;br /&gt;
== Blit Function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Blit the parameter image on the main image. Example: peasant.png~BLIT(hat.png,30,10)&lt;br /&gt;
=== Syntax ===&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;
== Mask Function ==&lt;br /&gt;
{{DevFeature1.9}}&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;
=== Syntax ===&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;
== Color-shift function ==&lt;br /&gt;
Performs simple per-channel color shifts by adding the arguments to the respective color channels.&lt;br /&gt;
=== Syntax ===&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;
== Lightmap color-shift function ==&lt;br /&gt;
{{DevFeature1.9}}&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;
=== Syntax ===&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 gray image (RGB = 128,128,128) and any non-gray 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;
== Image-scaling function ==&lt;br /&gt;
Scales a graphic up or down.&lt;br /&gt;
=== Syntax ===&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.&lt;br /&gt;
&lt;br /&gt;
== Opacity modifying function ==&lt;br /&gt;
Changes an image's opacity at render time.&lt;br /&gt;
=== Syntax ===&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;
== Blurring function ==&lt;br /&gt;
Blurs a graphic at render time using the same algorithm used for in-game dialogs.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~BL( ''radius'' )'''&lt;br /&gt;
&lt;br /&gt;
== Overlay function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Puts a time-of-day overlay on the image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~LIGHTEN()'''&lt;br /&gt;
&lt;br /&gt;
'''~DARKEN()'''&lt;br /&gt;
&lt;br /&gt;
== Background coloring function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Sets the color of all the (semi-)transparent pixels of the image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~BG(r,g,b)'''&lt;br /&gt;
&lt;br /&gt;
== Null function ==&lt;br /&gt;
Does nothing.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~NOP()'''&lt;br /&gt;
&lt;br /&gt;
== Precedence of Functions  ==&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 &amp;quot;units/elves-wood/fighter.png~CROP(0,0,20,20)~CROP(10,10,10,10)&amp;quot; would result in taking a crop of the rectangle x=20;y=20;w=40;h=40 and then taking a crop from ''that'' rectangle as x=10;y=10;w=10;h=10 resulting in the area x=30;y=30;w=10;h=10 from the original graphic.&lt;br /&gt;
&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=44425</id>
		<title>ImagePathFunctions</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=44425"/>
		<updated>2011-12-16T21:01:05Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Lightmap color-shift function */ fix 1.9 tag newline&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;
== 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;
=== Syntax ===&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;
== Re-Color Function ==&lt;br /&gt;
May be used to change some colors in an image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~RC(''' ''source color palette'' '''&amp;gt;''' ''color range ID'' ''')'''&lt;br /&gt;
*''source color palette'' - the first parameter is a source color palette, usually magenta. Do not surround this parameter with quotes.&lt;br /&gt;
*''color range ID'' - this is the second parameter, signifying the ID of a color range defined in the file ''data/core/team-colors.cfg'' (or it may be a custom ID for a color range defined locally).  &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 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;
== 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;
=== Syntax ===&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;
== Flip Function ==&lt;br /&gt;
May be used to flip an image horizontally and/or vertically&lt;br /&gt;
=== Syntax ===&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 horizantally.&lt;br /&gt;
*if the argument list is empty, the image will only be flipped horizontally.&lt;br /&gt;
&lt;br /&gt;
== Greyscale Function ==&lt;br /&gt;
May be used to greyscale the image (turn to black and white)&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~GS( )'''&lt;br /&gt;
&lt;br /&gt;
== Crop Function ==&lt;br /&gt;
Extracts a rectangular section of an image file.&lt;br /&gt;
=== Syntax ===&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.&lt;br /&gt;
* ''height'': height of the selected region. Must be less than or equal to the original image's height.&lt;br /&gt;
&lt;br /&gt;
== Blit Function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Blit the parameter image on the main image. Example: peasant.png~BLIT(hat.png,30,10)&lt;br /&gt;
=== Syntax ===&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;
== Color-shift function ==&lt;br /&gt;
Performs simple per-channel color shifts by adding the arguments to the respective color channels.&lt;br /&gt;
=== Syntax ===&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;
== Lightmap color-shift function ==&lt;br /&gt;
{{DevFeature1.9}} 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;
=== Syntax ===&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 gray image (RGB = 128,128,128) and any non-gray 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;
== Image-scaling function ==&lt;br /&gt;
Scales a graphic up or down.&lt;br /&gt;
=== Syntax ===&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.&lt;br /&gt;
&lt;br /&gt;
== Opacity modifying function ==&lt;br /&gt;
Changes an image's opacity at render time.&lt;br /&gt;
=== Syntax ===&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;
== Blurring function ==&lt;br /&gt;
Blurs a graphic at render time using the same algorithm used for in-game dialogs.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~BL( ''radius'' )'''&lt;br /&gt;
&lt;br /&gt;
== Overlay function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Puts a time-of-day overlay on the image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~LIGHTEN()'''&lt;br /&gt;
&lt;br /&gt;
'''~DARKEN()'''&lt;br /&gt;
&lt;br /&gt;
== Background coloring function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Sets the color of all the (semi-)transparent pixels of the image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~BG(r,g,b)'''&lt;br /&gt;
&lt;br /&gt;
== Null function ==&lt;br /&gt;
Does nothing.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~NOP()'''&lt;br /&gt;
&lt;br /&gt;
== Precedence of Functions  ==&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 &amp;quot;units/elves-wood/fighter.png~CROP(0,0,20,20)~CROP(10,10,10,10)&amp;quot; would result in taking a crop of the rectangle x=20;y=20;w=40;h=40 and then taking a crop from ''that'' rectangle as x=10;y=10;w=10;h=10 resulting in the area x=30;y=30;w=10;h=10 from the original graphic.&lt;br /&gt;
&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=44424</id>
		<title>ImagePathFunctions</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=44424"/>
		<updated>2011-12-16T20:59:44Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Lightmap color-shift function */ add 1.9 tag to ~L()&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;
== 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;
=== Syntax ===&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;
== Re-Color Function ==&lt;br /&gt;
May be used to change some colors in an image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~RC(''' ''source color palette'' '''&amp;gt;''' ''color range ID'' ''')'''&lt;br /&gt;
*''source color palette'' - the first parameter is a source color palette, usually magenta. Do not surround this parameter with quotes.&lt;br /&gt;
*''color range ID'' - this is the second parameter, signifying the ID of a color range defined in the file ''data/core/team-colors.cfg'' (or it may be a custom ID for a color range defined locally).  &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 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;
== 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;
=== Syntax ===&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;
== Flip Function ==&lt;br /&gt;
May be used to flip an image horizontally and/or vertically&lt;br /&gt;
=== Syntax ===&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 horizantally.&lt;br /&gt;
*if the argument list is empty, the image will only be flipped horizontally.&lt;br /&gt;
&lt;br /&gt;
== Greyscale Function ==&lt;br /&gt;
May be used to greyscale the image (turn to black and white)&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~GS( )'''&lt;br /&gt;
&lt;br /&gt;
== Crop Function ==&lt;br /&gt;
Extracts a rectangular section of an image file.&lt;br /&gt;
=== Syntax ===&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.&lt;br /&gt;
* ''height'': height of the selected region. Must be less than or equal to the original image's height.&lt;br /&gt;
&lt;br /&gt;
== Blit Function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Blit the parameter image on the main image. Example: peasant.png~BLIT(hat.png,30,10)&lt;br /&gt;
=== Syntax ===&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;
== Color-shift function ==&lt;br /&gt;
Performs simple per-channel color shifts by adding the arguments to the respective color channels.&lt;br /&gt;
=== Syntax ===&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;
== Lightmap color-shift function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
&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;
=== Syntax ===&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 gray image (RGB = 128,128,128) and any non-gray 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;
== Image-scaling function ==&lt;br /&gt;
Scales a graphic up or down.&lt;br /&gt;
=== Syntax ===&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.&lt;br /&gt;
&lt;br /&gt;
== Opacity modifying function ==&lt;br /&gt;
Changes an image's opacity at render time.&lt;br /&gt;
=== Syntax ===&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;
== Blurring function ==&lt;br /&gt;
Blurs a graphic at render time using the same algorithm used for in-game dialogs.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~BL( ''radius'' )'''&lt;br /&gt;
&lt;br /&gt;
== Overlay function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Puts a time-of-day overlay on the image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~LIGHTEN()'''&lt;br /&gt;
&lt;br /&gt;
'''~DARKEN()'''&lt;br /&gt;
&lt;br /&gt;
== Background coloring function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Sets the color of all the (semi-)transparent pixels of the image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~BG(r,g,b)'''&lt;br /&gt;
&lt;br /&gt;
== Null function ==&lt;br /&gt;
Does nothing.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~NOP()'''&lt;br /&gt;
&lt;br /&gt;
== Precedence of Functions  ==&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 &amp;quot;units/elves-wood/fighter.png~CROP(0,0,20,20)~CROP(10,10,10,10)&amp;quot; would result in taking a crop of the rectangle x=20;y=20;w=40;h=40 and then taking a crop from ''that'' rectangle as x=10;y=10;w=10;h=10 resulting in the area x=30;y=30;w=10;h=10 from the original graphic.&lt;br /&gt;
&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=44423</id>
		<title>ImagePathFunctions</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=44423"/>
		<updated>2011-12-16T20:54:13Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Syntax */ remove incorrect mention about precedence&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;
== 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;
=== Syntax ===&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;
== Re-Color Function ==&lt;br /&gt;
May be used to change some colors in an image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~RC(''' ''source color palette'' '''&amp;gt;''' ''color range ID'' ''')'''&lt;br /&gt;
*''source color palette'' - the first parameter is a source color palette, usually magenta. Do not surround this parameter with quotes.&lt;br /&gt;
*''color range ID'' - this is the second parameter, signifying the ID of a color range defined in the file ''data/core/team-colors.cfg'' (or it may be a custom ID for a color range defined locally).  &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 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;
== 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;
=== Syntax ===&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;
== Flip Function ==&lt;br /&gt;
May be used to flip an image horizontally and/or vertically&lt;br /&gt;
=== Syntax ===&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 horizantally.&lt;br /&gt;
*if the argument list is empty, the image will only be flipped horizontally.&lt;br /&gt;
&lt;br /&gt;
== Greyscale Function ==&lt;br /&gt;
May be used to greyscale the image (turn to black and white)&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~GS( )'''&lt;br /&gt;
&lt;br /&gt;
== Crop Function ==&lt;br /&gt;
Extracts a rectangular section of an image file.&lt;br /&gt;
=== Syntax ===&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.&lt;br /&gt;
* ''height'': height of the selected region. Must be less than or equal to the original image's height.&lt;br /&gt;
&lt;br /&gt;
== Blit Function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Blit the parameter image on the main image. Example: peasant.png~BLIT(hat.png,30,10)&lt;br /&gt;
=== Syntax ===&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;
== Color-shift function ==&lt;br /&gt;
Performs simple per-channel color shifts by adding the arguments to the respective color channels.&lt;br /&gt;
=== Syntax ===&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;
== Lightmap color-shift function ==&lt;br /&gt;
Perform 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;
=== Syntax ===&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 gray image (RGB = 128,128,128) and any non-gray 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;
== Image-scaling function ==&lt;br /&gt;
Scales a graphic up or down.&lt;br /&gt;
=== Syntax ===&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.&lt;br /&gt;
&lt;br /&gt;
== Opacity modifying function ==&lt;br /&gt;
Changes an image's opacity at render time.&lt;br /&gt;
=== Syntax ===&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;
== Blurring function ==&lt;br /&gt;
Blurs a graphic at render time using the same algorithm used for in-game dialogs.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~BL( ''radius'' )'''&lt;br /&gt;
&lt;br /&gt;
== Overlay function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Puts a time-of-day overlay on the image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~LIGHTEN()'''&lt;br /&gt;
&lt;br /&gt;
'''~DARKEN()'''&lt;br /&gt;
&lt;br /&gt;
== Background coloring function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Sets the color of all the (semi-)transparent pixels of the image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~BG(r,g,b)'''&lt;br /&gt;
&lt;br /&gt;
== Null function ==&lt;br /&gt;
Does nothing.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~NOP()'''&lt;br /&gt;
&lt;br /&gt;
== Precedence of Functions  ==&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 &amp;quot;units/elves-wood/fighter.png~CROP(0,0,20,20)~CROP(10,10,10,10)&amp;quot; would result in taking a crop of the rectangle x=20;y=20;w=40;h=40 and then taking a crop from ''that'' rectangle as x=10;y=10;w=10;h=10 resulting in the area x=30;y=30;w=10;h=10 from the original graphic.&lt;br /&gt;
&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=44422</id>
		<title>ImagePathFunctions</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=44422"/>
		<updated>2011-12-16T20:53:29Z</updated>

		<summary type="html">&lt;p&gt;Alink: Document ~L() function&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;
== 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;
=== Syntax ===&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;
== Re-Color Function ==&lt;br /&gt;
May be used to change some colors in an image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~RC(''' ''source color palette'' '''&amp;gt;''' ''color range ID'' ''')'''&lt;br /&gt;
*''source color palette'' - the first parameter is a source color palette, usually magenta. Do not surround this parameter with quotes.&lt;br /&gt;
*''color range ID'' - this is the second parameter, signifying the ID of a color range defined in the file ''data/core/team-colors.cfg'' (or it may be a custom ID for a color range defined locally).  &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 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;
== 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;
=== Syntax ===&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;
== Flip Function ==&lt;br /&gt;
May be used to flip an image horizontally and/or vertically&lt;br /&gt;
=== Syntax ===&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 horizantally.&lt;br /&gt;
*if the argument list is empty, the image will only be flipped horizontally.&lt;br /&gt;
&lt;br /&gt;
== Greyscale Function ==&lt;br /&gt;
May be used to greyscale the image (turn to black and white)&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~GS( )'''&lt;br /&gt;
&lt;br /&gt;
== Crop Function ==&lt;br /&gt;
Extracts a rectangular section of an image file.&lt;br /&gt;
=== Syntax ===&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.&lt;br /&gt;
* ''height'': height of the selected region. Must be less than or equal to the original image's height.&lt;br /&gt;
&lt;br /&gt;
== Blit Function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Blit the parameter image on the main image. Example: peasant.png~BLIT(hat.png,30,10)&lt;br /&gt;
=== Syntax ===&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;
== Color-shift function ==&lt;br /&gt;
Performs simple per-channel color shifts by adding the arguments to the respective color channels.&lt;br /&gt;
=== Syntax ===&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;
Any color-shift is performed before changing opacity or desaturating the graphic (see ~O() and ~GS()).&lt;br /&gt;
&lt;br /&gt;
== Lightmap color-shift function ==&lt;br /&gt;
Perform 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;
=== Syntax ===&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 gray image (RGB = 128,128,128) and any non-gray 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;
== Image-scaling function ==&lt;br /&gt;
Scales a graphic up or down.&lt;br /&gt;
=== Syntax ===&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.&lt;br /&gt;
&lt;br /&gt;
== Opacity modifying function ==&lt;br /&gt;
Changes an image's opacity at render time.&lt;br /&gt;
=== Syntax ===&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;
== Blurring function ==&lt;br /&gt;
Blurs a graphic at render time using the same algorithm used for in-game dialogs.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~BL( ''radius'' )'''&lt;br /&gt;
&lt;br /&gt;
== Overlay function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Puts a time-of-day overlay on the image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~LIGHTEN()'''&lt;br /&gt;
&lt;br /&gt;
'''~DARKEN()'''&lt;br /&gt;
&lt;br /&gt;
== Background coloring function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Sets the color of all the (semi-)transparent pixels of the image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~BG(r,g,b)'''&lt;br /&gt;
&lt;br /&gt;
== Null function ==&lt;br /&gt;
Does nothing.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~NOP()'''&lt;br /&gt;
&lt;br /&gt;
== Precedence of Functions  ==&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 &amp;quot;units/elves-wood/fighter.png~CROP(0,0,20,20)~CROP(10,10,10,10)&amp;quot; would result in taking a crop of the rectangle x=20;y=20;w=40;h=40 and then taking a crop from ''that'' rectangle as x=10;y=10;w=10;h=10 resulting in the area x=30;y=30;w=10;h=10 from the original graphic.&lt;br /&gt;
&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=TerrainGraphicsWML&amp;diff=38098</id>
		<title>TerrainGraphicsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=TerrainGraphicsWML&amp;diff=38098"/>
		<updated>2010-08-29T12:44:18Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* The toplevel [terrain_graphics] tag */  update [variant] for 1.9&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
&lt;br /&gt;
{{Needs update}}&lt;br /&gt;
&lt;br /&gt;
== The toplevel [terrain_graphics] tag ==&lt;br /&gt;
&lt;br /&gt;
For information about the multi-hex tiling system, see [[MultiHexTutorial]]&lt;br /&gt;
&lt;br /&gt;
In terrain graphics, all images are assumed to be .png and relative to images/terrain/.&lt;br /&gt;
For example, writing 'image=grassland' means that the image file is images/terrain/grassland.png.&lt;br /&gt;
&lt;br /&gt;
The multi-hex tiling system adds a new top-level element to WML, [terrain_graphics].&lt;br /&gt;
A building rule is used to specify images to place when terrains are in a certain formation.&lt;br /&gt;
When a building rule is applied to a map, it is applied once to each coordinate on the map;&lt;br /&gt;
when it is applied to a coordinate then that coordinate is considered the ''base''.&lt;br /&gt;
All locations in '''[terrain_graphics]''' are relative to the base.&lt;br /&gt;
&lt;br /&gt;
The following keys/tags are recognized:&lt;br /&gt;
* '''[tile]''': whenever a building rule is applied, each [tile] tag corresponds to a tile on the map. The corresponding tile must match each condition contained in [tile] for the [tile] tag to match. All [tile] tags must match in order for a rule to match. If the rule for a [tile] tag is applied, each action within [tile] will be executed on the tile corresponding to that [tile] tag&lt;br /&gt;
** '''x''','''y''': standard coordinates - the location of the corresponding tile relative to the base.&lt;br /&gt;
** '''pos''': a shortcut to specifying coordinates. Used in combination with ''map''&lt;br /&gt;
** '''type''': a comma-separated list of terrain codes (See [[TerrainWML]], data/terrain.cfg). In order for a tile to match this condition, it must be one of the terrains specified. However, if the string is preceded by &amp;quot;!&amp;quot;, the terrain must not be listed in order to match. If the string is '*', or if it is empty, any tile matches.&lt;br /&gt;
** '''set_flag''': a comma-separated list of strings. Attaches flags from that list to the corresponding tile if the rule matches. The only difference a flag makes is being detected by ''has_flag'' and ''no_flag'' in [tile]. This is determined by the order of the [terrain_graphics] tags; a tag after another one cannot influence it. See also ''has_flag'', ''no_flag''&lt;br /&gt;
** '''has_flag''': a comma-separated list of strings. Matches if all flags in that list are attached to the corresponding tile. Flags are attached using the ''set_flag'' key.&lt;br /&gt;
** '''no_flag''': a comma-separated list of strings. Matches if none of the flags in that list are attached to the corresponding tile. Flags are attached using the ''set_flag'' key.&lt;br /&gt;
** '''set_no_flag''': {{DevFeature1.9}} helper combining ''set_flag'' and ''no_flag''. Same effect as using them with the same flags. Added because it's the most common use; ''set_flag'' or ''no_flag'' can still be used to add flags in one group only. &lt;br /&gt;
** '''[image]''': images specified as a subtag to '''[tile]''' sets the images for a single tile.&lt;br /&gt;
*** '''layer''': an integer, usually negative. The more negative it is, the earlier it is drawn, and thus the farther &amp;quot;back&amp;quot; it is when compositing the terrain images together.&lt;br /&gt;
*** '''name''': the image to apply on this tile if appropriate&lt;br /&gt;
*** '''base''': specifies the point at which the image is considered to be for layering purposes.  ''base'' is specified as '''x,y''' where x and y indicate distances in pixels from the top-left corner of the '''image'''. This is translated to a certain pixel on the map, and all images with the ''base'' attribute are drawn from top-to-bottom in terms of these specified pixel positions '''on the map'''.&lt;br /&gt;
*** '''[variant]''': an alternate image to use for differing times of day&lt;br /&gt;
**** '''tod''': the time of day for which this variant applies. {{DevFeature1.9}} Accepts a comma separated list of times of day.&lt;br /&gt;
**** '''name''': the image to apply on this tile if appropriate&lt;br /&gt;
* '''[image]''': image may also be used directly in the rule, to specify multihex images.&lt;br /&gt;
* '''probability''': the percent probability for each position that if the position matches, then the rule will be applied. Default is 100(%).  See [[TerrainGraphicsTutorial#Cumulative_Probabilities|Cumulative_Probabilities]] for mathematical complications.&lt;br /&gt;
* '''rotations''': 6 comma(''',''') separated input strings. A rule that contains this key is not actually checked against the terrain; it instead is used as a template to create 6 new rules, each corresponding to a rotated version of the current rule. Whenever a rotated version is applied, instances of @(at-sign)R0, @R1, ... @R6 in attributes in the [terrain_graphics] tag will be adjusted by the corresponding amount and replaced with the letters specified by that numbered rotation in the ''rotations'' list. Each value corresponds to the rotated version that is -Pi/3 (60° clockwise) from the previous version; the first value corresponds to the unrotated version.&amp;lt;br&amp;gt;For example, if '''rotations=n,ne,se,s,sw,nw''' and it is being rotated 120°, then &amp;quot;@R0&amp;quot;-&amp;gt;&amp;quot;@R2&amp;quot;-&amp;gt;&amp;quot;se&amp;quot;, &amp;quot;@R1&amp;quot;-&amp;gt;&amp;quot;@R3&amp;quot;-&amp;gt;&amp;quot;s&amp;quot;, ... &amp;quot;@R6&amp;quot;-&amp;gt;&amp;quot;@R1&amp;quot;-&amp;gt;&amp;quot;ne&amp;quot;.&amp;lt;br&amp;gt;Basically the important thing is that this lets the rule be applied in any of the six hex-directions, allowing you to adjust the name of the image files automatically.&lt;br /&gt;
* '''set_flag''','''has_flag''', '''no_flag''': shortcuts to putting these in the [tile] subtags; unbound attributes will apply to all [tile] subtags.&lt;br /&gt;
* '''map''': a shortcut for defining [tile] tags with ''type'' conditions. Inputs a multi-line string value visually describing the map. The lines are cut into words of 4 characters, which correspond to [tile] tags. The line types alternate between lines corresponding to relatively even-abciss tiles and lines preceded by two spaces corresponding to relatively odd-abciss tiles. Every two lines represent 1 row on the map.&lt;br /&gt;
&lt;br /&gt;
=== Words ===&lt;br /&gt;
&lt;br /&gt;
A ''word'' is a 4-character shortcut to a [tile] tag. There are different types of words:&lt;br /&gt;
* Usually a word is interpreted as being the input to the ''type'' key of the corresponding [tile]. That is, it creates a [tile] with the attribute '''type=''word'''''.&lt;br /&gt;
* A word can also be a digit followed by 3 spaces. In this case, it is a shortcut to the [tile] with the attribute '''pos=''word'''''. This is called ''anchoring''.&lt;br /&gt;
&lt;br /&gt;
In 1.3, the format is basically the same but the following changes are made&lt;br /&gt;
* A ''word'' no longer needs to be 4 characters but is comma separated and spaces and tabs may be used for padding&lt;br /&gt;
* The 2 spaces for odd lines in no longer used, instead a leading comma is used on these lines (before the comma spaces and tabs are allowed for padding)&lt;br /&gt;
* A ''word'' may only be a dot a star or an anchor. The terrain letter format was not used and hard to support in the new engine, so that support is dropped.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
To define a north-south 2-tile mountain, the following syntax can be used:&lt;br /&gt;
&lt;br /&gt;
 [terrain_graphics]&lt;br /&gt;
     [tile]&lt;br /&gt;
         x=0&lt;br /&gt;
         y=0&lt;br /&gt;
         type=Mm&lt;br /&gt;
     [/tile]&lt;br /&gt;
     [tile]&lt;br /&gt;
         x=0&lt;br /&gt;
         y=1&lt;br /&gt;
         type=Mm&lt;br /&gt;
     [/tile]&lt;br /&gt;
     no_flag=&amp;quot;mountain-tile&amp;quot;&lt;br /&gt;
     set_flag=&amp;quot;mountain-tile&amp;quot;&lt;br /&gt;
     image_background=&amp;quot;mountain-n-s&amp;quot;&lt;br /&gt;
 [/terrain_graphics]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This represents a tile T, and its 6 adjacent tiles A, in the map notation.&lt;br /&gt;
&lt;br /&gt;
 .,   .,   .,   .&lt;br /&gt;
 ,  .,   A,   .,   .&lt;br /&gt;
 .,   A,   A,   .&lt;br /&gt;
 ,  .,   T,   .,   .&lt;br /&gt;
 .,   A,   A,   .&lt;br /&gt;
 ,  .,   A,   .,   .&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[MultiHexTutorial]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
* Ayin's [http://www.anathas.org/ayin/wesnoth/doc/terrain_graphics_wml detailed Terrain Graphics document]&lt;br /&gt;
* [[TerrainGraphicsTutorial]] - First half of Ayin's document, wikified&lt;br /&gt;
* [[TerrainGraphicsReference]] - Second (partial) half of Ayin's document, wikified&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=38071</id>
		<title>ImagePathFunctions</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=38071"/>
		<updated>2010-08-27T19:57:27Z</updated>

		<summary type="html">&lt;p&gt;Alink: Document ~BLIT&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;
== 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;
=== Syntax ===&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;
== Re-Color Function ==&lt;br /&gt;
May be used to change some colors in an image.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~RC(''' ''source color palette'' '''&amp;gt;''' ''color range ID'' ''')'''&lt;br /&gt;
*''source color palette'' - the first parameter is a source color palette, usually magenta. Do not surround this parameter with quotes.&lt;br /&gt;
*''color range ID'' - this is the second parameter, signifying the ID of a color range defined in the file ''data/core/team-colors.cfg'' (or it may be a custom ID for a color range defined locally).  &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 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;
== 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;
=== Syntax ===&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;
== Flip Function ==&lt;br /&gt;
May be used to flip an image horizontally and/or vertically&lt;br /&gt;
=== Syntax ===&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 horizantally.&lt;br /&gt;
*if the argument list is empty, the image will only be flipped horizantally.&lt;br /&gt;
&lt;br /&gt;
== Greyscale Function ==&lt;br /&gt;
May be used to greyscale the image (turn to black and white)&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~GS( )'''&lt;br /&gt;
&lt;br /&gt;
== Crop Function ==&lt;br /&gt;
Extracts a rectangular section of an image file.&lt;br /&gt;
=== Syntax ===&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.&lt;br /&gt;
* ''height'': height of the selected region. Must be less than or equal to the original image's height.&lt;br /&gt;
&lt;br /&gt;
== Blit Function ==&lt;br /&gt;
{{DevFeature1.9}}&lt;br /&gt;
Blit the parameter image on the main image. Example: peasant.png~BLIT(hat.png,30,10)&lt;br /&gt;
=== Syntax ===&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;
&lt;br /&gt;
== Color-shift function ==&lt;br /&gt;
Performs simple per-channel color shifts by adding the arguments to the respective color channels.&lt;br /&gt;
=== Syntax ===&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;
Any color-shift is performed before changing opacity or desaturating the graphic (see ~O() and ~GS()).&lt;br /&gt;
&lt;br /&gt;
== Image-scaling function ==&lt;br /&gt;
Scales a graphic up or down.&lt;br /&gt;
=== Syntax ===&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.&lt;br /&gt;
&lt;br /&gt;
== Opacity modifying function ==&lt;br /&gt;
Changes an image's opacity at render time.&lt;br /&gt;
=== Syntax ===&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;
== Blurring function ==&lt;br /&gt;
Blurs a graphic at render time using the same algorithm used for in-game dialogs.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~BL( ''radius'' )'''&lt;br /&gt;
&lt;br /&gt;
== Null function ==&lt;br /&gt;
Does nothing.&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
'''~NOP()'''&lt;br /&gt;
&lt;br /&gt;
== Precedence of Functions  ==&lt;br /&gt;
&lt;br /&gt;
All functions are applied in left-to-right order, with the exception of RC() and TC() which are applied always before any other functions.&lt;br /&gt;
That is, stuff like &amp;quot;units/elves-wood/fighter.png~CROP(0,0,20,20)~CROP(10,10,10,10)&amp;quot; would result in taking a crop of the rectangle x=20;y=20;w=40;h=40 and then taking a crop from ''that'' rectangle as x=10;y=10;w=10;h=10 resulting in the area x=30;y=30;w=10;h=10 from the original graphic.&lt;br /&gt;
&lt;br /&gt;
[[Category:WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=DeveloperGuide&amp;diff=37762</id>
		<title>DeveloperGuide</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=DeveloperGuide&amp;diff=37762"/>
		<updated>2010-08-01T14:47:47Z</updated>

		<summary type="html">&lt;p&gt;Alink: Improve svn commits recommandations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Commits ==&lt;br /&gt;
* Setting up developer SVN access: [[WesnothSVN#Commit_access]]&lt;br /&gt;
* Register to commit mailing list: https://mail.gna.org/listinfo/wesnoth-commits or get the list moderator to approve commit messages from you otherwise&lt;br /&gt;
* Trunk should compile and work after commit&lt;br /&gt;
* Few small commits are better than a big one (hard to review), so when possible split it in working parts with info about where you are going&lt;br /&gt;
* Be on #wesnoth-dev IRC channel and coordinate with other developers. Bots report commits and some devs may ask you a question about it.&lt;br /&gt;
* Don't forget changelogs: ''changelog'' for any (significant enough) changes and ''player_changelog'' for changes visible to users.&lt;br /&gt;
* Always check your changes before commit (use ''svn diff'')&lt;br /&gt;
* Commit message:&lt;br /&gt;
** Mention any change, especially if some are unrelated to the main one (but you should use separated commits for this).&lt;br /&gt;
** Mention &amp;quot;bug #1234&amp;quot; for automatic cc to that gna bug number&lt;br /&gt;
** Mention a developer's IRC name will ping him on IRC (when the bot report it), and if he's not there, he may see it on the IRC logs&lt;br /&gt;
== Bugs management ==&lt;br /&gt;
* Change status of fixed bugs to &amp;quot;Fixed&amp;quot; when committed&lt;br /&gt;
* Change status of fixed bugs to &amp;quot;Closed&amp;quot; when released, see [[ReportingBugs#Bug_protocol]] for details&lt;br /&gt;
* Check if there is new bugs relevant to your code and if any, assign them to you.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Project#Developers]]&lt;br /&gt;
* [[WesnothSVN]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=37761</id>
		<title>WesnothRepository</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WesnothRepository&amp;diff=37761"/>
		<updated>2010-08-01T14:22:46Z</updated>

		<summary type="html">&lt;p&gt;Alink: add a commit access section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Compiling Wesnoth}}&lt;br /&gt;
==  SVN ==&lt;br /&gt;
&lt;br /&gt;
Wesnoth development currently uses the [[SVN|Subversion]] software tool to keep developers in sync with each other. See the [http://svnbook.org SVN book] for more on how to use Subversion.&lt;br /&gt;
&lt;br /&gt;
==  Browse the code  ==&lt;br /&gt;
&lt;br /&gt;
There are currently two main streams of development: trunk (1.9.x) and stable branch (1.8.x). Most other branches are only used for a short time to do some testing without disturbing the main development. You can use your web browser to navigate through the source code:&lt;br /&gt;
&lt;br /&gt;
http://svn.gna.org/viewcvs/wesnoth/&lt;br /&gt;
&lt;br /&gt;
==  Download  ==&lt;br /&gt;
&lt;br /&gt;
To check out trunk into a directory ''wesnoth'' (about 400 MB to download and 960 MB disk space, including .svn dirs, required as of March 30th 2009):&lt;br /&gt;
 svn co http://svn.gna.org/svn/wesnoth/trunk wesnoth&lt;br /&gt;
&lt;br /&gt;
Or, to check out the 1.8 branch (about 400 MB to download and 960 MB to store on disk as of March 30th 2009) into a directory ''wesnoth-1.8'':&lt;br /&gt;
 svn co http://svn.gna.org/svn/wesnoth/branches/1.8 wesnoth-1.8&lt;br /&gt;
&lt;br /&gt;
More info on the repository: https://gna.org/svn/?group=wesnoth&lt;br /&gt;
&lt;br /&gt;
==  Commit access  ==&lt;br /&gt;
&lt;br /&gt;
For commit access, you must have a developer account on gna, it must be registered as part of the Wesnoth group, and you must check out with&lt;br /&gt;
 svn co svn+ssh://gna_username@svn.gna.org/svn/wesnoth/trunk wesnoth&lt;br /&gt;
&lt;br /&gt;
==  Update  ==&lt;br /&gt;
&lt;br /&gt;
Do this from inside the ''wesnoth'' or ''wesnoth-1.8'' directory where you checked out the repository:&lt;br /&gt;
 svn update&lt;br /&gt;
&lt;br /&gt;
The following is only relevant when relying on the autotools based build system. This is not needed when relying on CMake or SCons as build environment:&lt;br /&gt;
&lt;br /&gt;
Note that when you update from Subversion, you should always run 'autogen.sh' if ''configure.ac'' or any of the ''Makefile.am'' files were changed.  It is safest to 'make clean' before updating, then update and finally run 'autogen.sh', 'configure' and 'make'.&lt;br /&gt;
&lt;br /&gt;
You may be able to skip the 'autogen.sh' and the 'make clean' if the makefiles and ''configure.ac'' have not changed.  If only minor changes were made then even the 'configure' step is optional.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[CompilingWesnoth]]&lt;br /&gt;
* [[UsingAutotools]]&lt;br /&gt;
* [[SVN_on_Windows]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Project&amp;diff=37756</id>
		<title>Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Project&amp;diff=37756"/>
		<updated>2010-08-01T13:56:00Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Developers */ remove shorcut to a bad page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Battle for Wesnoth is a [http://gna.org/projects/wesnoth/ Gna! project]. See also the [http://freshmeat.net/projects/wesnoth/ project] and [http://freshmeat.net/project-stats/view/38720/ stats] at [http://www.freshmeat.net/ freshmeat].&lt;br /&gt;
&lt;br /&gt;
There are also Wesnoth pages in other languages:&lt;br /&gt;
French ([http://tournoiswesnoth.frbb.net/ 1], [http://wesnothfr.ww7.be/ 2]),&lt;br /&gt;
[http://wesnoth.fsf.hu/ Hungarian],&lt;br /&gt;
[http://wikiwiki.jp/wesnoth/ Japanese],&lt;br /&gt;
[http://perso.wanadoo.es/wesnoth/ Spanish],&lt;br /&gt;
[http://www.wesnoth.cn Chinese],&lt;br /&gt;
[http://www.wesnoth.com.pl Polish],&lt;br /&gt;
[http://wif.altervista.org/index.php Italian].&lt;br /&gt;
&lt;br /&gt;
== Artists ==&lt;br /&gt;
Graphic artists and musicians usually meet on the [http://www.wesnoth.org/forum/ forum].&lt;br /&gt;
* [http://www.wesnoth.org/forum/viewforum.php?f=9 Artwork development forum]&lt;br /&gt;
* [http://www.wesnoth.org/forum/viewforum.php?f=14 Music development forum]&lt;br /&gt;
&lt;br /&gt;
== Developers ==&lt;br /&gt;
Coders can help fixing [http://bugs.wesnoth.org bugs], adding new features...&lt;br /&gt;
* [[CodingStandards]]&lt;br /&gt;
* [[PatchSubmissionGuidelines]]&lt;br /&gt;
* [[Roadmap]]&lt;br /&gt;
* [http://devdocs.wesnoth.org/ Documentation] - generated and uploaded once a day.&lt;br /&gt;
* [[WesnothSVN]]&lt;br /&gt;
* [[DeveloperResources]]&lt;br /&gt;
&lt;br /&gt;
== Translators ==&lt;br /&gt;
* [[WesnothTranslations]]&lt;br /&gt;
* [http://gettext.wesnoth.org Statistics]&lt;br /&gt;
* [[WesCamp|Translating User made Campaigns (featuring wescamp-i18n)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=TerrainGraphicsWML&amp;diff=37755</id>
		<title>TerrainGraphicsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=TerrainGraphicsWML&amp;diff=37755"/>
		<updated>2010-08-01T13:54:50Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* The toplevel [terrain_graphics] tag */ mark set_no_flag as 1.9 only&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
&lt;br /&gt;
{{Needs update}}&lt;br /&gt;
&lt;br /&gt;
== The toplevel [terrain_graphics] tag ==&lt;br /&gt;
&lt;br /&gt;
For information about the multi-hex tiling system, see [[MultiHexTutorial]]&lt;br /&gt;
&lt;br /&gt;
In terrain graphics, all images are assumed to be .png and relative to images/terrain/.&lt;br /&gt;
For example, writing 'image=grassland' means that the image file is images/terrain/grassland.png.&lt;br /&gt;
&lt;br /&gt;
The multi-hex tiling system adds a new top-level element to WML, [terrain_graphics].&lt;br /&gt;
A building rule is used to specify images to place when terrains are in a certain formation.&lt;br /&gt;
When a building rule is applied to a map, it is applied once to each coordinate on the map;&lt;br /&gt;
when it is applied to a coordinate then that coordinate is considered the ''base''.&lt;br /&gt;
All locations in '''[terrain_graphics]''' are relative to the base.&lt;br /&gt;
&lt;br /&gt;
The following keys/tags are recognized:&lt;br /&gt;
* '''[tile]''': whenever a building rule is applied, each [tile] tag corresponds to a tile on the map. The corresponding tile must match each condition contained in [tile] for the [tile] tag to match. All [tile] tags must match in order for a rule to match. If the rule for a [tile] tag is applied, each action within [tile] will be executed on the tile corresponding to that [tile] tag&lt;br /&gt;
** '''x''','''y''': standard coordinates - the location of the corresponding tile relative to the base.&lt;br /&gt;
** '''pos''': a shortcut to specifying coordinates. Used in combination with ''map''&lt;br /&gt;
** '''type''': a comma-separated list of terrain codes (See [[TerrainWML]], data/terrain.cfg). In order for a tile to match this condition, it must be one of the terrains specified. However, if the string is preceded by &amp;quot;!&amp;quot;, the terrain must not be listed in order to match. If the string is '*', or if it is empty, any tile matches.&lt;br /&gt;
** '''set_flag''': a comma-separated list of strings. Attaches flags from that list to the corresponding tile if the rule matches. The only difference a flag makes is being detected by ''has_flag'' and ''no_flag'' in [tile]. This is determined by the order of the [terrain_graphics] tags; a tag after another one cannot influence it. See also ''has_flag'', ''no_flag''&lt;br /&gt;
** '''has_flag''': a comma-separated list of strings. Matches if all flags in that list are attached to the corresponding tile. Flags are attached using the ''set_flag'' key.&lt;br /&gt;
** '''no_flag''': a comma-separated list of strings. Matches if none of the flags in that list are attached to the corresponding tile. Flags are attached using the ''set_flag'' key.&lt;br /&gt;
** '''set_no_flag''': {{DevFeature1.9}} helper combining ''set_flag'' and ''no_flag''. Same effect as using them with the same flags. Added because it's the most common use; ''set_flag'' or ''no_flag'' can still be used to add flags in one group only. &lt;br /&gt;
** '''[image]''': images specified as a subtag to '''[tile]''' sets the images for a single tile.&lt;br /&gt;
*** '''layer''': an integer, usually negative. The more negative it is, the earlier it is drawn, and thus the farther &amp;quot;back&amp;quot; it is when compositing the terrain images together.&lt;br /&gt;
*** '''name''': the image to apply on this tile if appropriate&lt;br /&gt;
*** '''base''': specifies the point at which the image is considered to be for layering purposes.  ''base'' is specified as '''x,y''' where x and y indicate distances in pixels from the top-left corner of the '''image'''. This is translated to a certain pixel on the map, and all images with the ''base'' attribute are drawn from top-to-bottom in terms of these specified pixel positions '''on the map'''.&lt;br /&gt;
*** '''[variant]''': an alternate image to use for differing times of day&lt;br /&gt;
**** '''tod''': the time of day for which this variant applies&lt;br /&gt;
**** '''name''': the image to apply on this tile if appropriate&lt;br /&gt;
* '''[image]''': image may also be used directly in the rule, to specify multihex images.&lt;br /&gt;
* '''probability''': the percent probability for each position that if the position matches, then the rule will be applied. Default is 100(%).  See [[TerrainGraphicsTutorial#Cumulative_Probabilities|Cumulative_Probabilities]] for mathematical complications.&lt;br /&gt;
* '''rotations''': 6 comma(''',''') separated input strings. A rule that contains this key is not actually checked against the terrain; it instead is used as a template to create 6 new rules, each corresponding to a rotated version of the current rule. Whenever a rotated version is applied, instances of @(at-sign)R0, @R1, ... @R6 in attributes in the [terrain_graphics] tag will be adjusted by the corresponding amount and replaced with the letters specified by that numbered rotation in the ''rotations'' list. Each value corresponds to the rotated version that is -Pi/3 (60° clockwise) from the previous version; the first value corresponds to the unrotated version.&amp;lt;br&amp;gt;For example, if '''rotations=n,ne,se,s,sw,nw''' and it is being rotated 120°, then &amp;quot;@R0&amp;quot;-&amp;gt;&amp;quot;@R2&amp;quot;-&amp;gt;&amp;quot;se&amp;quot;, &amp;quot;@R1&amp;quot;-&amp;gt;&amp;quot;@R3&amp;quot;-&amp;gt;&amp;quot;s&amp;quot;, ... &amp;quot;@R6&amp;quot;-&amp;gt;&amp;quot;@R1&amp;quot;-&amp;gt;&amp;quot;ne&amp;quot;.&amp;lt;br&amp;gt;Basically the important thing is that this lets the rule be applied in any of the six hex-directions, allowing you to adjust the name of the image files automatically.&lt;br /&gt;
* '''set_flag''','''has_flag''', '''no_flag''': shortcuts to putting these in the [tile] subtags; unbound attributes will apply to all [tile] subtags.&lt;br /&gt;
* '''map''': a shortcut for defining [tile] tags with ''type'' conditions. Inputs a multi-line string value visually describing the map. The lines are cut into words of 4 characters, which correspond to [tile] tags. The line types alternate between lines corresponding to relatively even-abciss tiles and lines preceded by two spaces corresponding to relatively odd-abciss tiles. Every two lines represent 1 row on the map.&lt;br /&gt;
&lt;br /&gt;
=== Words ===&lt;br /&gt;
&lt;br /&gt;
A ''word'' is a 4-character shortcut to a [tile] tag. There are different types of words:&lt;br /&gt;
* Usually a word is interpreted as being the input to the ''type'' key of the corresponding [tile]. That is, it creates a [tile] with the attribute '''type=''word'''''.&lt;br /&gt;
* A word can also be a digit followed by 3 spaces. In this case, it is a shortcut to the [tile] with the attribute '''pos=''word'''''. This is called ''anchoring''.&lt;br /&gt;
&lt;br /&gt;
In 1.3, the format is basically the same but the following changes are made&lt;br /&gt;
* A ''word'' no longer needs to be 4 characters but is comma separated and spaces and tabs may be used for padding&lt;br /&gt;
* The 2 spaces for odd lines in no longer used, instead a leading comma is used on these lines (before the comma spaces and tabs are allowed for padding)&lt;br /&gt;
* A ''word'' may only be a dot a star or an anchor. The terrain letter format was not used and hard to support in the new engine, so that support is dropped.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
To define a north-south 2-tile mountain, the following syntax can be used:&lt;br /&gt;
&lt;br /&gt;
 [terrain_graphics]&lt;br /&gt;
     [tile]&lt;br /&gt;
         x=0&lt;br /&gt;
         y=0&lt;br /&gt;
         type=Mm&lt;br /&gt;
     [/tile]&lt;br /&gt;
     [tile]&lt;br /&gt;
         x=0&lt;br /&gt;
         y=1&lt;br /&gt;
         type=Mm&lt;br /&gt;
     [/tile]&lt;br /&gt;
     no_flag=&amp;quot;mountain-tile&amp;quot;&lt;br /&gt;
     set_flag=&amp;quot;mountain-tile&amp;quot;&lt;br /&gt;
     image_background=&amp;quot;mountain-n-s&amp;quot;&lt;br /&gt;
 [/terrain_graphics]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This represents a tile T, and its 6 adjacent tiles A, in the map notation.&lt;br /&gt;
&lt;br /&gt;
 .,   .,   .,   .&lt;br /&gt;
 ,  .,   A,   .,   .&lt;br /&gt;
 .,   A,   A,   .&lt;br /&gt;
 ,  .,   T,   .,   .&lt;br /&gt;
 .,   A,   A,   .&lt;br /&gt;
 ,  .,   A,   .,   .&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[MultiHexTutorial]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
* Ayin's [http://www.anathas.org/ayin/wesnoth/doc/terrain_graphics_wml detailed Terrain Graphics document]&lt;br /&gt;
* [[TerrainGraphicsTutorial]] - First half of Ayin's document, wikified&lt;br /&gt;
* [[TerrainGraphicsReference]] - Second (partial) half of Ayin's document, wikified&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=TerrainGraphicsWML&amp;diff=37751</id>
		<title>TerrainGraphicsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=TerrainGraphicsWML&amp;diff=37751"/>
		<updated>2010-07-31T17:49:37Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* The toplevel [terrain_graphics] tag */ Document set_no flag and update flag keys&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
&lt;br /&gt;
{{Needs update}}&lt;br /&gt;
&lt;br /&gt;
== The toplevel [terrain_graphics] tag ==&lt;br /&gt;
&lt;br /&gt;
For information about the multi-hex tiling system, see [[MultiHexTutorial]]&lt;br /&gt;
&lt;br /&gt;
In terrain graphics, all images are assumed to be .png and relative to images/terrain/.&lt;br /&gt;
For example, writing 'image=grassland' means that the image file is images/terrain/grassland.png.&lt;br /&gt;
&lt;br /&gt;
The multi-hex tiling system adds a new top-level element to WML, [terrain_graphics].&lt;br /&gt;
A building rule is used to specify images to place when terrains are in a certain formation.&lt;br /&gt;
When a building rule is applied to a map, it is applied once to each coordinate on the map;&lt;br /&gt;
when it is applied to a coordinate then that coordinate is considered the ''base''.&lt;br /&gt;
All locations in '''[terrain_graphics]''' are relative to the base.&lt;br /&gt;
&lt;br /&gt;
The following keys/tags are recognized:&lt;br /&gt;
* '''[tile]''': whenever a building rule is applied, each [tile] tag corresponds to a tile on the map. The corresponding tile must match each condition contained in [tile] for the [tile] tag to match. All [tile] tags must match in order for a rule to match. If the rule for a [tile] tag is applied, each action within [tile] will be executed on the tile corresponding to that [tile] tag&lt;br /&gt;
** '''x''','''y''': standard coordinates - the location of the corresponding tile relative to the base.&lt;br /&gt;
** '''pos''': a shortcut to specifying coordinates. Used in combination with ''map''&lt;br /&gt;
** '''type''': a comma-separated list of terrain codes (See [[TerrainWML]], data/terrain.cfg). In order for a tile to match this condition, it must be one of the terrains specified. However, if the string is preceded by &amp;quot;!&amp;quot;, the terrain must not be listed in order to match. If the string is '*', or if it is empty, any tile matches.&lt;br /&gt;
** '''set_flag''': a comma-separated list of strings. Attaches flags from that list to the corresponding tile if the rule matches. The only difference a flag makes is being detected by ''has_flag'' and ''no_flag'' in [tile]. This is determined by the order of the [terrain_graphics] tags; a tag after another one cannot influence it. See also ''has_flag'', ''no_flag''&lt;br /&gt;
** '''has_flag''': a comma-separated list of strings. Matches if all flags in that list are attached to the corresponding tile. Flags are attached using the ''set_flag'' key.&lt;br /&gt;
** '''no_flag''': a comma-separated list of strings. Matches if none of the flags in that list are attached to the corresponding tile. Flags are attached using the ''set_flag'' key.&lt;br /&gt;
** '''set_no_flag''': helper combining ''set_flag'' and ''no_flag''. Same effect as using them with the same flags. Added because it's the most common use; ''set_flag'' or ''no_flag'' can still be used to add flags in one group only. &lt;br /&gt;
** '''[image]''': images specified as a subtag to '''[tile]''' sets the images for a single tile.&lt;br /&gt;
*** '''layer''': an integer, usually negative. The more negative it is, the earlier it is drawn, and thus the farther &amp;quot;back&amp;quot; it is when compositing the terrain images together.&lt;br /&gt;
*** '''name''': the image to apply on this tile if appropriate&lt;br /&gt;
*** '''base''': specifies the point at which the image is considered to be for layering purposes.  ''base'' is specified as '''x,y''' where x and y indicate distances in pixels from the top-left corner of the '''image'''. This is translated to a certain pixel on the map, and all images with the ''base'' attribute are drawn from top-to-bottom in terms of these specified pixel positions '''on the map'''.&lt;br /&gt;
*** '''[variant]''': an alternate image to use for differing times of day&lt;br /&gt;
**** '''tod''': the time of day for which this variant applies&lt;br /&gt;
**** '''name''': the image to apply on this tile if appropriate&lt;br /&gt;
* '''[image]''': image may also be used directly in the rule, to specify multihex images.&lt;br /&gt;
* '''probability''': the percent probability for each position that if the position matches, then the rule will be applied. Default is 100(%).  See [[TerrainGraphicsTutorial#Cumulative_Probabilities|Cumulative_Probabilities]] for mathematical complications.&lt;br /&gt;
* '''rotations''': 6 comma(''',''') separated input strings. A rule that contains this key is not actually checked against the terrain; it instead is used as a template to create 6 new rules, each corresponding to a rotated version of the current rule. Whenever a rotated version is applied, instances of @(at-sign)R0, @R1, ... @R6 in attributes in the [terrain_graphics] tag will be adjusted by the corresponding amount and replaced with the letters specified by that numbered rotation in the ''rotations'' list. Each value corresponds to the rotated version that is -Pi/3 (60° clockwise) from the previous version; the first value corresponds to the unrotated version.&amp;lt;br&amp;gt;For example, if '''rotations=n,ne,se,s,sw,nw''' and it is being rotated 120°, then &amp;quot;@R0&amp;quot;-&amp;gt;&amp;quot;@R2&amp;quot;-&amp;gt;&amp;quot;se&amp;quot;, &amp;quot;@R1&amp;quot;-&amp;gt;&amp;quot;@R3&amp;quot;-&amp;gt;&amp;quot;s&amp;quot;, ... &amp;quot;@R6&amp;quot;-&amp;gt;&amp;quot;@R1&amp;quot;-&amp;gt;&amp;quot;ne&amp;quot;.&amp;lt;br&amp;gt;Basically the important thing is that this lets the rule be applied in any of the six hex-directions, allowing you to adjust the name of the image files automatically.&lt;br /&gt;
* '''set_flag''','''has_flag''', '''no_flag''': shortcuts to putting these in the [tile] subtags; unbound attributes will apply to all [tile] subtags.&lt;br /&gt;
* '''map''': a shortcut for defining [tile] tags with ''type'' conditions. Inputs a multi-line string value visually describing the map. The lines are cut into words of 4 characters, which correspond to [tile] tags. The line types alternate between lines corresponding to relatively even-abciss tiles and lines preceded by two spaces corresponding to relatively odd-abciss tiles. Every two lines represent 1 row on the map.&lt;br /&gt;
&lt;br /&gt;
=== Words ===&lt;br /&gt;
&lt;br /&gt;
A ''word'' is a 4-character shortcut to a [tile] tag. There are different types of words:&lt;br /&gt;
* Usually a word is interpreted as being the input to the ''type'' key of the corresponding [tile]. That is, it creates a [tile] with the attribute '''type=''word'''''.&lt;br /&gt;
* A word can also be a digit followed by 3 spaces. In this case, it is a shortcut to the [tile] with the attribute '''pos=''word'''''. This is called ''anchoring''.&lt;br /&gt;
&lt;br /&gt;
In 1.3, the format is basically the same but the following changes are made&lt;br /&gt;
* A ''word'' no longer needs to be 4 characters but is comma separated and spaces and tabs may be used for padding&lt;br /&gt;
* The 2 spaces for odd lines in no longer used, instead a leading comma is used on these lines (before the comma spaces and tabs are allowed for padding)&lt;br /&gt;
* A ''word'' may only be a dot a star or an anchor. The terrain letter format was not used and hard to support in the new engine, so that support is dropped.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
To define a north-south 2-tile mountain, the following syntax can be used:&lt;br /&gt;
&lt;br /&gt;
 [terrain_graphics]&lt;br /&gt;
     [tile]&lt;br /&gt;
         x=0&lt;br /&gt;
         y=0&lt;br /&gt;
         type=Mm&lt;br /&gt;
     [/tile]&lt;br /&gt;
     [tile]&lt;br /&gt;
         x=0&lt;br /&gt;
         y=1&lt;br /&gt;
         type=Mm&lt;br /&gt;
     [/tile]&lt;br /&gt;
     no_flag=&amp;quot;mountain-tile&amp;quot;&lt;br /&gt;
     set_flag=&amp;quot;mountain-tile&amp;quot;&lt;br /&gt;
     image_background=&amp;quot;mountain-n-s&amp;quot;&lt;br /&gt;
 [/terrain_graphics]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This represents a tile T, and its 6 adjacent tiles A, in the map notation.&lt;br /&gt;
&lt;br /&gt;
 .,   .,   .,   .&lt;br /&gt;
 ,  .,   A,   .,   .&lt;br /&gt;
 .,   A,   A,   .&lt;br /&gt;
 ,  .,   T,   .,   .&lt;br /&gt;
 .,   A,   A,   .&lt;br /&gt;
 ,  .,   A,   .,   .&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[MultiHexTutorial]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
* Ayin's [http://www.anathas.org/ayin/wesnoth/doc/terrain_graphics_wml detailed Terrain Graphics document]&lt;br /&gt;
* [[TerrainGraphicsTutorial]] - First half of Ayin's document, wikified&lt;br /&gt;
* [[TerrainGraphicsReference]] - Second (partial) half of Ayin's document, wikified&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=CommandMode&amp;diff=37640</id>
		<title>CommandMode</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=CommandMode&amp;diff=37640"/>
		<updated>2010-07-19T14:38:01Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Command Mode */ show parameter of :turn and :turn_limit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Command Mode ==&lt;br /&gt;
&lt;br /&gt;
You can access command mode by typing ' ''':''' ' in a single player or multiplayer scenario.&lt;br /&gt;
(Prior to version 1.1.1, you need to type shift - semicolon( ''';''' ). However this isn't possible on all keyboards; if your keyboard doesn't have ':' above ';' you can change the hotkey in the Preferences, or you could edit '''game.cfg''' by hand.')&lt;br /&gt;
&lt;br /&gt;
Note: you can highlight, copy, and paste text in debug mode.&lt;br /&gt;
&lt;br /&gt;
Several vi-like commands are available in command mode. They are defined in ''menu_events.cpp''. In the 1.5 branch, there is a ''':help''' command that lists all available commands, and ''':help ''foo''''' displays more info about command ''foo''. This is more reliable than the list that follows here:&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:q or :q!&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:quit the scenario (without prompting)&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:w&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:save the game (without prompting)&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:wq&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:save the game and quit the scenario (without prompting)&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:refresh&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:redraw the screen&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:droid&amp;lt;/nowiki&amp;gt; [''side''] [on|off]&lt;br /&gt;
:toggle player on ''side'' between human and AI player. The player/client who controls that side needs to issue this command. If you don't provide ''side'', the current side is assumed.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:muteall&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:toggles muting/silencing of all observers on/off&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:mute&amp;lt;/nowiki&amp;gt; [''username'']&lt;br /&gt;
:mute a specific observer. If no ''username'' is supplied the muted usernames are displayed.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:unmute&amp;lt;/nowiki&amp;gt; [''username'']&lt;br /&gt;
:unmute a specific observer. If no ''username'' is given everyone is unmuted. (Doesn't effect the muteall setting.)&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:kick&amp;lt;/nowiki&amp;gt; ''username''&lt;br /&gt;
:kick a user in multiplayer. They will be able to rejoin the game. Generally a friendly way to remove someone who is having connection or other difficulties.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:ban&amp;lt;/nowiki&amp;gt; ''username''&lt;br /&gt;
:kick and ban a user in multiplayer by the IP address used by that ''username''. Can be used on users not in the game but on the server. (Of course they won't be kicked then.)&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:unban&amp;lt;/nowiki&amp;gt; ''username''&lt;br /&gt;
:unban a user by the IP address used by that ''username''. Can be used on users not in the game but on the server.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:control&amp;lt;/nowiki&amp;gt; ''side'' ''username''&lt;br /&gt;
:change the controller for ''side'' (write here the number of the side, the side must be controlled by you) to ''username'' (write here the nick of the player or observer)&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:clear&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:clear chat messages&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:debug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:switch debug mode on (does not work in multiplayer). Debug mode is turned off by quitting the game or using the :nodebug command.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:theme&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:bring up theme selection menu&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:nosaves&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:turns off the autosave function&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:show_coordinates (or :sc)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:Overlay x,y coordinates on map tiles. 1.5.5 onwards&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:show_terrain_codes (or :tc)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:Overlay terrain codes on visible map tiles. 1.5.5 onwards&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:lua&amp;lt;/nowiki&amp;gt; ''statement''&lt;br /&gt;
:{{DevFeature}} execute a Lua statement&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:discover&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:Show all hidden unit descriptions in the in-game Help. 1.7.0 onwards&lt;br /&gt;
&lt;br /&gt;
===Extra Debugging Commands===&lt;br /&gt;
[[DebugMode]] enables additional commands in command mode:&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:nodebug&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:disables debug-mode commands&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:n&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:skip to next scenario by triggering a win event&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:shroud&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:toggles shroud on/off (implemented since 1.3.10)&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:fog&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:toggles fog on/off (implemented since 1.3.10)&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:gold&amp;lt;/nowiki&amp;gt; ''amount''&lt;br /&gt;
:add ''amount'' gold to the current player's side&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:create&amp;lt;/nowiki&amp;gt; ''unit_type''&lt;br /&gt;
:create a unit of type specified at last selected hex&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:unit hitpoints=&amp;lt;/nowiki&amp;gt;''amount''&lt;br /&gt;
:edit units hitpoints&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:unit experience=&amp;lt;/nowiki&amp;gt;''amount''&lt;br /&gt;
:edit units experience&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:unit&amp;lt;/nowiki&amp;gt; ''attribute=value''&lt;br /&gt;
:when a unit is selected, this will set the unit's ''attribute'' to ''value''. See [[SingleUnitWML]] for possible values.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:unit&amp;lt;/nowiki&amp;gt; ''advances=N''&lt;br /&gt;
:{{DevFeature}} when a unit is selected, this will advance (level up) the unit N times.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:set_var&amp;lt;/nowiki&amp;gt; ''attribute=value''&lt;br /&gt;
:this will set a WML variable to a given value&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:show_var&amp;lt;/nowiki&amp;gt; ''attribute''&lt;br /&gt;
:this will display a popup with the content of the variable&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:throw/fire&amp;lt;/nowiki&amp;gt; ''event_name''&lt;br /&gt;
:throw an event by name, like ''time over'' or ''enemies defeated''. (Only available in 1.3.5 or later.)&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:inspect&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:{{DevFeature}} show a gamestate inspector dialog which allows to see variable info, team info, ai info.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:cl&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:pops up a menu that allows you to move directly to a specified scenario.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:turn&amp;lt;/nowiki&amp;gt; [''number'']&lt;br /&gt;
:{{DevFeature1.9}} change the current turn to the specified number. If no number is provided, the turn number is increased by one.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:turn_limit&amp;lt;/nowiki&amp;gt; [''number'']&lt;br /&gt;
:{{DevFeature1.9}} change the turn limit for the current scenario to the specified number. If no number is provided, or it is -1, the turn limit is switched off.&lt;br /&gt;
;&amp;lt;nowiki&amp;gt;:version&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
:Report version and SVN revision level.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[DebugMode]]&lt;br /&gt;
* [[DeveloperResources]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Playing Wesnoth]]&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=TerrainGraphicsWML&amp;diff=37505</id>
		<title>TerrainGraphicsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=TerrainGraphicsWML&amp;diff=37505"/>
		<updated>2010-07-14T22:33:40Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* The toplevel [terrain_graphics] tag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
&lt;br /&gt;
{{Needs update}}&lt;br /&gt;
&lt;br /&gt;
== The toplevel [terrain_graphics] tag ==&lt;br /&gt;
&lt;br /&gt;
For information about the multi-hex tiling system, see [[MultiHexTutorial]]&lt;br /&gt;
&lt;br /&gt;
In terrain graphics, all images are assumed to be .png and relative to images/terrain/.&lt;br /&gt;
For example, writing 'image=grassland' means that the image file is images/terrain/grassland.png.&lt;br /&gt;
&lt;br /&gt;
The multi-hex tiling system adds a new top-level element to WML, [terrain_graphics].&lt;br /&gt;
A building rule is used to specify images to place when terrains are in a certain formation.&lt;br /&gt;
When a building rule is applied to a map, it is applied once to each coordinate on the map;&lt;br /&gt;
when it is applied to a coordinate then that coordinate is considered the ''base''.&lt;br /&gt;
All locations in '''[terrain_graphics]''' are relative to the base.&lt;br /&gt;
&lt;br /&gt;
The following keys/tags are recognized:&lt;br /&gt;
* '''[tile]''': whenever a building rule is applied, each [tile] tag corresponds to a tile on the map. The corresponding tile must match each condition contained in [tile] for the [tile] tag to match. All [tile] tags must match in order for a rule to match. If the rule for a [tile] tag is applied, each action within [tile] will be executed on the tile corresponding to that [tile] tag&lt;br /&gt;
** '''x''','''y''': standard coordinates - the location of the corresponding tile relative to the base.&lt;br /&gt;
** '''pos''': a shortcut to specifying coordinates. Used in combination with ''map''&lt;br /&gt;
** Conditions for [tile]:&lt;br /&gt;
*** '''type''': a comma-separated list of terrain codes (See [[TerrainWML]], data/terrain.cfg). In order for a tile to match this condition, it must be one of the terrains specified. However, if the string is preceded by &amp;quot;!&amp;quot;, the terrain must not be listed in order to match. If the string is '*', or if it is empty, any tile matches.&lt;br /&gt;
*** '''has_flag''': a string. Matches if a flag named after the given string is attached to the corresponding tile. Flags are attached using the ''set_flag'' key.&lt;br /&gt;
*** '''no_flag''': a string. Matches if no flag named after the given string has been attached to the corresponding tile. Flags are attached using the ''set_flag'' key.&lt;br /&gt;
** Actions for [tile]:&lt;br /&gt;
*** '''set_flag''': Followed by a string of characters. Attaches a flag named after the given string to the corresponding tile if the rule matches. The only difference a flag makes is being detected by ''has_flag'' and ''no_flag'' in [tile]. This is determined by the order of the [terrain_graphics] tags; a tag after another one cannot influence it. See also ''has_flag'', ''no_flag''&lt;br /&gt;
*** '''[image]''': images specified as a subtag to '''[tile]''' sets the images for a single tile.&lt;br /&gt;
**** '''layer''': an integer, usually negative. The more negative it is, the earlier it is drawn, and thus the farther &amp;quot;back&amp;quot; it is when compositing the terrain images together.&lt;br /&gt;
**** '''name''': the image to apply on this tile if appropriate&lt;br /&gt;
**** '''base''': specifies the point at which the image is considered to be for layering purposes.  ''base'' is specified as '''x,y''' where x and y indicate distances in pixels from the top-left corner of the '''image'''. This is translated to a certain pixel on the map, and all images with the ''base'' attribute are drawn from top-to-bottom in terms of these specified pixel positions '''on the map'''.&lt;br /&gt;
**** '''[variant]''': an alternate image to use for differing times of day&lt;br /&gt;
***** '''tod''': the time of day for which this variant applies&lt;br /&gt;
***** '''name''': the image to apply on this tile if appropriate&lt;br /&gt;
* '''[image]''': image may also be used directly in the rule, to specify multihex images.&lt;br /&gt;
* '''probability''': the percent probability for each position that if the position matches, then the rule will be applied. Default is 100(%).  See [[TerrainGraphicsTutorial#Cumulative_Probabilities|Cumulative_Probabilities]] for mathematical complications.&lt;br /&gt;
* '''rotations''': 6 comma(''',''') separated input strings. A rule that contains this key is not actually checked against the terrain; it instead is used as a template to create 6 new rules, each corresponding to a rotated version of the current rule. Whenever a rotated version is applied, instances of @(at-sign)R0, @R1, ... @R6 in attributes in the [terrain_graphics] tag will be adjusted by the corresponding amount and replaced with the letters specified by that numbered rotation in the ''rotations'' list. Each value corresponds to the rotated version that is -Pi/3 (60° clockwise) from the previous version; the first value corresponds to the unrotated version.&amp;lt;br&amp;gt;For example, if '''rotations=n,ne,se,s,sw,nw''' and it is being rotated 120°, then &amp;quot;@R0&amp;quot;-&amp;gt;&amp;quot;@R2&amp;quot;-&amp;gt;&amp;quot;se&amp;quot;, &amp;quot;@R1&amp;quot;-&amp;gt;&amp;quot;@R3&amp;quot;-&amp;gt;&amp;quot;s&amp;quot;, ... &amp;quot;@R6&amp;quot;-&amp;gt;&amp;quot;@R1&amp;quot;-&amp;gt;&amp;quot;ne&amp;quot;.&amp;lt;br&amp;gt;Basically the important thing is that this lets the rule be applied in any of the six hex-directions, allowing you to adjust the name of the image files automatically.&lt;br /&gt;
* '''set_flag''','''has_flag''', '''no_flag''': shortcuts to putting these in the [tile] subtags; unbound attributes will apply to all [tile] subtags.&lt;br /&gt;
* '''map''': a shortcut for defining [tile] tags with ''type'' conditions. Inputs a multi-line string value visually describing the map. The lines are cut into words of 4 characters, which correspond to [tile] tags. The line types alternate between lines corresponding to relatively even-abciss tiles and lines preceded by two spaces corresponding to relatively odd-abciss tiles. Every two lines represent 1 row on the map.&lt;br /&gt;
&lt;br /&gt;
=== Words ===&lt;br /&gt;
&lt;br /&gt;
A ''word'' is a 4-character shortcut to a [tile] tag. There are different types of words:&lt;br /&gt;
* Usually a word is interpreted as being the input to the ''type'' key of the corresponding [tile]. That is, it creates a [tile] with the attribute '''type=''word'''''.&lt;br /&gt;
* A word can also be a digit followed by 3 spaces. In this case, it is a shortcut to the [tile] with the attribute '''pos=''word'''''. This is called ''anchoring''.&lt;br /&gt;
&lt;br /&gt;
In 1.3, the format is basically the same but the following changes are made&lt;br /&gt;
* A ''word'' no longer needs to be 4 characters but is comma separated and spaces and tabs may be used for padding&lt;br /&gt;
* The 2 spaces for odd lines in no longer used, instead a leading comma is used on these lines (before the comma spaces and tabs are allowed for padding)&lt;br /&gt;
* A ''word'' may only be a dot a star or an anchor. The terrain letter format was not used and hard to support in the new engine, so that support is dropped.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
To define a north-south 2-tile mountain, the following syntax can be used:&lt;br /&gt;
&lt;br /&gt;
 [terrain_graphics]&lt;br /&gt;
     [tile]&lt;br /&gt;
         x=0&lt;br /&gt;
         y=0&lt;br /&gt;
         type=Mm&lt;br /&gt;
     [/tile]&lt;br /&gt;
     [tile]&lt;br /&gt;
         x=0&lt;br /&gt;
         y=1&lt;br /&gt;
         type=Mm&lt;br /&gt;
     [/tile]&lt;br /&gt;
     no_flag=&amp;quot;mountain-tile&amp;quot;&lt;br /&gt;
     set_flag=&amp;quot;mountain-tile&amp;quot;&lt;br /&gt;
     image_background=&amp;quot;mountain-n-s&amp;quot;&lt;br /&gt;
 [/terrain_graphics]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This represents a tile T, and its 6 adjacent tiles A, in the map notation.&lt;br /&gt;
&lt;br /&gt;
 .,   .,   .,   .&lt;br /&gt;
 ,  .,   A,   .,   .&lt;br /&gt;
 .,   A,   A,   .&lt;br /&gt;
 ,  .,   T,   .,   .&lt;br /&gt;
 .,   A,   A,   .&lt;br /&gt;
 ,  .,   A,   .,   .&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[MultiHexTutorial]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
* Ayin's [http://www.anathas.org/ayin/wesnoth/doc/terrain_graphics_wml detailed Terrain Graphics document]&lt;br /&gt;
* [[TerrainGraphicsTutorial]] - First half of Ayin's document, wikified&lt;br /&gt;
* [[TerrainGraphicsReference]] - Second (partial) half of Ayin's document, wikified&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=TerrainGraphicsWML&amp;diff=37504</id>
		<title>TerrainGraphicsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=TerrainGraphicsWML&amp;diff=37504"/>
		<updated>2010-07-14T22:31:11Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* The toplevel [terrain_graphics] tag */ fix link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
&lt;br /&gt;
{{Needs update}}&lt;br /&gt;
&lt;br /&gt;
== The toplevel [terrain_graphics] tag ==&lt;br /&gt;
&lt;br /&gt;
For information about the multi-hex tiling system, see [[MultiHexTutorial]]&lt;br /&gt;
&lt;br /&gt;
In terrain graphics, all images are assumed to be .png and relative to images/terrain/.&lt;br /&gt;
For example, writing 'image=grassland' means that the image file is images/terrain/grassland.png.&lt;br /&gt;
&lt;br /&gt;
The multi-hex tiling system adds a new top-level element to WML, [terrain_graphics].&lt;br /&gt;
A building rule is used to specify images to place when terrains are in a certain formation.&lt;br /&gt;
When a building rule is applied to a map, it is applied once to each coordinate on the map;&lt;br /&gt;
when it is applied to a coordinate then that coordinate is considered the ''base''.&lt;br /&gt;
All locations in '''[terrain_graphics]''' are relative to the base.&lt;br /&gt;
&lt;br /&gt;
The following keys/tags are recognized:&lt;br /&gt;
* '''[tile]''': whenever a building rule is applied, each [tile] tag corresponds to a tile on the map. The corresponding tile must match each condition contained in [tile] for the [tile] tag to match. All [tile] tags must match in order for a rule to match. If the rule for a [tile] tag is applied, each action within [tile] will be executed on the tile corresponding to that [tile] tag&lt;br /&gt;
** '''x''','''y''': standard coordinates - the location of the corresponding tile relative to the base.&lt;br /&gt;
** '''pos''': a shortcut to specifying coordinates. Used in combination with ''map''&lt;br /&gt;
** Conditions for [tile]:&lt;br /&gt;
*** '''type''': a comma-separated list of terrain codes (See [[TerrainWML]], data/terrain.cfg). In order for a tile to match this condition, it must be one of the terrains specified. However, if the string is preceded by &amp;quot;!&amp;quot;, the terrain must not be listed in order to match. If the string is '*', or if it is empty, any tile matches.&lt;br /&gt;
*** '''has_flag''': a string. Matches if a flag named after the given string is attached to the corresponding tile. Flags are attached using the ''set_flag'' key.&lt;br /&gt;
*** '''no_flag''': a string. Matches if no flag named after the given string has been attached to the corresponding tile. Flags are attached using the ''set_flag'' key.&lt;br /&gt;
** Actions for [tile]:&lt;br /&gt;
*** '''set_flag''': Followed by a string of characters. Attaches a flag named after the given string to the corresponding tile if the rule matches. The only difference a flag makes is being detected by ''has_flag'' and ''no_flag'' in [tile]. This is determined by the order of the [terrain_graphics] tags; a tag after another one cannot influence it. See also ''has_flag'', ''no_flag''&lt;br /&gt;
*** '''[image]''': images specified as a subtag to '''[tile]''' sets the images for a single tile.&lt;br /&gt;
**** '''layer''': an integer, usually negative. The more negative it is, the earlier it is drawn, and thus the farther &amp;quot;back&amp;quot; it is when compositing the terrain images together.&lt;br /&gt;
**** '''name''': the image to apply on this tile if appropriate&lt;br /&gt;
**** '''base''': specifies the point at which the image is considered to be for layering purposes.  ''base'' is specified as '''x,y''' where x and y indicate distances in pixels from the top-left corner of the '''image'''. This is translated to a certain pixel on the map, and all images with the ''base'' attribute are drawn from top-to-bottom in terms of these specified pixel positions '''on the map'''.&lt;br /&gt;
**** '''[variant]''': an alternate image to use for differing times of day&lt;br /&gt;
***** '''tod''': the time of day for which this variant applies&lt;br /&gt;
***** '''name''': the image to apply on this tile if appropriate&lt;br /&gt;
* '''[image]''': image may also be used directly in the rule, to specify multihex images.&lt;br /&gt;
* '''probability''': the percent probability for each position that if the position matches, then the rule will be applied. Default is 100(%).  See [[TerrainGraphicsTutorial#Cumulative_Probabilities]] for mathematical complications.&lt;br /&gt;
* '''rotations''': 6 comma(''',''') separated input strings. A rule that contains this key is not actually checked against the terrain; it instead is used as a template to create 6 new rules, each corresponding to a rotated version of the current rule. Whenever a rotated version is applied, instances of @(at-sign)R0, @R1, ... @R6 in attributes in the [terrain_graphics] tag will be adjusted by the corresponding amount and replaced with the letters specified by that numbered rotation in the ''rotations'' list. Each value corresponds to the rotated version that is -Pi/3 (60° clockwise) from the previous version; the first value corresponds to the unrotated version.&amp;lt;br&amp;gt;For example, if '''rotations=n,ne,se,s,sw,nw''' and it is being rotated 120°, then &amp;quot;@R0&amp;quot;-&amp;gt;&amp;quot;@R2&amp;quot;-&amp;gt;&amp;quot;se&amp;quot;, &amp;quot;@R1&amp;quot;-&amp;gt;&amp;quot;@R3&amp;quot;-&amp;gt;&amp;quot;s&amp;quot;, ... &amp;quot;@R6&amp;quot;-&amp;gt;&amp;quot;@R1&amp;quot;-&amp;gt;&amp;quot;ne&amp;quot;.&amp;lt;br&amp;gt;Basically the important thing is that this lets the rule be applied in any of the six hex-directions, allowing you to adjust the name of the image files automatically.&lt;br /&gt;
* '''set_flag''','''has_flag''', '''no_flag''': shortcuts to putting these in the [tile] subtags; unbound attributes will apply to all [tile] subtags.&lt;br /&gt;
* '''map''': a shortcut for defining [tile] tags with ''type'' conditions. Inputs a multi-line string value visually describing the map. The lines are cut into words of 4 characters, which correspond to [tile] tags. The line types alternate between lines corresponding to relatively even-abciss tiles and lines preceded by two spaces corresponding to relatively odd-abciss tiles. Every two lines represent 1 row on the map.&lt;br /&gt;
&lt;br /&gt;
=== Words ===&lt;br /&gt;
&lt;br /&gt;
A ''word'' is a 4-character shortcut to a [tile] tag. There are different types of words:&lt;br /&gt;
* Usually a word is interpreted as being the input to the ''type'' key of the corresponding [tile]. That is, it creates a [tile] with the attribute '''type=''word'''''.&lt;br /&gt;
* A word can also be a digit followed by 3 spaces. In this case, it is a shortcut to the [tile] with the attribute '''pos=''word'''''. This is called ''anchoring''.&lt;br /&gt;
&lt;br /&gt;
In 1.3, the format is basically the same but the following changes are made&lt;br /&gt;
* A ''word'' no longer needs to be 4 characters but is comma separated and spaces and tabs may be used for padding&lt;br /&gt;
* The 2 spaces for odd lines in no longer used, instead a leading comma is used on these lines (before the comma spaces and tabs are allowed for padding)&lt;br /&gt;
* A ''word'' may only be a dot a star or an anchor. The terrain letter format was not used and hard to support in the new engine, so that support is dropped.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
To define a north-south 2-tile mountain, the following syntax can be used:&lt;br /&gt;
&lt;br /&gt;
 [terrain_graphics]&lt;br /&gt;
     [tile]&lt;br /&gt;
         x=0&lt;br /&gt;
         y=0&lt;br /&gt;
         type=Mm&lt;br /&gt;
     [/tile]&lt;br /&gt;
     [tile]&lt;br /&gt;
         x=0&lt;br /&gt;
         y=1&lt;br /&gt;
         type=Mm&lt;br /&gt;
     [/tile]&lt;br /&gt;
     no_flag=&amp;quot;mountain-tile&amp;quot;&lt;br /&gt;
     set_flag=&amp;quot;mountain-tile&amp;quot;&lt;br /&gt;
     image_background=&amp;quot;mountain-n-s&amp;quot;&lt;br /&gt;
 [/terrain_graphics]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This represents a tile T, and its 6 adjacent tiles A, in the map notation.&lt;br /&gt;
&lt;br /&gt;
 .,   .,   .,   .&lt;br /&gt;
 ,  .,   A,   .,   .&lt;br /&gt;
 .,   A,   A,   .&lt;br /&gt;
 ,  .,   T,   .,   .&lt;br /&gt;
 .,   A,   A,   .&lt;br /&gt;
 ,  .,   A,   .,   .&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[MultiHexTutorial]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
* Ayin's [http://www.anathas.org/ayin/wesnoth/doc/terrain_graphics_wml detailed Terrain Graphics document]&lt;br /&gt;
* [[TerrainGraphicsTutorial]] - First half of Ayin's document, wikified&lt;br /&gt;
* [[TerrainGraphicsReference]] - Second (partial) half of Ayin's document, wikified&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Download&amp;diff=36505</id>
		<title>Download</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Download&amp;diff=36505"/>
		<updated>2010-05-17T14:24:40Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Development (1.7 branch) */  marking 1.7 as old and updating 1.9 info. Mention svn.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Battle for Wesnoth downloads page.  The BFW project team only officially releases the source code.  Binary packages are only provided by community volunteers and hosted here. Torrents are also unofficial.&lt;br /&gt;
&lt;br /&gt;
If the latest binaries are not currently available for your OS, please check back in a few days to see if they have been placed here. Packagers have been informed of the release, please be patient.  In the meantime, read the [[FAQ#A_new_version_is_out.2C_but_where_is_the_download_for_.5BWindows.2C_Mac_OS.2C_etc..5D.3F|FAQ]].&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
Jump to: [[Download#Stable_.281.8_branch.29|Stable Branch]] | [[Download#Stable_.28older_versions.29|Stable Branch (older versions)]] | [[Download#Development_.281.7_branch.29|Development Branch]]&lt;br /&gt;
&lt;br /&gt;
== Stable (1.8 branch) ==&lt;br /&gt;
The stable files are meant to be used as a stable and rather balanced version of the game. Each version of the 1.8 branch is compatible to each other.&lt;br /&gt;
&lt;br /&gt;
Version 1.8.0 is the latest stable version. This version is recommended for most players since the 1.8 online multiplayer community is very large and user-made campaign server has a robust content selection. &lt;br /&gt;
&lt;br /&gt;
==== Source code ====&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/wesnoth-1.8.1.tar.bz2/download Current Version] (1.8.1, 274.9 MB)&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/wesnoth-1.8.tar.bz2/download Previous Version] (1.8.0, 274.6 MB)&lt;br /&gt;
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code&lt;br /&gt;
&lt;br /&gt;
==== MS Windows ====&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/wesnoth-1.8.1-win32.exe/download Current Version] (1.8.1, 255.9 MB)&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/wesnoth-1.8-win32.exe/download Previous Version] (1.8.0, 255.6 MB)&lt;br /&gt;
&lt;br /&gt;
==== Mac OS X (10.4+) ====&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/Wesnoth_1.8.1.dmg/download Current Version] (1.8.1, 279.5 MB)&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/Wesnoth_1.8.dmg/download Previous Version] (1.8.0, 279.0 MB)&lt;br /&gt;
&lt;br /&gt;
==== GNU/Linux ====&lt;br /&gt;
* There are binaries for many different GNU/Linux Distributions. Not all are always up to date with the current release. Please have a look at the [[WesnothBinariesLinux|Linux binary page]] for more information about the binaries for your Distribution.&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous ====&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/wesnoth-1.8.1.tar.bz2.md5/download md5sum for current source code]&lt;br /&gt;
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Stable_Version_1.8.x Xdelta for the source code]&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/ SourceForge page for current and all previous versions]&lt;br /&gt;
&lt;br /&gt;
== Stable (older versions) ==&lt;br /&gt;
Several operating systems do not offer a binary of the latest stable release. Here is a list of the latest known (stable version) binaries for various systems. For those older versions there often is no (official) multiplayer or addon server available anymore.&lt;br /&gt;
&lt;br /&gt;
==== (Open)Solaris ====&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/wesnoth-solaris-i386-1.4.5.pkg.bz2/download Older Version] (1.4.5, 145.6 MB), not compatible with 1.6.x&lt;br /&gt;
&lt;br /&gt;
==== AmigaOS4 ====&lt;br /&gt;
* [http://os4depot.net/index.php?function=showfile&amp;amp;file=game/strategy/wesnoth.lha Older Version] (1.4.7, 140 MB), not compatible with 1.6.x&lt;br /&gt;
&lt;br /&gt;
==== OS/2 &amp;amp; eComStation ====&lt;br /&gt;
* [http://download.smedley.info/wesnoth-1.4.5-os2-20080828.zip Older Version] (1.4.5, 160 MB), not compatible with 1.6.x&lt;br /&gt;
&lt;br /&gt;
==== RISC OS ====&lt;br /&gt;
*[http://www.riscos.info/packages/arm/Games/wesnoth_1.4.5-1.zip Older version] (1.4.5-1, 140MB), not compatible with 1.6.x&lt;br /&gt;
&lt;br /&gt;
==== Syllable ====&lt;br /&gt;
* [http://downloads.syllable.org/Syllable/i586/applications/contributed/Battle-for-Wesnoth/Battle-for-Wesnoth-1.2.6.application Older Version] (1.2.6, 60.8 MB), not compatible with 1.6.x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development (1.7 branch) ==&lt;br /&gt;
Version 1.7.x was the previous development version.&lt;br /&gt;
At the moment the stable 1.8.x branch offers all the new features known from 1.7.x. The next development release will take some more time and be known as 1.9.x. In the mean time, people familiar with SVN can follow its development by checking [[WesnothSVN]].&lt;br /&gt;
&lt;br /&gt;
==== Source code ====&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/wesnoth-1.7.15.tar.bz2/download Current Version] (1.7.15-1.8rc1, 270.4 MB)&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/wesnoth-1.7.14.tar.bz2/download Previous Version] (1.7.14-1.8beta7, 264.8 MB)&lt;br /&gt;
&lt;br /&gt;
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code&lt;br /&gt;
&lt;br /&gt;
==== MS Windows ====&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/wesnoth-1.7.15-1.8rc1-win32.exe/download Current Version] (1.7.15-1.8rc1, 253.1 MB)&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/wesnoth-1.7.14-1.8beta7-win32.exe/download Previous Version] (1.7.14-1.8beta7, 247.6 MB)&lt;br /&gt;
&lt;br /&gt;
==== Mac OS X (10.4+) ====&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/Wesnoth_1.7.15.dmg/download Current Version] (1.7.15-1.8rc1, 275.3 MB)&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/Wesnoth_1.7.14.dmg/download Previous Version] (1.7.14-1.8beta7, 269.4 MB)&lt;br /&gt;
&lt;br /&gt;
==== GNU/Linux ====&lt;br /&gt;
* There are binaries for many different GNU/Linux Distributions developed for [http://www.professays.com custom essay writers] and other users. Not all are always up to date with the current release. Please have a look at the [[WesnothBinariesLinux|Linux binary page]] for more information about the binaries for your Distribution.&lt;br /&gt;
* [http://professaywriters.com/ essay writing][http://www.breastpumpdeals.com/medela-freestyle-breast-pump.html Freestyle Medela]&lt;br /&gt;
&lt;br /&gt;
==== Miscellaneous ====&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/wesnoth/wesnoth-1.7.15.tar.bz2.md5/download md5sum for current source code]&lt;br /&gt;
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Development_Version_1.7.x Xdelta for the source code]&lt;br /&gt;
* [http://sourceforge.net/projects/wesnoth/files/ SourceForge page for current and all previous versions]&lt;br /&gt;
* [http://downloads.sourceforge.net/wesnoth/Mac_Compile_Stuff_1.5.3.tar.bz2/download MacCompileStuff for 1.5.3]&lt;br /&gt;
&lt;br /&gt;
== License ==&lt;br /&gt;
''Main article: [[Wesnoth:Copyrights]]&lt;br /&gt;
&lt;br /&gt;
This program is free software; you can redistribute it and/or modify it under the terms of the [http://www.fsf.org/copyleft/gpl.html GNU General Public License version 2], as published by the [http://www.essayontime.com/ paper writing service].&lt;br /&gt;
This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [http://changelog.wesnoth.org Changelog]&lt;br /&gt;
* [[WesnothBinaries| More binaries]]&lt;br /&gt;
* [[WesnothSVN]] - bleeding edge version from SVN&lt;br /&gt;
&lt;br /&gt;
[[Category:Building and Installing]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Category:Summer_of_Code_2010&amp;diff=36457</id>
		<title>Category:Summer of Code 2010</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Category:Summer_of_Code_2010&amp;diff=36457"/>
		<updated>2010-05-09T16:13:44Z</updated>

		<summary type="html">&lt;p&gt;Alink: Adding this page in the 'Summer of Code' category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{SoC2010 NoCategory}}&lt;br /&gt;
&lt;br /&gt;
This category lists everything that is related to Summer of Code 2010&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=FilterWML&amp;diff=30545</id>
		<title>FilterWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=FilterWML&amp;diff=30545"/>
		<updated>2009-05-17T17:07:31Z</updated>

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

		<summary type="html">&lt;p&gt;Alink: /* the [units] tag */ mark [hide_help] as (development only)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== the [units] tag ==&lt;br /&gt;
&lt;br /&gt;
This tag is a top level WML tag which is in game.cfg.&lt;br /&gt;
It defines the set of all units in Wesnoth.&lt;br /&gt;
&lt;br /&gt;
The following subtags are recognized:&lt;br /&gt;
* '''[unit_type]''': describes one unit type. See [[UnitTypeWML]] for syntax.&lt;br /&gt;
* '''[trait]''': describes a global trait.&lt;br /&gt;
All races with the attribute '''ignore_global_traits=no''' will have this trait.&lt;br /&gt;
See '''[trait]''': below for syntax.&lt;br /&gt;
* '''[movetype]''': used to make shortcuts to describe units with similar terrain handicaps. Units from the same advancement tree should generally have the same movetype.&lt;br /&gt;
** '''name''': an ID for this movetype. Units with the attribute '''movetype=''name''''' will be assigned this movetype.&lt;br /&gt;
** ''flies'' either 'true' or 'false'(default). A unit with ''flies=true'' does not have its image's height adjusted for different terrains.&lt;br /&gt;
** '''[movement_costs]''': describes how fast the unit moves on different terrains. The attribute '''terrain=''speed''''' means that the unit will need to use ''speed'' move points to move onto the terrain with '''name=''terrain''''' (see [[TerrainWML]]).&lt;br /&gt;
** '''[defense]''': describes how likely the unit is to be hit on different terrains. The attribute '''terrain=''defense''''' means that the unit will be hit ''defense'' percent of the time in the terrain with '''name=''terrain'''''.&lt;br /&gt;
** '''[resistance]''': describes how much damage the unit takes from different types of attacks. The attribute '''type=''resistance''''' makes the unit receive '''resistance''' percent of damage, or resist '''100-resistance''' percent of damage from attacks with '''type=''type'''''. So for example, a resistance of fire=110 means, this unit will receive 110% of damage, or have a resistance of -10% as displayed in-game. A value of fire=0 would mean, the unit receives no damage and therefore has a resistance of 100%.&lt;br /&gt;
* '''[race]''': is used to make shortcuts to describe units with similar names. Units from the same advancement tree should generally have the same race. Also, units with the same race should generally be recruitable by the same sides/factions.&lt;br /&gt;
** '''id''': ID for this race. Units with the attribute '''race=''id''''' will be assigned this race. If missing in old WML, the value of the name key will be used as id.&lt;br /&gt;
** '''plural_name''': user-visible name for its people (e.g. &amp;quot;Merfolk&amp;quot; or &amp;quot;Elves&amp;quot;). Currently only used in the in-game help.&lt;br /&gt;
** '''male_name''': user-visible name for the race of the male units (e.g. &amp;quot;Merman&amp;quot;). Currently only used in the in-game unit status.&lt;br /&gt;
** '''female_name''': user-visible name for the race of the female units (e.g. &amp;quot;Mermaid&amp;quot;). Currently only used in the in-game unit status.&lt;br /&gt;
** '''name''': the default value for the three keys above.&lt;br /&gt;
** '''description''': description of this race, used in the race page of the in-game help. Note: currently not used by all mainline races because their descriptions are not ready. But this is already supported by the engine.&lt;br /&gt;
** '''male_names''', '''female_names''': lists of names (i.e. non-translatable strings). They are inputted into the Markov name generator to generate random names. ''male_names'' describes units with '''gender=male'''; ''female_names'' describes units with '''gender=female'''.&lt;br /&gt;
** '''markov_chain_size''': (default 2) number of letters per &amp;quot;syllable&amp;quot;. &amp;quot;Syllables&amp;quot; are groupings of names that the Markov name generator uses to determine names. It does this by running a probability algorithm to guess from the name list which syllables fit well together, which can start or end a name, etc.&lt;br /&gt;
** '''num_traits''': is the number of non-repeating traits each unit of this race can be assigned.&lt;br /&gt;
** '''ignore_global_traits''': 'yes' or 'no'(default). Determines whether global traits (see [traits] above) are applied.&lt;br /&gt;
** '''[trait]''': describes a trait for this race. :&lt;br /&gt;
*** '''id''': unique identifier&lt;br /&gt;
*** '''availability''': describes whether a trait is &amp;quot;musthave&amp;quot; for a race or is available to &amp;quot;any&amp;quot; unit in a race, including leaders, or &amp;quot;none&amp;quot; if it is not normally available, but should be kept when advancing to this unit type. (Traits not available to the advanced unit type at all, are permanently lost upon advancement.) The default is for a trait to only be available to nonleaders. Currently &amp;quot;any&amp;quot; should not be used for traits available in multiplayer. It can be used for campaign specific traits. (Note that currently &amp;quot;musthave&amp;quot; is somewhat misused to have what are really abilities (''undead'' and ''mechanical'') default from a unit type's race. Ideally someone will eventually extend ''race'' to allow for default abilities. It might also be possible to unify traits and abilities with keys to indicate how you get them and what happens to them when you advance, while allowing them to come from race, unit type and unit definitions. There are also display issues related to doing this.)&lt;br /&gt;
*** '''male_name''': text displayed in the status of unit with the trait if the unit is male.&lt;br /&gt;
*** '''female_name''': text displayed in the status of unit with the trait if the unit is female.&lt;br /&gt;
*** '''name''': text displayed in the status of unit with the trait if none of the two above is used.&lt;br /&gt;
*** '''description''': text displayed for the description of the trait.&lt;br /&gt;
*** '''[effect]''': described in [[EffectWML]].&lt;br /&gt;
&lt;br /&gt;
* '''[hide_help]''': {{DevFeature}} allow to hide some units from the help. Mainly useful if you can't change these units (e.g. mainline units) and thus can't add a 'hide_help=yes' key to them. The following keys and theirs contents uses an 'OR' logic between them.&lt;br /&gt;
** '''type''': list of unit types.&lt;br /&gt;
** '''race''': list of races. Equivalent to all unit types of these races.&lt;br /&gt;
** '''type_adv_tree''': list of unit types. Equivalent to all these types and their advancement trees.&lt;br /&gt;
** '''all''': 'yes' or 'no'(default). 'yes' is equivalent to all unit types (useful before [not])&lt;br /&gt;
** '''[not]''': all the previous keys (except 'all') can also be used in [not] sub-tags. And you can use [not] recursively. For example, if you want to only show the Yeti and the human race except the mage tree, uses:&lt;br /&gt;
 [hide_help]&lt;br /&gt;
     all=yes&lt;br /&gt;
     [not]&lt;br /&gt;
         type=Yeti&lt;br /&gt;
         race=human&lt;br /&gt;
         [not]&lt;br /&gt;
             type_adv_tree=Mage&lt;br /&gt;
         [/not]&lt;br /&gt;
     [/not]&lt;br /&gt;
 [/hide_help]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UnitTypeWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=UnitsWML&amp;diff=30543</id>
		<title>UnitsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=UnitsWML&amp;diff=30543"/>
		<updated>2009-05-17T16:59:42Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* the [units] tag */ add doc for [hide_help]&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== the [units] tag ==&lt;br /&gt;
&lt;br /&gt;
This tag is a top level WML tag which is in game.cfg.&lt;br /&gt;
It defines the set of all units in Wesnoth.&lt;br /&gt;
&lt;br /&gt;
The following subtags are recognized:&lt;br /&gt;
* '''[unit_type]''': describes one unit type. See [[UnitTypeWML]] for syntax.&lt;br /&gt;
* '''[trait]''': describes a global trait.&lt;br /&gt;
All races with the attribute '''ignore_global_traits=no''' will have this trait.&lt;br /&gt;
See '''[trait]''': below for syntax.&lt;br /&gt;
* '''[movetype]''': used to make shortcuts to describe units with similar terrain handicaps. Units from the same advancement tree should generally have the same movetype.&lt;br /&gt;
** '''name''': an ID for this movetype. Units with the attribute '''movetype=''name''''' will be assigned this movetype.&lt;br /&gt;
** ''flies'' either 'true' or 'false'(default). A unit with ''flies=true'' does not have its image's height adjusted for different terrains.&lt;br /&gt;
** '''[movement_costs]''': describes how fast the unit moves on different terrains. The attribute '''terrain=''speed''''' means that the unit will need to use ''speed'' move points to move onto the terrain with '''name=''terrain''''' (see [[TerrainWML]]).&lt;br /&gt;
** '''[defense]''': describes how likely the unit is to be hit on different terrains. The attribute '''terrain=''defense''''' means that the unit will be hit ''defense'' percent of the time in the terrain with '''name=''terrain'''''.&lt;br /&gt;
** '''[resistance]''': describes how much damage the unit takes from different types of attacks. The attribute '''type=''resistance''''' makes the unit receive '''resistance''' percent of damage, or resist '''100-resistance''' percent of damage from attacks with '''type=''type'''''. So for example, a resistance of fire=110 means, this unit will receive 110% of damage, or have a resistance of -10% as displayed in-game. A value of fire=0 would mean, the unit receives no damage and therefore has a resistance of 100%.&lt;br /&gt;
* '''[race]''': is used to make shortcuts to describe units with similar names. Units from the same advancement tree should generally have the same race. Also, units with the same race should generally be recruitable by the same sides/factions.&lt;br /&gt;
** '''id''': ID for this race. Units with the attribute '''race=''id''''' will be assigned this race. If missing in old WML, the value of the name key will be used as id.&lt;br /&gt;
** '''plural_name''': user-visible name for its people (e.g. &amp;quot;Merfolk&amp;quot; or &amp;quot;Elves&amp;quot;). Currently only used in the in-game help.&lt;br /&gt;
** '''male_name''': user-visible name for the race of the male units (e.g. &amp;quot;Merman&amp;quot;). Currently only used in the in-game unit status.&lt;br /&gt;
** '''female_name''': user-visible name for the race of the female units (e.g. &amp;quot;Mermaid&amp;quot;). Currently only used in the in-game unit status.&lt;br /&gt;
** '''name''': the default value for the three keys above.&lt;br /&gt;
** '''description''': description of this race, used in the race page of the in-game help. Note: currently not used by all mainline races because their descriptions are not ready. But this is already supported by the engine.&lt;br /&gt;
** '''male_names''', '''female_names''': lists of names (i.e. non-translatable strings). They are inputted into the Markov name generator to generate random names. ''male_names'' describes units with '''gender=male'''; ''female_names'' describes units with '''gender=female'''.&lt;br /&gt;
** '''markov_chain_size''': (default 2) number of letters per &amp;quot;syllable&amp;quot;. &amp;quot;Syllables&amp;quot; are groupings of names that the Markov name generator uses to determine names. It does this by running a probability algorithm to guess from the name list which syllables fit well together, which can start or end a name, etc.&lt;br /&gt;
** '''num_traits''': is the number of non-repeating traits each unit of this race can be assigned.&lt;br /&gt;
** '''ignore_global_traits''': 'yes' or 'no'(default). Determines whether global traits (see [traits] above) are applied.&lt;br /&gt;
** '''[trait]''': describes a trait for this race. :&lt;br /&gt;
*** '''id''': unique identifier&lt;br /&gt;
*** '''availability''': describes whether a trait is &amp;quot;musthave&amp;quot; for a race or is available to &amp;quot;any&amp;quot; unit in a race, including leaders, or &amp;quot;none&amp;quot; if it is not normally available, but should be kept when advancing to this unit type. (Traits not available to the advanced unit type at all, are permanently lost upon advancement.) The default is for a trait to only be available to nonleaders. Currently &amp;quot;any&amp;quot; should not be used for traits available in multiplayer. It can be used for campaign specific traits. (Note that currently &amp;quot;musthave&amp;quot; is somewhat misused to have what are really abilities (''undead'' and ''mechanical'') default from a unit type's race. Ideally someone will eventually extend ''race'' to allow for default abilities. It might also be possible to unify traits and abilities with keys to indicate how you get them and what happens to them when you advance, while allowing them to come from race, unit type and unit definitions. There are also display issues related to doing this.)&lt;br /&gt;
*** '''male_name''': text displayed in the status of unit with the trait if the unit is male.&lt;br /&gt;
*** '''female_name''': text displayed in the status of unit with the trait if the unit is female.&lt;br /&gt;
*** '''name''': text displayed in the status of unit with the trait if none of the two above is used.&lt;br /&gt;
*** '''description''': text displayed for the description of the trait.&lt;br /&gt;
*** '''[effect]''': described in [[EffectWML]].&lt;br /&gt;
* '''[hide_help]''': allow to hide some units from the help. Mainly useful if you can't change these units (e.g. mainline units) and thus can't add a 'hide_help=yes' key to them. The following keys and theirs contents uses an 'OR' logic between them.&lt;br /&gt;
** '''type''': list of unit types.&lt;br /&gt;
** '''race''': list of races. Equivalent to all unit types of these races.&lt;br /&gt;
** '''type_adv_tree''': list of unit types. Equivalent to all these types and their advancement trees.&lt;br /&gt;
** '''all''': 'yes' or 'no'(default). 'yes' is equivalent to all unit types (useful before [not])&lt;br /&gt;
** '''[not]''': all the previous keys (except 'all') can also be used in [not] sub-tags. And you can use [not] recursively. For example, if you want to only show the Yeti and the human race except the mage tree, uses:&lt;br /&gt;
 [hide_help]&lt;br /&gt;
     all=yes&lt;br /&gt;
     [not]&lt;br /&gt;
         type=Yeti&lt;br /&gt;
         race=human&lt;br /&gt;
         [not]&lt;br /&gt;
             type_adv_tree=Mage&lt;br /&gt;
         [/not]&lt;br /&gt;
     [/not]&lt;br /&gt;
 [/hide_help]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UnitTypeWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeIdeas&amp;diff=28871</id>
		<title>SummerOfCodeIdeas</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeIdeas&amp;diff=28871"/>
		<updated>2009-03-20T00:23:42Z</updated>

		<summary type="html">&lt;p&gt;Alink: add links to irc logs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compilation of ideas from ML. Needs to be refined (more detailed description, deliverables, workload estimation?):&lt;br /&gt;
&lt;br /&gt;
== I want to be one of your Google Summer of Code students, what should I do... ==&lt;br /&gt;
&lt;br /&gt;
Here is a quick list of things to do to get you started&lt;br /&gt;
* Create an account on gna.org&lt;br /&gt;
* Create an account on the wesnoth forum, and tell an admin on the IRC channel to mark is as a GSoC Student account (Admins are boucman, Ivanovic, mordante, Shadow_Master, Sirp and Turuk)&lt;br /&gt;
* Join the irc channel (#wesnoth-dev on irc.freenode.net) and introduce yourself. We will not give formal interviews, but we will clearly favor people we have learned to know during the selection process (basically communication via IRC is mandatory for our project! it is the main way of &amp;quot;every day communication&amp;quot; for Wesnoth. For the same reason, it's also a good idea to regularly read the [http://wesnoth.debian.net/?C=M;O=A IRC logs].).&lt;br /&gt;
&lt;br /&gt;
* Start a wiki page about your idea, add a link on the bottom of this page and add this information on it:&lt;br /&gt;
** List your account names (gna, forum, irc nick) so that we can recognize you&lt;br /&gt;
** Fill the questionnaire on this page: [[SoC_Information_for_Google#Does_your_organization_have_an_application_template_you_would_like_to_see_students_use.3F_If_so.2C_please_provide_it_now.| List of questions to answer]]&lt;br /&gt;
** Detail your idea as much as possible, look at other students pages, and please give milestones and studies you've done&lt;br /&gt;
** Add a link to the page at the bottom of this page&lt;br /&gt;
&lt;br /&gt;
* Though not mandatory, it is highly advisable to go to the [[EasyCoding]] and [[NotSoEasyCoding]] pages and implement one of these ideas (or any idea of similar scope) so we have an idea how you work. Be sure to use your gna account when submitting these patches so we know who it is coming from. You can also implement some features from our feature request database at gna. When you implement something, also list it on your own page with a reference to the patch.&lt;br /&gt;
&lt;br /&gt;
* For working on Wesnoth you have to be able to compile trunk. To do so you should have a look at the [[WesnothSVN|page about svn]] and afterwards [[CompilingWesnoth|compile Wesnoth svn]].&lt;br /&gt;
&lt;br /&gt;
* Once you have everything done here and think your idea is okay, go to [http://groups.google.com/group/google-summer-of-code-announce/web/guide-to-the-gsoc-web-app-for-student-applicants page at google] to submit your application. You have to submit it before '''Date to be supplied later''' or you have no chance to get in!&lt;br /&gt;
&lt;br /&gt;
== List of Ideas for the Project (Suggestions from the wesnoth developers) ==&lt;br /&gt;
&lt;br /&gt;
Here is only a short description of possible Ideas we have, each has a page of its own with a more detailed version on it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize implementation of WML for memory usage ===&lt;br /&gt;
&lt;br /&gt;
Based on this idea: [http://dave.wesnoth.org/?p=9] optimize WML to minimize its memory usage. High memory usage has been a problem for Wesnoth, and this project will aim to reduce it.&lt;br /&gt;
&lt;br /&gt;
=== Implement campaign statistics reports on stats.wesnoth.org ===&lt;br /&gt;
&lt;br /&gt;
Wesnoth has an infrastructure which records details of campaigns that players play into a centralized MySQL database. However, we only have rudimentary reports based on this MySQL database available at this time, at [http://stats.wesnoth.org].&lt;br /&gt;
&lt;br /&gt;
This project would involve writing a stats reporting web site which would take the data from the MySQL database and produce reports in chart and table form. Campaign designers would be able to use these reports to gather feedback on their campaigns and get ideas for improvements.&lt;br /&gt;
&lt;br /&gt;
A student could largely make their choice of infrastructure for creating the Website -- whether they prefer Python, Perl, Ruby, PHP, etc. This is a great opportunity for someone who doesn't want to dive into hardcore C++ to make a valuable contribution to Wesnoth.&lt;br /&gt;
&lt;br /&gt;
=== Extending the Multiplayer server ===&lt;br /&gt;
&lt;br /&gt;
Our multiplayer community is generally strong and healthy, but we believe its growth is limited by some problems in the interface of the multiplayer lobby.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Multiplayer server]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Addon server ===&lt;br /&gt;
Wesnoth has an addon server which offers users to upload user &lt;br /&gt;
made content (UMC). This allows all other users of Wesnoth&lt;br /&gt;
to easily download and install this content. The server was &lt;br /&gt;
originally written for user-made campaigns but contains a lot&lt;br /&gt;
more types of addons nowadays. Both the server side and the &lt;br /&gt;
client side need to be improved.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Addon Server]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== WML validation schemes ===&lt;br /&gt;
Wesnoth uses WML as basic data structure. Over the years&lt;br /&gt;
this language has evolved and got more complex. At the&lt;br /&gt;
moment the WML is validated at runtime and in case of a&lt;br /&gt;
problem the engine stops. With schemes these problems can&lt;br /&gt;
be validated when loading the WML, making it easier to find&lt;br /&gt;
problems before running into them.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Schemes]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Write a primitive library for Formula AI ===&lt;br /&gt;
&lt;br /&gt;
Wesnoth has always had a simple C++ based AI. David (our lead developer) has been working on a simple language to write AI in Wesnoth: [[FormulaAI]]&lt;br /&gt;
&lt;br /&gt;
The Wesnoth AI is used as an opponent in most campaigns, and as such is an important piece of code for the Wesnoth project. Unfortunately, because the skills required to understand and modify it are rather arcane, it is also one of the most neglected parts of the Wesnoth code. This is a place where a lot of research and useful work could be done. But keep in mind that [[WhyWritingAWesnothAIIsHard|writing an AI for Wesnoth is difficult]].&lt;br /&gt;
&lt;br /&gt;
Writing a whole AI is so complicated that we believe it can't be done in a single Summer of code. All proposals should keep that in mind and try to identify an interesting subset that would be workable in the limited time of a summer of code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas FormulaAI]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Savegame reorganization ===&lt;br /&gt;
The savegame formats of Wesnoth for single player campaigns&lt;br /&gt;
and multiplayer differ from each other. And they are processed&lt;br /&gt;
differently as well. Now there is an additional request coming&lt;br /&gt;
up: Multiplayer campaigns. The task will be to unify the savegames&lt;br /&gt;
for all types of scenarios in order to provide a maintainable code&lt;br /&gt;
again.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Savegame]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible ideas to be fleshed out ===&lt;br /&gt;
A MapGenerator rewrite - better scalable for outdoor maps, plus the possibility to define areas (similar to the caverns in the cave generator) etc.&lt;br /&gt;
&lt;br /&gt;
=== Make your own ideas ===&lt;br /&gt;
If you have your own idea the best thing is to join IRC wesnoth-dev at irc.freenode.net and discuss the idea with the developers there. If the developers think your idea is interesting and like the feature you can start to turn it into a full proposal. Once done discuss it again on IRC so the developers can accept your idea.&lt;br /&gt;
&lt;br /&gt;
== Information about our Project ==&lt;br /&gt;
The information we provided google with about our project can be looked up at the site [[SoC Information for Google]].&lt;br /&gt;
&lt;br /&gt;
Also see the [[DeveloperResources]] link (from the [[Project]] page).&lt;br /&gt;
&lt;br /&gt;
== People to bug on IRC ==&lt;br /&gt;
We have prepared a list of people with their &amp;quot;area of competence&amp;quot;. This is to give you an idea on which areas those people can be of help for you. Of course you should always just ask in the IRC chan, but those are the most likely ones to answer questions in the respective area. And here is the list:&lt;br /&gt;
&lt;br /&gt;
[[SoC People to bug on IRC]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Student pages ==&lt;br /&gt;
&lt;br /&gt;
Please add a link to your wiki page below&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Velory| Velory - SoC Proposal]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_AI_Improvement_Crab| Crab - SoC Proposal - AI Improvement]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Sparksteel | Sparksteel - Improving the AI engine design]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code|*]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Distributing_content&amp;diff=26391</id>
		<title>Distributing content</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Distributing_content&amp;diff=26391"/>
		<updated>2008-08-11T09:08:52Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* The Campaign Server */  remove info about a 1.5.1 bug&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Forum ==&lt;br /&gt;
&lt;br /&gt;
The [http://www.wesnoth.org/forum/ BFW forum] is a good way to distribute small creations, like single multiplayer maps.  Larger creations, like unit packs or campaigns, should be compressed before uploading them.  Note that you may encounter a size limit on attachments.&lt;br /&gt;
&lt;br /&gt;
Also, there is a [http://www.wesnoth.org/forum/viewtopic.php?t=2014 legal announcement] that you should read before distributing anything on the forum. Basically, by posting you say that you own the license to what you are posting, and that you are licensing it under the [http://www.gnu.org/copyleft/gpl.html General Public License].&lt;br /&gt;
&lt;br /&gt;
== The Campaign Server ==&lt;br /&gt;
&lt;br /&gt;
The campaign server is the preferred way to distribute your creations, but it is more suited for larger projects.  It currently lacks advanced organization features such as filtering and reviewing, so adding hundreds of little things makes it harder to find anything.  Basically, the server should not be used to post single maps, units, songs, or artwork, but map packs, campaigns, entire eras, music packs, and unit packs are fine.&lt;br /&gt;
&lt;br /&gt;
Once you are ready to publish, here is how you access the campaign server:&lt;br /&gt;
# Open Wesnoth&lt;br /&gt;
# Select &amp;quot;Get Add-ons&amp;quot; from the main menu&lt;br /&gt;
# Select &amp;quot;Publish Campaign: ''Your Campaign Name''&amp;quot; (the last entry in the list of campaigns)&lt;br /&gt;
&lt;br /&gt;
Anything you distribute on the server will be upload from and downloaded to the ''userdata''/data/campaigns directory regardless of what it is (units, maps, campaign, etc).  For this reason, you need three things in the campaigns directory to distribute via the server:&lt;br /&gt;
# A .cfg file, for example MyCampaign.cfg&lt;br /&gt;
# A .pbl file, for example MyCampaign.pbl&lt;br /&gt;
# A folder, for example MyCampaign&lt;br /&gt;
&lt;br /&gt;
==== General Reading ====&lt;br /&gt;
* [[BuildingCampaignsThePBLFile|General information about the .pbl file]] - It has a campaign flavor, but it is adaptable to any content&lt;br /&gt;
* [[PblWML|Syntax reference for the .pbl file]]&lt;br /&gt;
&lt;br /&gt;
==== Content-specific instructions ====&lt;br /&gt;
* Campaign - see the [[BuildingCampaigns|Buidling Campaigns Article]]&lt;br /&gt;
** [[BuildingCampaignsDistribution|About distributing campaigns]]&lt;br /&gt;
* Multiplayer era - see the [[BuildingFactions#Adding_a_whole_new_era_with_its_own_factions_-_modular|MP Era Article]]&lt;br /&gt;
* Unit pack - see the [[BuildingUnits#Distributing_your_unit|Units Article]]&lt;br /&gt;
* Map pack - see the&lt;br /&gt;
* Others?&lt;br /&gt;
&lt;br /&gt;
(If I don't have BFW on the computer I'm working on, but I have it on a different computer, on which I don't Know how to find it's &amp;quot;./wesnoth/userdata&amp;quot; folder, how do I publish my Campaigns?-Drake Raider)&lt;br /&gt;
&lt;br /&gt;
(To Find that folder, go into prefrences and make it in a window. Then at the top of the screen there should be a menu. Not at the top of the game screen but computer screen. Saerch the menu until you see user data folder.-Knight)&lt;br /&gt;
&lt;br /&gt;
==== License ====&lt;br /&gt;
You should note that by uploading anything to the campaign server, you say that you own the license to all content in your upload and that it is under the GPL. Whenever you upload or update your content pack, you will have to say &amp;quot;OK&amp;quot; to this statement: &amp;quot;All campaigns uploaded to this server must be licensed under the terms of the GNU General Public License (GPL). By uploading content to this server, you certify that you have the right to placethe content under the conditions of the GPL, and choose to do so.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Create]]&lt;br /&gt;
* [[BuildingCampaignsDistribution]]&lt;br /&gt;
* [[BuildingCampaignsThePBLFile]]&lt;br /&gt;
* [[PblWML]]&lt;br /&gt;
* [[Wesnoth:Copyrights]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Create]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=Distributing_content&amp;diff=26125</id>
		<title>Distributing content</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=Distributing_content&amp;diff=26125"/>
		<updated>2008-07-08T10:05:18Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* The Campaign Server */  note about a 1.5.1 bug and a trick yo avoid it&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Forum ==&lt;br /&gt;
&lt;br /&gt;
The [http://www.wesnoth.org/forum/ BFW forum] is a good way to distribute small creations, like single multiplayer maps.  Larger creations, like unit packs or campaigns, should be compressed before uploading them.  Note that you may encounter a size limit on attachments.&lt;br /&gt;
&lt;br /&gt;
Also, there is a [http://www.wesnoth.org/forum/viewtopic.php?t=2014 legal announcement] that you should read before distributing anything on the forum. Basically, by posting you say that you own the license to what you are posting, and that you are licensing it under the [http://www.gnu.org/copyleft/gpl.html General Public License].&lt;br /&gt;
&lt;br /&gt;
== The Campaign Server ==&lt;br /&gt;
&lt;br /&gt;
The campaign server is the preferred way to distribute your creations, but it is more suited for larger projects.  It currently lacks advanced organization features such as filtering and reviewing, so adding hundreds of little things makes it harder to find anything.  Basically, the server should not be used to post single maps, units, songs, or artwork, but map packs, campaigns, entire eras, music packs, and unit packs are fine.&lt;br /&gt;
&lt;br /&gt;
Once you are ready to publish, here is how you access the campaign server:&lt;br /&gt;
# Open Wesnoth&lt;br /&gt;
# Select &amp;quot;Get Add-ons&amp;quot; from the main menu&lt;br /&gt;
# Select &amp;quot;Publish Campaign: ''Your Campaign Name''&amp;quot; (the last entry in the list of campaigns)&lt;br /&gt;
&lt;br /&gt;
{{DevFeature}} Version 1.5.1 has a bug hiding the last entry of these options. You can use 1.5.0 or trunk to upload an add-on. Another trick is to create (but not publish) a second dummy add-on with a name starting by 'z'. Because of the alphabetical order, this one will take the bad missing row, making accessible the option of your real add-on.&lt;br /&gt;
&lt;br /&gt;
Anything you distribute on the server will be upload from and downloaded to the ''userdata''/data/campaigns directory regardless of what it is (units, maps, campaign, etc).  For this reason, you need three things in the campaigns directory to distribute via the server:&lt;br /&gt;
# A .cfg file, for example MyCampaign.cfg&lt;br /&gt;
# A .pbl file, for example MyCampaign.pbl&lt;br /&gt;
# A folder, for example MyCampaign&lt;br /&gt;
&lt;br /&gt;
==== General Reading ====&lt;br /&gt;
* [[BuildingCampaignsThePBLFile|General information about the .pbl file]] - It has a campaign flavor, but it is adaptable to any content&lt;br /&gt;
* [[PblWML|Syntax reference for the .pbl file]]&lt;br /&gt;
&lt;br /&gt;
==== Content-specific instructions ====&lt;br /&gt;
* Campaign - see the [[BuildingCampaigns|Buidling Campaigns Article]]&lt;br /&gt;
** [[BuildingCampaignsDistribution|About distributing campaigns]]&lt;br /&gt;
* Multiplayer era - see the [[BuildingFactions#Adding_a_whole_new_era_with_its_own_factions_-_modular|MP Era Article]]&lt;br /&gt;
* Unit pack - see the [[BuildingUnits#Distributing_your_unit|Units Article]]&lt;br /&gt;
* Map pack - see the&lt;br /&gt;
* Others?&lt;br /&gt;
&lt;br /&gt;
(If I don't have BFW on the computer I'm working on, but I have it on a different computer, on which I don't Know how to find it's &amp;quot;./wesnoth/userdata&amp;quot; folder, how do I publish my Campaigns?-Drake Raider)&lt;br /&gt;
&lt;br /&gt;
(To Find that folder, go into prefrences and make it in a window. Then at the top of the screen there should be a menu. Not at the top of the game screen but computer screen. Saerch the menu until you see user data folder.-Knight)&lt;br /&gt;
&lt;br /&gt;
==== License ====&lt;br /&gt;
You should note that by uploading anything to the campaign server, you say that you own the license to all content in your upload and that it is under the GPL. Whenever you upload or update your content pack, you will have to say &amp;quot;OK&amp;quot; to this statement: &amp;quot;All campaigns uploaded to this server must be licensed under the terms of the GNU General Public License (GPL). By uploading content to this server, you certify that you have the right to placethe content under the conditions of the GPL, and choose to do so.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[Create]]&lt;br /&gt;
* [[BuildingCampaignsDistribution]]&lt;br /&gt;
* [[BuildingCampaignsThePBLFile]]&lt;br /&gt;
* [[PblWML]]&lt;br /&gt;
* [[Wesnoth:Copyrights]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Create]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=UnitTypeWML&amp;diff=26059</id>
		<title>UnitTypeWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=UnitTypeWML&amp;diff=26059"/>
		<updated>2008-06-28T18:32:40Z</updated>

		<summary type="html">&lt;p&gt;Alink: add info about the old &amp;quot;attacks&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== The [unit] tag ==&lt;br /&gt;
&lt;br /&gt;
Each '''[unit]''' tag defines one unit type. (for the use of [unit] to create a unit, see [[SingleUnitWML]])  Note: this tag has been renamed {{DevFeature}} and is now '''[unit_type]'''.&lt;br /&gt;
&lt;br /&gt;
Unit animation syntax is described in [[AnimationWML]].&lt;br /&gt;
&lt;br /&gt;
The following key/tags are recognized:&lt;br /&gt;
{| class=&amp;quot;gallery&amp;quot; style=&amp;quot;text-align:left;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! advancefrom&lt;br /&gt;
| the previous level unit on the advancement tree&lt;br /&gt;
- allows a campaign-specific unit to be spliced into an already existing advancement tree.  It should generally be used only inside a campaign ifdef, to prevent changes to other campaigns.  This tag makes changes to the ''advanceto'' and ''experience'' keys of a base unit to make it advance into this unit.  It takes these keys:&amp;lt;br&amp;gt; ** ''unit'' the id of the base unit from which this unit advances.  This adds the unit into the list of units which ''unit'' can advance into.&amp;lt;br&amp;gt;** [[experience]] is optional.  If present and lower than the experience already required for the base unit to advance, then the experience to advance is lowered.  Note: this will also lower the experience required to advance to other units which the base unit can advance into.&lt;br /&gt;
|-&lt;br /&gt;
! advanceto&lt;br /&gt;
| When this unit has experience greater than or equal to [[experience]], it is replaced by a unit of the type that the value of [[advanceto]] refers to. All modifications that have been done to the unit are applied to the unit it is replaced by.&lt;br /&gt;
|-&lt;br /&gt;
! alignment&lt;br /&gt;
| how the unit's damage should be affected by its lawful bonus (See [[TimeWML]]).&lt;br /&gt;
|-&lt;br /&gt;
! cost&lt;br /&gt;
| when a player recruits a unit of this type, the player loses ''cost'' gold. If this would cause gold to drop below 0,  the unit cannot be recruited.&lt;br /&gt;
|-&lt;br /&gt;
! do_not_list&lt;br /&gt;
| {{DevFeature}} Not used by the game, but by tools for browsing and listing the unit tree. If this is 'yes', the unit will be ignored by these tools. &lt;br /&gt;
|-&lt;br /&gt;
! experience&lt;br /&gt;
| When this unit has experience greater than or equal to ''experience'', it is replaced by a unit with 0 experience of the type that the value of ''advanceto'' refers to. All modifications that have been done to the unit are applied to the unit it is replaced by.&lt;br /&gt;
|-&lt;br /&gt;
! gender&lt;br /&gt;
| has a value of either ''male'' or ''female'', and determines which of the keys ''male_names'' and ''female_names''  should be read. When a unit of this type is recruited, it will be randomly assigned a name by the random name generator, which will use these names as a base.&lt;br /&gt;
|-&lt;br /&gt;
! hide_help&lt;br /&gt;
|  determines if the unit type will appear in the in-game help. Possible values ''true'' and ''false'', defaults to ''false''.&lt;br /&gt;
|-&lt;br /&gt;
! hitpoints&lt;br /&gt;
| the maximum HP that the unit has, and the HP it has when it is created.&lt;br /&gt;
|-&lt;br /&gt;
! id&lt;br /&gt;
|the value of the ''type'' key for units of this type. An ''id'' should consist only of alphanumerics and spaces (or underscores). ''type'' keys are found in [[SingleUnitWML]] and [[FilterWML]]. For example, id=Drake Flare&lt;br /&gt;
WARNING : characters &amp;quot;$&amp;quot;, &amp;quot;&amp;amp;&amp;quot;, &amp;quot;*&amp;quot;, &amp;quot;(&amp;quot; and &amp;quot;)&amp;quot; are illegal for use in the unit id and must be avoided because they might lead to corrupted saved games&lt;br /&gt;
|-&lt;br /&gt;
! level&lt;br /&gt;
| the amount of upkeep the unit costs.  After this unit fights, its opponent gains ''level'' experience. See also kill_experience ([[GameConfigWML]]), and leadership ([[AbilitiesWML]]).&lt;br /&gt;
|-&lt;br /&gt;
! movement&lt;br /&gt;
| the number of move points that this unit recieves each turn.&lt;br /&gt;
|-&lt;br /&gt;
! movetype&lt;br /&gt;
| See '''[[movetype]]''', [[UnitsWML]]. Note that the tags '''[[movement_costs]]''', '''[[defense]]''', and '''[[resistance]]''' can be used to modify this movetype.&lt;br /&gt;
|-&lt;br /&gt;
! attacks&lt;br /&gt;
| the number of times that this unit can attack each turn.&lt;br /&gt;
|-&lt;br /&gt;
! name&lt;br /&gt;
|(translatable) displayed in the Status Table for units of this type.&lt;br /&gt;
|-&lt;br /&gt;
! num_traits&lt;br /&gt;
| the number of traits that units of this type should receive when they are recruited, overriding the value set in the [race] tag.&lt;br /&gt;
|-&lt;br /&gt;
! profile&lt;br /&gt;
| the portrait image to use for this unit type. You can also set a portrait for an individual unit instead of the whole unit type (see [[SingleUnitWML]]).&lt;br /&gt;
|-&lt;br /&gt;
! race&lt;br /&gt;
| See '''[race]''', [[UnitsWML]].  Also used in standard unit filter (see [[FilterWML]]).&lt;br /&gt;
|-&lt;br /&gt;
! unit_description&lt;br /&gt;
| (translatable) the text displayed in the unit descriptor box for this unit. Default 'No description available...'.&lt;br /&gt;
|-&lt;br /&gt;
! undead_variation&lt;br /&gt;
| Which image to use when a unit of this type is killed by a unit with the plague ability.&lt;br /&gt;
|-&lt;br /&gt;
! usage&lt;br /&gt;
| the way that the AI should recruit this unit, as determined by the scenario designer. (See ''recruitment_pattern'', [[AiWML]]).  The following are conventions on usage:&amp;lt;br&amp;gt; ** 'scout' Fast,&amp;lt;br&amp;gt; ** 'fighter' Melee fighter,&amp;lt;br&amp;gt; ** 'archer' Ranged fighter,&amp;lt;br&amp;gt; ** 'mixed fighter' Melee and ranged fighter, and&amp;lt;br&amp;gt; ** 'healer' Specialty 'heals' or 'cures'.&lt;br /&gt;
|-&lt;br /&gt;
! zoc&lt;br /&gt;
| if &amp;quot;yes&amp;quot; the unit will have a zone of control regardless of level.  If present but set to anything other than &amp;quot;yes,&amp;quot; the unit will have no zone of control.  If the tag is omitted, zone of control is dictated by unit level (level 0 = no zoc, level 1+ = has zoc).&lt;br /&gt;
|}&lt;br /&gt;
==== After max level advancement (AMLA) ====&lt;br /&gt;
* '''[advancement]''': describes what happens to a unit when it reaches the XP required for advancement.  It is considered as an advancement in the same way as advancement described by '''advanceto'''; however, if the player chooses this advancement, the unit will have one or more effects applied to it instead of advancing.&lt;br /&gt;
** '''description''': a description (see [[DescriptionWML]]) displayed as the option for this advancement if there is another advancement option that the player must choose from; otherwise, the advancement is chosen automatically and this key is irrelevant.&lt;br /&gt;
** '''image''': an image to display next to the description in the advancement menu.&lt;br /&gt;
** '''max_times''': default 1.  The maximum times the unit can be awarded this advancement.&lt;br /&gt;
** '''strict_amla''':  (yes|no) default=no. Disable the AMLA if the unit can advance to another unit.&lt;br /&gt;
** '''require_amla''': An optional list of AMLA ''id'' keys that act as prerequisites for this advancement to become available.  Order is not important, and an AMLA id can be repeated any number of times to indicate that another advancement must be chosen several times before this advancement option will become available.&lt;br /&gt;
*** example: &amp;lt;tt&amp;gt;require_amla=tough,tough,incr_damage&amp;lt;/tt&amp;gt; assumes there exist other [advancement] options called ''id=tough'' and ''id=incr_damage''.  Once ''tough'' is chosen twice and ''incr_damage'' is chosen once, then the current [advancement] will become available.&lt;br /&gt;
*** ''require_amla=tough,incr_damage,tough'' is an equivalent way of expressing this.&lt;br /&gt;
** '''[effect]''': A modification applied to the unit whenever this advancement is chosen.  See [[EffectWML]]&lt;br /&gt;
&lt;br /&gt;
==== Other tags ====&lt;br /&gt;
* '''[base_unit]''': Contains one attribute, '''id''', which must be the ID of a unit type.  If specified, the UnitWML for that unit is copied into this one.  Subsequent attributes modify the copy. (1.3.7 and later versions only.)&lt;br /&gt;
* '''[attack]''': one of the unit's attacks.&lt;br /&gt;
** '''description''': a translatable text for name of the attack, to be displayed to the user.&lt;br /&gt;
** '''name''': the name of the attack. Used as a default description, if ''description'' is not present, and to determine the default icon, if ''icon'' is not present (if ''name=x'' then ''icon=attacks/x.png'' is assumed unless present).  Non-translatable.  Used for the ''has_weapon'' key; see [[FilterWML]]&lt;br /&gt;
** '''type''': the damage type of the attack.  Used in determining resistance to this attack (see '''[resistances]''', [[UnitsWML]]).  Possible values are 'blade', 'pierce', 'impact', 'fire', 'cold', and 'arcane'.&lt;br /&gt;
** '''[specials]''': contains the specials of the attack. See [[AbilitiesWML]].&lt;br /&gt;
** '''icon''': the image to use as an icon for the attack in the attack choice menu, as a path relative to the images directory.&lt;br /&gt;
** '''range''': the range of the attack.  Used to determine the enemy's retaliation, which will be of the same type.  Also displayed on the status table in parentheses; 'melee'(default) displays &amp;quot;melee&amp;quot;, while 'ranged' displays &amp;quot;ranged&amp;quot;. Range can be anything. Standard values are now &amp;quot;melee&amp;quot; and &amp;quot;ranged&amp;quot;. From now on, ''short'' and ''long'' will be treated as totally different ranges. You can create any number of ranges now (with any name), and units can only retaliate against attacks for which they have a corresponding attack of the same range. This value is translatable.&lt;br /&gt;
** '''damage''': the damage of this attack&lt;br /&gt;
** '''number''': the number of strikes per attack this weapon has&lt;br /&gt;
For those two following settings, the engine usually chooses the attack with the best average total damages * weight (default weight = 1.0).&lt;br /&gt;
** '''attack_weight''': helps the AI to choose which attack to use when attacking; highly weighted attacks are more likely to be used. Setting it to 0 disables the attack on attack&lt;br /&gt;
** '''defense_weight''': used to determine which attack is used for retaliation. This affects gameplay, as the player is not allowed to determine his unit's retaliation weapon. Setting it to 0 disable the attacks on defense &lt;br /&gt;
** '''movement_used''': determines how many movement points using this attack expends. By default all movement is used up, set this to 0 to make attacking with this attack expend no movement.&lt;br /&gt;
&lt;br /&gt;
** '''[animation]'''&lt;br /&gt;
:: This describes an animation for this attack. If multiple animations are present, one will be randomly chosen each time the unit attacks. See [[AnimationWML]] for possible keys.&lt;br /&gt;
&lt;br /&gt;
* '''[defend]''': See [[AnimationWML]]&lt;br /&gt;
* '''[death]''': See [[AnimationWML]]&lt;br /&gt;
* '''[teleport_anim]''': See [[AnimationWML]]&lt;br /&gt;
* '''[extra_anim]''': See [[AnimationWML]]&lt;br /&gt;
* '''[event]''': Any [event] written inside the [unit] tag will get included into any scenario where a unit of this type appears in. Note that such events get included when a unit of this type first appears in the scenario, not automatically when the scenario begins (meaning that ''name=prestart'' events, for example, would usually never trigger). See [[EventWML]] and [[WML_Abilities]]&lt;br /&gt;
&lt;br /&gt;
* '''[variation]''': Defines a variation of a unit. Variations are invoked with an [effect] tag. They are currently used for graphical variations (giving character sprites new weapons) but theoretically you could do anything with it.&lt;br /&gt;
** '''variation_name''': The name of the variation.&lt;br /&gt;
** '''inherit''': if ''yes'', inherits all the properties of the base unit.&lt;br /&gt;
: All other keys in '''[variation]''' are the same as for '''[unit]''' itself.&lt;br /&gt;
&lt;br /&gt;
* '''[male]''', '''[female]''': They can contain all '''[unit]''' tags, to specify a variation of different gender for a unit.&lt;br /&gt;
** '''inherit''': if ''yes'', inherits all the properties of the base unit. defaults to yes&lt;br /&gt;
&lt;br /&gt;
* '''[abilities]''': Defines the abilities of a unit. See [[AbilitiesWML]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[AnimationWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
* [[TerrainWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=IntroWML&amp;diff=18651</id>
		<title>IntroWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=IntroWML&amp;diff=18651"/>
		<updated>2007-10-11T17:03:14Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* The [story] tag */  add the centered key&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== The [story] tag ==&lt;br /&gt;
&lt;br /&gt;
The '''[story]''' tag is a series of images and text to display as the first part of the intro screen.&lt;br /&gt;
&lt;br /&gt;
The only tag recognized for '''[story]''' is '''[part]'''.&lt;br /&gt;
Each '''[part]''' represents one image and text.&lt;br /&gt;
The part is displayed until the user clicks on the &amp;quot;Next&amp;gt;&amp;gt;&amp;gt;&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
The following key/tags are recognized for '''[part]''':&lt;br /&gt;
* ''background'' the image to display. Story images are usually created specially for this purpose, except for the map.&lt;br /&gt;
* ''story'' (translatable) the text to display below the image.&lt;br /&gt;
* ''show_title'' whether to display the title of the scenario at the top&lt;br /&gt;
* ''music'' change to this music&lt;br /&gt;
* '''[image]''' an image to display.&lt;br /&gt;
** ''x'', ''y'' the location in pixels to draw the image. The x,y pixel location is relative to the image specified in background, but not in a normal way.  The background image is scaled up or down to fill the screen resolution, but images are never scaled in size.  Their coordinates, however, are scaled.  It's basically a big pain in the rear.  Example: I have a background image at 640x480 and an overlay at 640x480.  To horizontally center the overlay on a 1024x768 screen, I want to position it at x=192.  This is because 1024-640 = 384 total extra pixel space, then 384/2 = 192.  This results in equal space on both sides of the overlay.  However, now you have to account for the background scaling.  The background image at 640 is scaled up to 1024, a scaling factor of 1.6.  All image locations are also scaled up, so the overlay is not drawn at x=192, rather it is drawn at x=192*1.6 or x=307!  To compensate for this, divide the desired pixel location by the scaling factor.  In the example, x_compensated=192/1.6 or x_compensated=120.&lt;br /&gt;
** ''centered'' {{DevFeature}} If &amp;quot;yes&amp;quot;, use the center of the image when placing at the x,y coordinates, which is useful since this image is not scaled like the background is (and by centering no need to worry about this).&lt;br /&gt;
** ''file'' the image to display.&lt;br /&gt;
** ''delay'' the time to delay drawing this image.&lt;br /&gt;
&lt;br /&gt;
See also the '''DOT''' and '''CROSS''' macros, in [[UtilWML]]&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=18646</id>
		<title>User:Alink</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=18646"/>
		<updated>2007-10-11T12:27:35Z</updated>

		<summary type="html">&lt;p&gt;Alink: Flush this outdated and unmaintained content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=UnitsWML&amp;diff=18109</id>
		<title>UnitsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=UnitsWML&amp;diff=18109"/>
		<updated>2007-09-19T12:58:16Z</updated>

		<summary type="html">&lt;p&gt;Alink: update [race] keys&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== the [units] tag ==&lt;br /&gt;
&lt;br /&gt;
This tag is a top level WML tag which is in game.cfg.&lt;br /&gt;
It defines the set of all units in Wesnoth.&lt;br /&gt;
&lt;br /&gt;
The following subtags are recognized:&lt;br /&gt;
* '''[unit]''' describes one unit type. See [[UnitWML]] for syntax.&lt;br /&gt;
* '''[trait]''' describes a global trait.&lt;br /&gt;
All races with the attribute '''ignore_global_traits=no''' will have this trait.&lt;br /&gt;
See '''[trait]''' below for syntax.&lt;br /&gt;
* '''[movetype]''' used to make shortcuts to describe units with similar terrain handicaps. Units from the same advancement tree should generally have the same movetype.&lt;br /&gt;
** ''name'' an ID for this movetype. Units with the attribute '''movetype=''name''''' will be assigned this movetype.&lt;br /&gt;
** ''flies'' either 'true' or 'false'(default). A unit with ''flies=true'' does not have its image's height adjusted for different terrains.&lt;br /&gt;
** '''[movement_costs]''' describes how fast the unit moves on different terrains. The attribute '''terrain=''speed''''' means that the unit will need to use ''speed'' move points to move onto the terrain with '''name=''terrain''''' (see [[TerrainWML]]).&lt;br /&gt;
** '''[defense]''' describes how likely the unit is to be hit on different terrains. The attribute '''terrain=''defense''''' means that the unit will be hit ''defense'' percent of the time in the terrain with '''name=''terrain'''''.&lt;br /&gt;
** '''[resistance]''' describes how much damage the unit takes from different types of attacks. The attribute '''type=''resistance''''' makes the unit receive '''resistance''' percent of damage, or resist '''100-resistance''' percent of damage from attacks with '''type=''type'''''. So for example, a resistance of fire=110 means, this unit will receive 110% of damage, or have a resistance of -10% as displayed in-game. A value of fire=0 would mean, the unit receives no damage and therefore has a resistance of 100%.&lt;br /&gt;
* '''[race]''' is used to make shortcuts to describe units with similar names. Units from the same advancement tree should generally have the same race. Also, units with the same race should generally be recruitable by the same sides/factions.&lt;br /&gt;
** ''id'' {{DevFeature}} ID for this race. Units with the attribute '''race=''id''''' will be assigned this race. If missing in old WML, the value of the name key will be used as id.&lt;br /&gt;
** ''name'' stable version use this as ID for this race. {{DevFeature}} Now it's the user-visible name for its people (e.g. &amp;quot;Elves&amp;quot;). Currently only used in the in-game help.&lt;br /&gt;
** ''description'' description of this race, used in the race page of the in-game help. Note: currently not used by mainline races because their descriptions are not ready. But this is already supported by the engine.&lt;br /&gt;
** ''male_names'', ''female_names'' lists of names (i.e. non-translatable strings). They are inputted into the Markov name generator to generate random names. ''male_names'' describes units with '''gender=male'''; ''female_names'' describes units with '''gender=female'''.&lt;br /&gt;
** ''markov_chain_size'' (default 2) number of letters per &amp;quot;syllable&amp;quot;. &amp;quot;Syllables&amp;quot; are groupings of names that the Markov name generator uses to determine names. It does this by running a probability algorithm to guess from the name list which syllables fit well together, which can start or end a name, etc.&lt;br /&gt;
** ''not_living'' 'yes' or 'no'(default). Units with '''not_living=yes''' cannot be poisoned, drained from, or plagued (see [[AbilitiesWML]]). {{DevFeature}} ''not_living'' is no longer a property of race. Instead it is a per unit state that derives from the undead and mechanical traits.&lt;br /&gt;
** ''num_traits'' is the number of non-repeating traits each unit of this race can be assigned.&lt;br /&gt;
** ''ignore_global_traits'' 'yes' or 'no'(default). Determines whether global traits (see [traits] above) are applied.&lt;br /&gt;
** '''[trait]''' describes a trait for this race. :&lt;br /&gt;
*** ''id'' unique identifier&lt;br /&gt;
*** ''availability'' {{DevFeature}} describes whether a trait is &amp;quot;musthave&amp;quot; for a race or is available to &amp;quot;any&amp;quot; unit in a race, including leaders, or &amp;quot;none&amp;quot; if it is not normally available, but should be kept when advancing to this unit type. (Traits not available to the advanced unit type at all, are permanently lost upon advancement.) The default is for a trait to only be available to nonleaders. Currently &amp;quot;any&amp;quot; should not be used for traits available in multiplayer. It can be used for campaign specific traits. (Note that currently &amp;quot;musthave&amp;quot; is somewhat misused to have what are really abilities (''undead'' and ''mechanical'') default from a unit type's race. Ideally someone will eventually extend ''race'' to allow for default abilities. It might also be possible to unify traits and abilities with keys to indicate how you get them and what happens to them when you advance, while allowing them to come from race, unit type and unit definitions. There are also display issues related to doing this.)&lt;br /&gt;
*** ''male_name'' {{DevFeature}} text displayed in the status of unit with the trait if the unit is male.&lt;br /&gt;
*** ''female_name'' {{DevFeature}} text displayed in the status of unit with the trait if the unit is female.&lt;br /&gt;
*** ''name'' text displayed in the status of unit with the trait if none of the two above is used.&lt;br /&gt;
*** ''description'' text displayed for the description of the trait.&lt;br /&gt;
*** '''[effect]''', described in [[EffectWML]].&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UnitWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GameConfigWML&amp;diff=16535</id>
		<title>GameConfigWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GameConfigWML&amp;diff=16535"/>
		<updated>2007-07-20T14:27:05Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* The [game_config] tag */ added some keys about masks used on map&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has several unknown informations; they are represented by '???'.&lt;br /&gt;
Feel free to replace them with actual data.&lt;br /&gt;
&lt;br /&gt;
{{WML Tags}}&lt;br /&gt;
== The [game_config] tag ==&lt;br /&gt;
&lt;br /&gt;
This tag is a top level WML tag which can only be used once because&lt;br /&gt;
it defines basic settings that are used everywhere in the game.&lt;br /&gt;
In official versions of Wesnoth it is in ''game.cfg''; values used there are labeled 'standard'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following keys are recognised&lt;br /&gt;
* ''base_income'' (standard 2) how much your leader earns without any villages&lt;br /&gt;
* ''heal_amount'' (standard 4) how much the 'heal' ability (see [[AbilitiesWML]]) heals per unit&lt;br /&gt;
* ''healer_heals_per_turn'' (standard 8) how much a healer can heal per turn (total).&lt;br /&gt;
Healing is distributed clockwise, starting north of the healer,&lt;br /&gt;
until ''healer_heals_per_turn'' hitpoints have been regenerated.&lt;br /&gt;
* ''cure_amount'' (standard 8) how much the 'cure' ability heals per unit&lt;br /&gt;
* ''curer_heals_per_turn'' (standard 18) how much a curer can heal per turn (total)&lt;br /&gt;
* ''rest_heal_amount'' (standard 2) how much HP a unit gains each turn it rests&lt;br /&gt;
* ''recall_cost'' (standard 20) how much it costs to recall a unit; this cost is independent of level.&lt;br /&gt;
* ''kill_experience'' (standard 8)&lt;br /&gt;
killing a unit with ''level=X'' will give ''X''*''kill_experience'' experience to the killing unit.&lt;br /&gt;
However, if a unit has ''level=0'', it will still give half of ''X'' experience.&lt;br /&gt;
&lt;br /&gt;
* ''icon'' (standard 'wesnoth-icon.png') the game icon file&lt;br /&gt;
* ''title'' (standard 'misc/title.png') the title screen image&lt;br /&gt;
* ''logo'' (standard 'misc/logo.png') the wesnoth logo which will be put over the title image&lt;br /&gt;
* ''title_music'' (standard 'main_menu.ogg') the music to play at the title screen&lt;br /&gt;
* ''anonymous_music'' (standard 'main_menu.ogg') the music to play during an unknown faction turn (1.1.x only)&lt;br /&gt;
&lt;br /&gt;
* ''logo_x''      (standard 292) the x position of the logo on the title screen&lt;br /&gt;
* ''logo_y''      (standard  120) the y position of the logo on the title screen&lt;br /&gt;
* ''buttons_x''   (standard 760) the x position of the buttons on the title screen&lt;br /&gt;
* ''buttons_y''   (standard 330) the y position of the buttons on the title screen&lt;br /&gt;
* ''buttons_padding'' (standard  20) space between buttons, and border in main menu&lt;br /&gt;
* ''tip_x''           (standard 100) space between the button panel left edge and the tip-of-the-day panel right edge&lt;br /&gt;
* ''tip_y''           (standard 500) not used (the bottom right corner of the tip-of-the-day panel is pegged to align with the bottom of the button panel)&lt;br /&gt;
* ''tip_width''       (standard 495) max width in pixels of the tip-of-the-day panel.  The width will actually adjust to be the smallest size necessary to fit the text.  Once the max width is reached, if text must flow onto multiple lines, then the height will also automatically adjust.&lt;br /&gt;
* ''tip_padding''     (standard  20) space between the edge of the tip-of-the-day panel and an imaginary bounding box containing the text inside the panel&lt;br /&gt;
&lt;br /&gt;
* ''map_image''     (standard 'maps/wesnoth.png') the background image for the &amp;quot;About&amp;quot; screen&lt;br /&gt;
* ''sidebar_image'' (standard 'misc/rightside.png') border of window when displaying unit statistics&lt;br /&gt;
* ''sidebar_image_bottom'' (standard 'misc/rightside-bottom.png') border of image when displaying unit statistics&lt;br /&gt;
* ''energy_image'' (standard 'misc/bar-energy.png') the images used to display hp/xp bars.&lt;br /&gt;
* ''moved_ball_image'' (standard 'misc/ball-moved.png') the orb image to add on top of the hp bar for player's moved units; see 'Orbs', [[WesnothManual]]&lt;br /&gt;
* ''unmoved_ball_image'' (standard 'misc/ball-unmoved.png') like ''moved_ball_image'', but for player's unmoved units&lt;br /&gt;
* ''partmoved_ball_image'' (standard 'misc/ball-partmoved.png') like ''moved_energy_image'', but for player's partially moved units&lt;br /&gt;
* ''flag_image'' (standard 'image/flag'terrain/flag-1.png:150,terrain/flag-2.png:150,terrain/flag-3.png:150,terrain/flag-4.png:150') the default flag animation to mark captured villages (if no custom flag is defined in the [side] tag). By example, this animation has 4 frames of 150ms each. An automatic side-coloring is applied. &lt;br /&gt;
* ''flag_icon_image'' {{DevFeature}} (standard 'flags/flag-icon.png') the default flag icon to indicate the side playing in the statusbar (if no custom flag_icon is defined in the [side] tag). An automatic side-coloring is applied. &lt;br /&gt;
&lt;br /&gt;
* ''cross_image'' (standard 'misc/cross.png') the cross image displayed on the map at start of scenarios; see [[IntroWML]]&lt;br /&gt;
* ''dot_image'' (standard 'misc/dot.png') the dot image used to draw a path on the map before scenarios&lt;br /&gt;
&lt;br /&gt;
* ''footprint_left_nw'', ''footprint_left_n'', ''footprint_right_nw'', ''footprint_right_n''&lt;br /&gt;
images used to display the path that a unit would take to the tile the cursor is on.&lt;br /&gt;
The first image of each key is used for tiles which would take only 1 movement point for the selected unit to move onto;&lt;br /&gt;
the second for ones which would take more.&lt;br /&gt;
The 'n' and 'nw' designations distinguish between tiles which are moved from orthogonally and diagonally in the same way as described in '''[missile_frame]''', [[AttackWML]].&lt;br /&gt;
The 'left' and 'right' designations are used alternately throughout the path;&lt;br /&gt;
however, the standard values are the same for 'left' and 'right'.&lt;br /&gt;
&lt;br /&gt;
* ''terrain_mask_image'' (standard 'terrain/alphamask.png') used to give a hex-shape from a rectangular image.&lt;br /&gt;
* ''grid_image'' (standard 'terrain/grid.png') the image used by the grid option &lt;br /&gt;
* ''unreachable_image'' (standard 'terrain/darken.png') the stripes mask used to show unreachable locations&lt;br /&gt;
&lt;br /&gt;
* ''missile_n_image'' (standard 'projectiles/missile-n.png') orthogonal missile image to use if none is specified;&lt;br /&gt;
see ''image'', '''[missile_frame]''', [[AttackWML]]&lt;br /&gt;
* ''missile_ne_image'' (standard 'projectiles/missile-ne.png') diagonal missile image to use if none is specified;&lt;br /&gt;
see ''image_diagonal'', '''[missile_frame]''', [[AttackWML]]&lt;br /&gt;
* ''observer_image'' (standard 'misc/eye.png') the image to use for observer ???&lt;br /&gt;
* ''download_campaign_image'' (standard no image) the icon for the &amp;quot;Download more Campaigns&amp;quot; campaign menu option.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=16533</id>
		<title>ImagePathFunctions</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ImagePathFunctions&amp;diff=16533"/>
		<updated>2007-07-20T14:01:03Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Syntax */ we managed to keep ~TC so remove the warning&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;
== 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;
=== Syntax ===&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;
== Re-Color Function ==&lt;br /&gt;
{{DevFeature}} May be used to change some colors in an image&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
'''~RC(''' ''source color palette'' '''&amp;gt;''' ''color range ID'' ''')'''&lt;br /&gt;
*''source color palette'' - the first parameter is a source color palette, usually magenta. Do not surround this parameter with quotes.&lt;br /&gt;
*''color range ID'' - this is the second parameter,signifying the ID of a color range defined in the file ''data/team-colors.cfg'' (or it may be a custom ID for a color range defined locally).  &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;
In releases up to 1.3.4, the IDs of the color ranges shipped with Wesnoth were numeric, 1-9.  In later releases they are the lowercased English name of the palette's base color (e.g. 'red', 'brown', etc.)&lt;br /&gt;
&lt;br /&gt;
== Flip Function ==&lt;br /&gt;
{{DevFeature}} May be used to flip an image horizontally and/or vertically&lt;br /&gt;
=== Syntax ===&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 horizantally.&lt;br /&gt;
*if the argument list is empty, the image will only be flipped horizantally.&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ReportingBugs&amp;diff=16020</id>
		<title>ReportingBugs</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ReportingBugs&amp;diff=16020"/>
		<updated>2007-06-22T19:22:47Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Who To Bug */ add myself as mouse maintainer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Where to report bugs ==&lt;br /&gt;
The prefered way to report bugs is through our bug tracking system on Gna, but you can also post your problem to the forums.&lt;br /&gt;
* [http://bugs.wesnoth.org/ Wesnoth bugs page on Gna]&lt;br /&gt;
* [http://www.wesnoth.org/forum/viewforum.php?f=4 Wesnoth forum - Technical Support]&lt;br /&gt;
&lt;br /&gt;
== Needed information ==&lt;br /&gt;
* What version of the game are you running?&lt;br /&gt;
* Have you built (from sources) the game by yourself? gcc/g++ version? SDL library versions?&lt;br /&gt;
* What operating system are you using? What version/release of that operating system?&lt;br /&gt;
* Can you reproduce the problem? If you can please provide steps to do it.&lt;br /&gt;
On special request another note: Use common sense! If you know the information can't be relevant to your report simply omit it. Nevertheless too much information usually doesn't hurt.&lt;br /&gt;
&lt;br /&gt;
== Guidelines for reporting bugs ==&lt;br /&gt;
# First, please make sure the bug you are reporting has not already been fixed (consult http://changelog.wesnoth.org/ to see the history of changes to the game).&lt;br /&gt;
# If it hasn't been fixed yet, please check that the bug hasn't already been reported, by [bugs.wesnoth.org].&lt;br /&gt;
# If your bug or feature request hasn't been fixed and has not yet been submitted, please go ahead and report it.&lt;br /&gt;
# Please post only one bug per bug report. If you have multiple bugs that are related, you can cross reference them.&lt;br /&gt;
&lt;br /&gt;
Note that feature requests should usually be discussed on the forums first, or they will generally be ignored until there is evidence that such a feature would be generally liked.&lt;br /&gt;
&lt;br /&gt;
Keep bug reports to the point, and make sure your bug is easily reproducible given the information you provide.  Clearly written, reproducible single bug reports will get attention before those reports that mix several different bugs into one report, or that are incomprehensible.&lt;br /&gt;
&lt;br /&gt;
If there is already an existing bug report, do not hesitate to add a comment with your details - this way we know when some bug is getting &amp;quot;popular&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
''Please login to Gna! before reporting bugs''&lt;br /&gt;
&lt;br /&gt;
An account at Gna! is free and takes very little time to set up. You can submit anonymous bug reports, but then you will have to keep an eye on the bug report in case developers ask for clarification, which will delay your bug being fixed.  If you login, you will receive notifications of any changes to your bug reports, which speeds things up considerably.&lt;br /&gt;
&lt;br /&gt;
=== In-play problems ===&lt;br /&gt;
If it is in-play problem that you can reproduce, save the game and send the savegame to us with details how to reproduce the problem from the savegame.&lt;br /&gt;
&lt;br /&gt;
=== Problems with scenarios ===&lt;br /&gt;
If it is a problem with a contributed scenario (like the ones on the Campaign Server), please report the problem to the maintainer of the scenario, not as a bug in Wesnoth itself.  Bugs in the [[MainlineScenarios]] should be reported in the bug tracker.&lt;br /&gt;
&lt;br /&gt;
=== Multiplayer out-of-sync errors ===&lt;br /&gt;
* We need wesnoth stdout/stderr output from person who got the error (if you started wesnoth in terminal stdout/stderr is in that terminal).&lt;br /&gt;
* We need savegame from person who got the error.&lt;br /&gt;
* Savegame from some other player if possible.&lt;br /&gt;
* The person who got the error should report the bug, other players can then add their savegames to that bug.&lt;br /&gt;
&lt;br /&gt;
=== Segfault ===&lt;br /&gt;
* In Unix follow the instructions at [[DebuggingWesnoth]] to generate information to send to a developer.&lt;br /&gt;
* In NT based OS's (including Win2k, XP) you enable/configure core dumps by running 'drwtsn32', the location of the dumps can be changed there.&lt;br /&gt;
* In Mac OS X, you can enable Crash Reporter -- the output is a backtrace. Run Applications -&amp;gt; Utilities -&amp;gt; Console to see log output. See http://www.mozilla.org/mailnews/osxinfo.html for information on how to enable Crash Reporter.&lt;br /&gt;
&lt;br /&gt;
=== Sending savegames, screenshots, coredumps, etc ===&lt;br /&gt;
* Please compress the files (bzip2, gzip, zip).&lt;br /&gt;
* You can attach files if you submit your bug through Gna!, else&lt;br /&gt;
* Put them on some web or ftp server where we can download them.&lt;br /&gt;
* You can attach files to forum posts.&lt;br /&gt;
* As a last resort you can send them via email to: [mailto:davidnwhite_AT_verizon.net]&lt;br /&gt;
&lt;br /&gt;
== Bug protocol ==&lt;br /&gt;
&lt;br /&gt;
* When adding a new bug, please choose either &amp;quot;Bug&amp;quot; or &amp;quot;Feature Request&amp;quot; as its Category; it may not be noticed if you leave the Category as &amp;quot;None&amp;quot;.&lt;br /&gt;
* We use the Status values &amp;quot;None&amp;quot; (awaiting action), &amp;quot;Fixed&amp;quot;, &amp;quot;Won't Fix&amp;quot;, &amp;quot;Invalid&amp;quot; (not a bug), &amp;quot;Works For Me&amp;quot; (unreproducible), or &amp;quot;Need Info&amp;quot;.&lt;br /&gt;
* A bug which is fixed is marked &amp;quot;Fixed&amp;quot; by a developer, probably the one committing the fix or reviewing it.&lt;br /&gt;
* A bug present in a release is marked &amp;quot;Closed&amp;quot; only upon a new release containing the fix.&lt;br /&gt;
* Any bug present only in [[WesnothSVN]] is marked &amp;quot;Closed&amp;quot; when it is fixed.&lt;br /&gt;
&lt;br /&gt;
== Who To Bug ==&lt;br /&gt;
&lt;br /&gt;
This list is intended to give guidance on who developers doing bug triage should assign bugs to.  Wesnoth developers who have agreed to take responsibility for particular subsystems, campaigns, or topic areas are listed here.&lt;br /&gt;
&lt;br /&gt;
; alink: Maintainer of the mouse interface, also like to fix inconsistencies in the UI or add small usability feature.&lt;br /&gt;
&lt;br /&gt;
; allefant: Maintainer of campaigns-client.py.  Python expert.  &lt;br /&gt;
&lt;br /&gt;
; baufo: Maintainer of Descent Into Darkness campaign.&lt;br /&gt;
&lt;br /&gt;
; boucman: Animation engine guru, can also help with low-level networking and generic map drawing issues. You can also bug him for unassigned patches.&lt;br /&gt;
&lt;br /&gt;
; esr: Maintainer of wmllint, wmlscope.  Backup autotools expert, after isaac. Python expert.  General toolsmith; if you need a development or auditing tool for WML, talk to him.  Co-maintainer of the Northern Rebirth campaign.  Resident prose fixer and English-usage pedant, refer spelling errors and storyline copy-edit problems to him.&lt;br /&gt;
&lt;br /&gt;
; ivanovic: The master of releases.  Also the master of translations and gettext-related infrastructure.&lt;br /&gt;
&lt;br /&gt;
; mythological: Maintainer of the Eastern Invasion and The Rise of Wesnoth campaigns.&lt;br /&gt;
&lt;br /&gt;
; sapient: Maintainer of the WML interpreter engine and the UI widget set.&lt;br /&gt;
&lt;br /&gt;
; taurus: Maintainer of Northern Rebirth campaign.&lt;br /&gt;
&lt;br /&gt;
; zookeeper: Mainline campaigns maintainer. Our resident WML quality fanatic.&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GameConfigWML&amp;diff=15608</id>
		<title>GameConfigWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GameConfigWML&amp;diff=15608"/>
		<updated>2007-05-30T18:35:47Z</updated>

		<summary type="html">&lt;p&gt;Alink: fix a missing &amp;quot; ' &amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has several unknown informations; they are represented by '???'.&lt;br /&gt;
Feel free to replace them with actual data.&lt;br /&gt;
&lt;br /&gt;
{{WML Tags}}&lt;br /&gt;
== The [game_config] tag ==&lt;br /&gt;
&lt;br /&gt;
This tag is a top level WML tag which can only be used once because&lt;br /&gt;
it defines basic settings that are used everywhere in the game.&lt;br /&gt;
In official versions of Wesnoth it is in ''game.cfg''; values used there are labeled 'standard'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following keys are recognised&lt;br /&gt;
* ''base_income'' (standard 2) how much your leader earns without any villages&lt;br /&gt;
* ''heal_amount'' (standard 4) how much the 'heal' ability (see [[AbilitiesWML]]) heals per unit&lt;br /&gt;
* ''healer_heals_per_turn'' (standard 8) how much a healer can heal per turn (total).&lt;br /&gt;
Healing is distributed clockwise, starting north of the healer,&lt;br /&gt;
until ''healer_heals_per_turn'' hitpoints have been regenerated.&lt;br /&gt;
* ''cure_amount'' (standard 8) how much the 'cure' ability heals per unit&lt;br /&gt;
* ''curer_heals_per_turn'' (standard 18) how much a curer can heal per turn (total)&lt;br /&gt;
* ''rest_heal_amount'' (standard 2) how much HP a unit gains each turn it rests&lt;br /&gt;
* ''recall_cost'' (standard 20) how much it costs to recall a unit; this cost is independent of level.&lt;br /&gt;
* ''kill_experience'' (standard 8)&lt;br /&gt;
killing a unit with ''level=X'' will give ''X''*''kill_experience'' experience to the killing unit.&lt;br /&gt;
However, if a unit has ''level=0'', it will still give half of ''X'' experience.&lt;br /&gt;
&lt;br /&gt;
* ''icon'' (standard 'wesnoth-icon.png') the game icon file&lt;br /&gt;
* ''title'' (standard 'misc/title.png') the title screen image&lt;br /&gt;
* ''logo'' (standard 'misc/logo.png') the wesnoth logo which will be put over the title image&lt;br /&gt;
* ''title_music'' (standard 'main_menu.ogg') the music to play at the title screen&lt;br /&gt;
* ''anonymous_music'' (standard 'main_menu.ogg') the music to play during an unknown faction turn (1.1.x only)&lt;br /&gt;
&lt;br /&gt;
* ''logo_x''      (standard 292) the x position of the logo on the title screen&lt;br /&gt;
* ''logo_y''      (standard  120) the y position of the logo on the title screen&lt;br /&gt;
* ''buttons_x''   (standard 760) the x position of the buttons on the title screen&lt;br /&gt;
* ''buttons_y''   (standard 330) the y position of the buttons on the title screen&lt;br /&gt;
* ''buttons_padding'' (standard  20) space between buttons, and border in main menu&lt;br /&gt;
* ''tip_x''           (standard 100) space between the button panel left edge and the tip-of-the-day panel right edge&lt;br /&gt;
* ''tip_y''           (standard 500) not used (the bottom right corner of the tip-of-the-day panel is pegged to align with the bottom of the button panel)&lt;br /&gt;
* ''tip_width''       (standard 495) max width in pixels of the tip-of-the-day panel.  The width will actually adjust to be the smallest size necessary to fit the text.  Once the max width is reached, if text must flow onto multiple lines, then the height will also automatically adjust.&lt;br /&gt;
* ''tip_padding''     (standard  20) space between the edge of the tip-of-the-day panel and an imaginary bounding box containing the text inside the panel&lt;br /&gt;
&lt;br /&gt;
* ''map_image''     (standard 'maps/wesnoth.png') the background image for the &amp;quot;About&amp;quot; screen&lt;br /&gt;
* ''sidebar_image'' (standard 'misc/rightside.png') border of window when displaying unit statistics&lt;br /&gt;
* ''sidebar_image_bottom'' (standard 'misc/rightside-bottom.png') border of image when displaying unit statistics&lt;br /&gt;
* ''energy_image'' (standard 'misc/bar-energy.png') the images used to display hp/xp bars.&lt;br /&gt;
* ''moved_ball_image'' (standard 'misc/ball-moved.png') the orb image to add on top of the hp bar for player's moved units; see 'Orbs', [[WesnothManual]]&lt;br /&gt;
* ''unmoved_ball_image'' (standard 'misc/ball-unmoved.png') like ''moved_ball_image'', but for player's unmoved units&lt;br /&gt;
* ''partmoved_ball_image'' (standard 'misc/ball-partmoved.png') like ''moved_energy_image'', but for player's partially moved units&lt;br /&gt;
* ''flag_image'' (standard 'image/flag'terrain/flag-1.png:150,terrain/flag-2.png:150,terrain/flag-3.png:150,terrain/flag-4.png:150') the default flag animation to mark captured villages (if no custom flag is defined in the [side] tag). By example, this animation has 4 frames of 150ms each. An automatic side-coloring is applied. &lt;br /&gt;
* ''flag_icon_image'' {{DevFeature}} (standard 'flags/flag-icon.png') the default flag icon to indicate the side playing in the statusbar (if no custom flag_icon is defined in the [side] tag). An automatic side-coloring is applied. &lt;br /&gt;
&lt;br /&gt;
* ''cross_image'' (standard 'misc/cross.png') the cross image displayed on the map at start of scenarios; see [[IntroWML]]&lt;br /&gt;
* ''dot_image'' (standard 'misc/dot.png') the dot image used to draw a path on the map before scenarios&lt;br /&gt;
&lt;br /&gt;
* ''footprint_left_nw'', ''footprint_left_n'', ''footprint_right_nw'', ''footprint_right_n''&lt;br /&gt;
images used to display the path that a unit would take to the tile the cursor is on.&lt;br /&gt;
The first image of each key is used for tiles which would take only 1 movement point for the selected unit to move onto;&lt;br /&gt;
the second for ones which would take more.&lt;br /&gt;
The 'n' and 'nw' designations distinguish between tiles which are moved from orthogonally and diagonally in the same way as described in '''[missile_frame]''', [[AttackWML]].&lt;br /&gt;
The 'left' and 'right' designations are used alternately throughout the path;&lt;br /&gt;
however, the standard values are the same for 'left' and 'right'.&lt;br /&gt;
&lt;br /&gt;
* ''missile_n_image'' (standard 'projectiles/missile-n.png') orthogonal missile image to use if none is specified;&lt;br /&gt;
see ''image'', '''[missile_frame]''', [[AttackWML]]&lt;br /&gt;
* ''missile_ne_image'' (standard 'projectiles/missile-ne.png') diagonal missile image to use if none is specified;&lt;br /&gt;
see ''image_diagonal'', '''[missile_frame]''', [[AttackWML]]&lt;br /&gt;
* ''terrain_mask_image'' (standard 'terrain/alphamask.png') ???&lt;br /&gt;
* ''observer_image'' (standard 'misc/eye.png') the image to use for observer ???&lt;br /&gt;
* ''download_campaign_image'' (standard no image) the icon for the &amp;quot;Download more Campaigns&amp;quot; campaign menu option.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GameConfigWML&amp;diff=15607</id>
		<title>GameConfigWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GameConfigWML&amp;diff=15607"/>
		<updated>2007-05-30T18:33:55Z</updated>

		<summary type="html">&lt;p&gt;Alink: Fix incorrect info about flag animation and add the new flag_icon_image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has several unknown informations; they are represented by '???'.&lt;br /&gt;
Feel free to replace them with actual data.&lt;br /&gt;
&lt;br /&gt;
{{WML Tags}}&lt;br /&gt;
== The [game_config] tag ==&lt;br /&gt;
&lt;br /&gt;
This tag is a top level WML tag which can only be used once because&lt;br /&gt;
it defines basic settings that are used everywhere in the game.&lt;br /&gt;
In official versions of Wesnoth it is in ''game.cfg''; values used there are labeled 'standard'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following keys are recognised&lt;br /&gt;
* ''base_income'' (standard 2) how much your leader earns without any villages&lt;br /&gt;
* ''heal_amount'' (standard 4) how much the 'heal' ability (see [[AbilitiesWML]]) heals per unit&lt;br /&gt;
* ''healer_heals_per_turn'' (standard 8) how much a healer can heal per turn (total).&lt;br /&gt;
Healing is distributed clockwise, starting north of the healer,&lt;br /&gt;
until ''healer_heals_per_turn'' hitpoints have been regenerated.&lt;br /&gt;
* ''cure_amount'' (standard 8) how much the 'cure' ability heals per unit&lt;br /&gt;
* ''curer_heals_per_turn'' (standard 18) how much a curer can heal per turn (total)&lt;br /&gt;
* ''rest_heal_amount'' (standard 2) how much HP a unit gains each turn it rests&lt;br /&gt;
* ''recall_cost'' (standard 20) how much it costs to recall a unit; this cost is independent of level.&lt;br /&gt;
* ''kill_experience'' (standard 8)&lt;br /&gt;
killing a unit with ''level=X'' will give ''X''*''kill_experience'' experience to the killing unit.&lt;br /&gt;
However, if a unit has ''level=0'', it will still give half of ''X'' experience.&lt;br /&gt;
&lt;br /&gt;
* ''icon'' (standard 'wesnoth-icon.png') the game icon file&lt;br /&gt;
* ''title'' (standard 'misc/title.png') the title screen image&lt;br /&gt;
* ''logo'' (standard 'misc/logo.png') the wesnoth logo which will be put over the title image&lt;br /&gt;
* ''title_music'' (standard 'main_menu.ogg') the music to play at the title screen&lt;br /&gt;
* ''anonymous_music'' (standard 'main_menu.ogg') the music to play during an unknown faction turn (1.1.x only)&lt;br /&gt;
&lt;br /&gt;
* ''logo_x''      (standard 292) the x position of the logo on the title screen&lt;br /&gt;
* ''logo_y''      (standard  120) the y position of the logo on the title screen&lt;br /&gt;
* ''buttons_x''   (standard 760) the x position of the buttons on the title screen&lt;br /&gt;
* ''buttons_y''   (standard 330) the y position of the buttons on the title screen&lt;br /&gt;
* ''buttons_padding'' (standard  20) space between buttons, and border in main menu&lt;br /&gt;
* ''tip_x''           (standard 100) space between the button panel left edge and the tip-of-the-day panel right edge&lt;br /&gt;
* ''tip_y''           (standard 500) not used (the bottom right corner of the tip-of-the-day panel is pegged to align with the bottom of the button panel)&lt;br /&gt;
* ''tip_width''       (standard 495) max width in pixels of the tip-of-the-day panel.  The width will actually adjust to be the smallest size necessary to fit the text.  Once the max width is reached, if text must flow onto multiple lines, then the height will also automatically adjust.&lt;br /&gt;
* ''tip_padding''     (standard  20) space between the edge of the tip-of-the-day panel and an imaginary bounding box containing the text inside the panel&lt;br /&gt;
&lt;br /&gt;
* ''map_image''     (standard 'maps/wesnoth.png') the background image for the &amp;quot;About&amp;quot; screen&lt;br /&gt;
* ''sidebar_image'' (standard 'misc/rightside.png') border of window when displaying unit statistics&lt;br /&gt;
* ''sidebar_image_bottom'' (standard 'misc/rightside-bottom.png') border of image when displaying unit statistics&lt;br /&gt;
* ''energy_image'' (standard 'misc/bar-energy.png') the images used to display hp/xp bars.&lt;br /&gt;
* ''moved_ball_image'' (standard 'misc/ball-moved.png') the orb image to add on top of the hp bar for player's moved units; see 'Orbs', [[WesnothManual]]&lt;br /&gt;
* ''unmoved_ball_image'' (standard 'misc/ball-unmoved.png') like ''moved_ball_image'', but for player's unmoved units&lt;br /&gt;
* ''partmoved_ball_image'' (standard 'misc/ball-partmoved.png') like ''moved_energy_image'', but for player's partially moved units&lt;br /&gt;
* ''flag_image'' (standard image/flag'terrain/flag-1.png:150,terrain/flag-2.png:150,terrain/flag-3.png:150,terrain/flag-4.png:150') the default flag animation to mark captured villages (if no custom flag is defined in the [side] tag). By example, this animation has 4 frames of 150ms each. An automatic side-coloring is applied. &lt;br /&gt;
* ''flag_icon_image'' {{DevFeature}} (standard 'flags/flag-icon.png') the default flag icon to indicate the side playing in the statusbar (if no custom flag_icon is defined in the [side] tag). An automatic side-coloring is applied. &lt;br /&gt;
&lt;br /&gt;
* ''cross_image'' (standard 'misc/cross.png') the cross image displayed on the map at start of scenarios; see [[IntroWML]]&lt;br /&gt;
* ''dot_image'' (standard 'misc/dot.png') the dot image used to draw a path on the map before scenarios&lt;br /&gt;
&lt;br /&gt;
* ''footprint_left_nw'', ''footprint_left_n'', ''footprint_right_nw'', ''footprint_right_n''&lt;br /&gt;
images used to display the path that a unit would take to the tile the cursor is on.&lt;br /&gt;
The first image of each key is used for tiles which would take only 1 movement point for the selected unit to move onto;&lt;br /&gt;
the second for ones which would take more.&lt;br /&gt;
The 'n' and 'nw' designations distinguish between tiles which are moved from orthogonally and diagonally in the same way as described in '''[missile_frame]''', [[AttackWML]].&lt;br /&gt;
The 'left' and 'right' designations are used alternately throughout the path;&lt;br /&gt;
however, the standard values are the same for 'left' and 'right'.&lt;br /&gt;
&lt;br /&gt;
* ''missile_n_image'' (standard 'projectiles/missile-n.png') orthogonal missile image to use if none is specified;&lt;br /&gt;
see ''image'', '''[missile_frame]''', [[AttackWML]]&lt;br /&gt;
* ''missile_ne_image'' (standard 'projectiles/missile-ne.png') diagonal missile image to use if none is specified;&lt;br /&gt;
see ''image_diagonal'', '''[missile_frame]''', [[AttackWML]]&lt;br /&gt;
* ''terrain_mask_image'' (standard 'terrain/alphamask.png') ???&lt;br /&gt;
* ''observer_image'' (standard 'misc/eye.png') the image to use for observer ???&lt;br /&gt;
* ''download_campaign_image'' (standard no image) the icon for the &amp;quot;Download more Campaigns&amp;quot; campaign menu option.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=GameConfigWML&amp;diff=15590</id>
		<title>GameConfigWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=GameConfigWML&amp;diff=15590"/>
		<updated>2007-05-28T19:25:42Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* The [game_config] tag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page has several unknown informations; they are represented by '???'.&lt;br /&gt;
Feel free to replace them with actual data.&lt;br /&gt;
&lt;br /&gt;
{{WML Tags}}&lt;br /&gt;
== The [game_config] tag ==&lt;br /&gt;
&lt;br /&gt;
This tag is a top level WML tag which can only be used once because&lt;br /&gt;
it defines basic settings that are used everywhere in the game.&lt;br /&gt;
In official versions of Wesnoth it is in ''game.cfg''; values used there are labeled 'standard'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following keys are recognised&lt;br /&gt;
* ''base_income'' (standard 2) how much your leader earns without any villages&lt;br /&gt;
* ''heal_amount'' (standard 4) how much the 'heal' ability (see [[AbilitiesWML]]) heals per unit&lt;br /&gt;
* ''healer_heals_per_turn'' (standard 8) how much a healer can heal per turn (total).&lt;br /&gt;
Healing is distributed clockwise, starting north of the healer,&lt;br /&gt;
until ''healer_heals_per_turn'' hitpoints have been regenerated.&lt;br /&gt;
* ''cure_amount'' (standard 8) how much the 'cure' ability heals per unit&lt;br /&gt;
* ''curer_heals_per_turn'' (standard 18) how much a curer can heal per turn (total)&lt;br /&gt;
* ''rest_heal_amount'' (standard 2) how much HP a unit gains each turn it rests&lt;br /&gt;
* ''recall_cost'' (standard 20) how much it costs to recall a unit; this cost is independent of level.&lt;br /&gt;
* ''kill_experience'' (standard 8)&lt;br /&gt;
killing a unit with ''level=X'' will give ''X''*''kill_experience'' experience to the killing unit.&lt;br /&gt;
However, if a unit has ''level=0'', it will still give half of ''X'' experience.&lt;br /&gt;
&lt;br /&gt;
* ''icon'' (standard 'wesnoth-icon.png') the game icon file&lt;br /&gt;
* ''title'' (standard 'misc/title.png') the title screen image&lt;br /&gt;
* ''logo'' (standard 'misc/logo.png') the wesnoth logo which will be put over the title image&lt;br /&gt;
* ''title_music'' (standard 'main_menu.ogg') the music to play at the title screen&lt;br /&gt;
* ''anonymous_music'' (standard 'main_menu.ogg') the music to play during an unknown faction turn (1.1.x only)&lt;br /&gt;
&lt;br /&gt;
* ''logo_x''      (standard 292) the x position of the logo on the title screen&lt;br /&gt;
* ''logo_y''      (standard  120) the y position of the logo on the title screen&lt;br /&gt;
* ''buttons_x''   (standard 760) the x position of the buttons on the title screen&lt;br /&gt;
* ''buttons_y''   (standard 330) the y position of the buttons on the title screen&lt;br /&gt;
* ''buttons_padding'' (standard  20) space between buttons, and border in main menu&lt;br /&gt;
* ''tip_x''           (standard 100) space between the button panel left edge and the tip-of-the-day panel right edge&lt;br /&gt;
* ''tip_y''           (standard 500) not used (the bottom right corner of the tip-of-the-day panel is pegged to align with the bottom of the button panel)&lt;br /&gt;
* ''tip_width''       (standard 495) max width in pixels of the tip-of-the-day panel.  The width will actually adjust to be the smallest size necessary to fit the text.  Once the max width is reached, if text must flow onto multiple lines, then the height will also automatically adjust.&lt;br /&gt;
* ''tip_padding''     (standard  20) space between the edge of the tip-of-the-day panel and an imaginary bounding box containing the text inside the panel&lt;br /&gt;
&lt;br /&gt;
* ''map_image''     (standard 'maps/wesnoth.png') the background image for the &amp;quot;About&amp;quot; screen&lt;br /&gt;
* ''sidebar_image'' (standard 'misc/rightside.png') border of window when displaying unit statistics&lt;br /&gt;
* ''sidebar_image_bottom'' (standard 'misc/rightside-bottom.png') border of image when displaying unit statistics&lt;br /&gt;
* ''energy_image'' (standard 'misc/bar-energy.png') the images used to display hp/xp bars.&lt;br /&gt;
* ''moved_ball_image'' (standard 'misc/ball-moved.png') the orb image to add on top of the hp bar for player's moved units; see 'Orbs', [[WesnothManual]]&lt;br /&gt;
* ''unmoved_ball_image'' (standard 'misc/ball-unmoved.png') like ''moved_ball_image'', but for player's unmoved units&lt;br /&gt;
* ''partmoved_ball_image'' (standard 'misc/ball-partmoved.png') like ''moved_energy_image'', but for player's partially moved units&lt;br /&gt;
* ''flag_image'' (standard 'terrain/flag-team%d-1.png:150,terrain/flag-team%d-2.png:150')&lt;br /&gt;
the image for a flag.&lt;br /&gt;
The symbol '%d' is used as a shortcut for an integer which depends on the color of the flag;&lt;br /&gt;
for example, a red flag is shown by the alternating images 'terrain/flag-team1-1.png' and 'terrain/flag-team1-2.png'.&lt;br /&gt;
(What does ':150' do???)&lt;br /&gt;
&lt;br /&gt;
* ''cross_image'' (standard 'misc/cross.png') the cross image displayed on the map at start of scenarios; see [[IntroWML]]&lt;br /&gt;
* ''dot_image'' (standard 'misc/dot.png') the dot image used to draw a path on the map before scenarios&lt;br /&gt;
&lt;br /&gt;
* ''footprint_left_nw'', ''footprint_left_n'', ''footprint_right_nw'', ''footprint_right_n''&lt;br /&gt;
images used to display the path that a unit would take to the tile the cursor is on.&lt;br /&gt;
The first image of each key is used for tiles which would take only 1 movement point for the selected unit to move onto;&lt;br /&gt;
the second for ones which would take more.&lt;br /&gt;
The 'n' and 'nw' designations distinguish between tiles which are moved from orthogonally and diagonally in the same way as described in '''[missile_frame]''', [[AttackWML]].&lt;br /&gt;
The 'left' and 'right' designations are used alternately throughout the path;&lt;br /&gt;
however, the standard values are the same for 'left' and 'right'.&lt;br /&gt;
&lt;br /&gt;
* ''missile_n_image'' (standard 'projectiles/missile-n.png') orthogonal missile image to use if none is specified;&lt;br /&gt;
see ''image'', '''[missile_frame]''', [[AttackWML]]&lt;br /&gt;
* ''missile_ne_image'' (standard 'projectiles/missile-ne.png') diagonal missile image to use if none is specified;&lt;br /&gt;
see ''image_diagonal'', '''[missile_frame]''', [[AttackWML]]&lt;br /&gt;
* ''terrain_mask_image'' (standard 'terrain/alphamask.png') ???&lt;br /&gt;
* ''observer_image'' (standard 'misc/eye.png') the image to use for observer ???&lt;br /&gt;
* ''download_campaign_image'' (standard no image) the icon for the &amp;quot;Download more Campaigns&amp;quot; campaign menu option.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SideWML&amp;diff=15589</id>
		<title>SideWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SideWML&amp;diff=15589"/>
		<updated>2007-05-28T18:40:16Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* the [side] tag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
== the [side] tag ==&lt;br /&gt;
&lt;br /&gt;
The [side] tag is used to describe a side in a particular scenario.&lt;br /&gt;
&lt;br /&gt;
The following keys are recognized:&lt;br /&gt;
&lt;br /&gt;
* ''side'' a digit. The leader of this side is placed on the tile represented by this digit (see [[BuildingMaps]]). When defining sides, they must be defined in order since the side number is checked against the number of sides seen so far.&lt;br /&gt;
&lt;br /&gt;
* ''controller'' how moves for this side should be inputted.&lt;br /&gt;
** 'ai' the Wesnoth AI makes this side's moves. This is the default setting.&lt;br /&gt;
** 'human' a player controls this side's moves.&lt;br /&gt;
** 'null' the side doesn't get a turn to move and doesn't have a leader generated from the contents of the [side] tag. (It still can get units from [unit] tags in the [side] tag.)&lt;br /&gt;
&lt;br /&gt;
* ''no_leader'' if &amp;quot;no&amp;quot; (default), then keys describing a unit which will begin on the side's keep will be described in the remainder of the '''[side]''' tag, See [[SingleUnitWML]]. Note that if the keys ''x'', ''y'' are included, the leader will begin there regardless of keep location. If this side has a recall list from a previous level, then the recall list will be searched for a leader (using canrecruit) and if one is found it will be used instead of the one described in the '''[side]''' tag.&lt;br /&gt;
&lt;br /&gt;
* ''type'' the unit type of the side's leader. This must be present if ''no_leader'' is not set to &amp;quot;yes.&amp;quot; ''Description'', ''type'', ''x'', ''y'', ''profile'', and ''hitpoints'' are examples of keys from [[SingleUnitWML]] that will describe the leader if placed within the [side] tag.&lt;br /&gt;
&lt;br /&gt;
* ''description'' (translatable) the name of the side's leader. It is used in standard unit filter ([[FilterWML]]) and it is not affected by a player renaming a unit.&lt;br /&gt;
&lt;br /&gt;
* ''unrenamable'' if &amp;quot;no&amp;quot; (default), the player can rename the unit. Renaming the unit alters the ''user_description'' key, so the ''description'' key can still be used for filtering. It is generally a good idea to set this to yes in campaigns since dialog will usually refer to the leader by name. It is technically possible to read ''user_description'' into a variable every time you want to call the leader by name, but this is a hassle.&lt;br /&gt;
&lt;br /&gt;
* ''recruit'' a list of unit types. At the beginning of the scenario, the side gains recruitment of these units.&lt;br /&gt;
&lt;br /&gt;
* ''gold'' the starting gold for this side. Default 100. (If gold is carried over from a previous scenario, this value is the minimum starting gold.)&lt;br /&gt;
&lt;br /&gt;
* ''income'' the base income for this side, default 0. This is added to ''base_income'', '''[game_config]''' to determine the side's base income. (see [[GameConfigWML]]).&lt;br /&gt;
&lt;br /&gt;
* ''fog'' if 'yes', this side cannot see any tiles it is not within vision of, except at the start.&lt;br /&gt;
&lt;br /&gt;
* ''shroud'' if 'yes', this side cannot see any tiles it has not moved within sight of.&lt;br /&gt;
&lt;br /&gt;
* ''shroud_data'' describes the area which this team has de-shrouded.&lt;br /&gt;
&lt;br /&gt;
* ''persistent'' whether the side exists in any other scenarios. If '1'(yes), then ''save_id''(see below) becomes active for this side. Default '0'(no); when '''controller=human''', this is always '1'.&lt;br /&gt;
&lt;br /&gt;
* ''save_id'' default ''description'' if available, 'Unknown' otherwise. The ID of the side with respect to the previous and next scenarios. Used to carry over the side's recall list (including the side's leader), recruitment list, and starting gold from scenario to scenario. Also used for the side's displayed name in the victory gold-calculation dialog.&lt;br /&gt;
&lt;br /&gt;
* ''team_name'' a non translatable string representing the team's description. Sides with the same team_name are allied. Default ''side''.&lt;br /&gt;
&lt;br /&gt;
* ''user_team_name'' a translatable string representing the team's description. This has no effect on alliances. Default ''team_name''.&lt;br /&gt;
&lt;br /&gt;
* ''colour'' if you want side 4 to be the same colour as side 2 normally is, put colour=2.  &lt;br /&gt;
** The default list of numbers and corresponding colours can be found in data/team_colors.cfg.  &lt;br /&gt;
&lt;br /&gt;
* ''flag'' a custom flag animation to use instead of the default one to mark captured villages. {{DevFeature}} an automatic side-coloring is applied.&lt;br /&gt;
** Example animation that has three frames and loops every 750ms: ''flag=misc/myflag-1.png:250,misc/myflag-2.png:250,misc/myflag-3.png:250''&lt;br /&gt;
&lt;br /&gt;
* ''flag_icon'' {{DevFeature}} a custom flag icon to indicate the side playing in the statusbar (a size of 24x16 is recommended). An automatic side-coloring is applied.&lt;br /&gt;
&lt;br /&gt;
* ''village_gold'' the amount of gold given to this side per village it controls per turn. Default specified in ''village_gold'', '''[game_config]''' ([[GameConfigWML]]).&lt;br /&gt;
&lt;br /&gt;
* ''share_maps'' whether sides allied with this side see all terrains that this side sees, if they are on shroud.&lt;br /&gt;
&lt;br /&gt;
* ''share_view'' whether sides allied with this side see the units that this side sees, if they are on FoW (fog).&lt;br /&gt;
&lt;br /&gt;
* ''name'', ''id'', ''leader'' not used; see [[EraWML]].&lt;br /&gt;
&lt;br /&gt;
* ''music'' music to play for this player. Default specified in [scenario] (see [[ScenarioWML]]).&lt;br /&gt;
&lt;br /&gt;
* '''[ai]''' if '''controller=ai''', gives parameters to the AI. See [[AiWML]].&lt;br /&gt;
&lt;br /&gt;
* '''[village]''' describes a village the side begins in control of.&lt;br /&gt;
** ''x'', ''y'' the location of the village.&lt;br /&gt;
&lt;br /&gt;
* '''[unit]''' describes a unit which begins on the side. See [[SingleUnitWML]]. If the side has a recall list and the unit is not given a location, it will start on the recall list. Note that the ''side'' attribute under '''[unit]''' will be ignored, as the side will come from the ''side'' attribute of '''[side]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following keys are multiplayer only:&lt;br /&gt;
&lt;br /&gt;
* ''allow_player'' if false then this side will not be allowed to be modified and will be hidden during game creation.&lt;br /&gt;
&lt;br /&gt;
* ''team_lock'' if true then this side's team is not allowed to be modified.&lt;br /&gt;
&lt;br /&gt;
* ''colour_lock'' if true then this side's color is not allowed to be modified.&lt;br /&gt;
&lt;br /&gt;
* ''gold_lock'' if true then this side's gold is not allowed to be modified. &lt;br /&gt;
&lt;br /&gt;
* ''income_lock'' if true then this side's income is not allowed to be modified.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[EraWML]]&lt;br /&gt;
* [[ScenarioWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=15536</id>
		<title>User:Alink</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=15536"/>
		<updated>2007-05-25T18:45:48Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Icons in the status bar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm just starting this page, so for the moment, there is only the essential current things &lt;br /&gt;
&lt;br /&gt;
= Current projects =&lt;br /&gt;
&lt;br /&gt;
== Icons in the status bar ==&lt;br /&gt;
* Remove a &amp;quot;feature&amp;quot; of the theme engine which delete transparent part of icons and strech them regardless of their proportions.&lt;br /&gt;
* Add support and nice icons for other resolutions (tiny-gui). Need to do previous point before and take care of the automatic resizing during the tiny-gui install&lt;br /&gt;
* Try to graying icons during opponent's turn. https://gna.org/bugs/?9058&lt;br /&gt;
&lt;br /&gt;
== Dialog engine ==&lt;br /&gt;
I recently discover some flaws with dialogs using long texts in cells or buttons ( https://gna.org/bugs/?4299 ). A first easy step will be to add some maximum width for dialog and after that, do the same for each cells (not sure how). Probably will use ellipsis (&amp;quot;long text...&amp;quot;) because for the moment each row have the same height, so using linebreak for a big text will cause a general growing of all the rows.&lt;br /&gt;
&lt;br /&gt;
== Text rendering ==&lt;br /&gt;
* Fix the imprecise wrapping when using special format characters and don't even watch size variation.&lt;br /&gt;
* Do something about wrapping of language not using spaces (add a new wrap parameter for language: CJK or wrap-letter): http://www.wesnoth.org/forum/viewtopic.php?p=228337#228337&lt;br /&gt;
&lt;br /&gt;
== hp/xp bars ==&lt;br /&gt;
Replace this old, complex, buggy(zoom), hard-coded code of bars ( https://gna.org/bugs/?4931 ). I plan to use an all images-based system for easy configuration and customization. Current prototype works fine and seems powerful. Except this stupid alpha variation of the filled part of the bar. So on standby, 3 currents options:&lt;br /&gt;
* Drop the alpha variation.&lt;br /&gt;
* Use a little expensive adjust_alpha for the special cases, and maybe just use 2 states : normal / highlighted.&lt;br /&gt;
* Use new bars (and so a different set of images) when highlighting an unit. This will also allow some fancy things like bigger bars etc... but need more memory (a dozen of images)&lt;br /&gt;
&lt;br /&gt;
= Future projects =&lt;br /&gt;
* Do some tweaking about the mousewheel scrolling&lt;br /&gt;
* Polish the drag&amp;amp;drop&lt;br /&gt;
* Try again the grab-map feature for scrolling&lt;br /&gt;
* Starting to replace coloUr by color in the code&lt;br /&gt;
* Continue to improve zoom&lt;br /&gt;
* Optimize the image cache system&lt;br /&gt;
* Optimize some sdl_utils functions&lt;br /&gt;
* Desynchronize flags of villages&lt;br /&gt;
* Change this bad system of special characters to a tag system. Or at least, use a better characters choice (using &amp;quot;{&amp;quot; for normal text is really a bad idea for macros)&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=15358</id>
		<title>User:Alink</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=15358"/>
		<updated>2007-05-14T16:44:33Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Current projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm just starting this page, so for the moment, there is only the essential current things &lt;br /&gt;
&lt;br /&gt;
= Current projects =&lt;br /&gt;
&lt;br /&gt;
== Icons in the status bar ==&lt;br /&gt;
* Modify themes to add space for the new flag icon (from 16 pixels to 24). For better visibility of the playing side, because a rectangle is better for a flag and the images ave already this size (so they are shrinked). ''Done for the default theme.''&lt;br /&gt;
* Use standard size (16x16, 24x16) for the icons instead of 15x15. ''Done, except for the flag-icons.''&lt;br /&gt;
* Remove a &amp;quot;feature&amp;quot; of the theme engine which delete transparent part of icons and strech them regardless of their proportions.&lt;br /&gt;
* Add support and nice icons for other resolutions (tiny-gui). Need to do previous point before and take care of the automatic resizing during the tiny-gui install&lt;br /&gt;
* Try to graying icons during opponent's turn. https://gna.org/bugs/?9058&lt;br /&gt;
&lt;br /&gt;
== Dialog engine ==&lt;br /&gt;
I recently discover some flaws with dialogs using long texts in cells or buttons ( https://gna.org/bugs/?4299 ). A first easy step will be to add some maximum width for dialog and after that, do the same for each cells (not sure how). Probably will use ellipsis (&amp;quot;long text...&amp;quot;) because for the moment each row have the same height, so using linebreak for a big text will cause a general growing of all the rows.&lt;br /&gt;
&lt;br /&gt;
== Text rendering ==&lt;br /&gt;
* Fix the imprecise wrapping when using special format characters and don't even watch size variation.&lt;br /&gt;
* Do something about wrapping of language not using spaces (add a new wrap parameter for language: CJK or wrap-letter): http://www.wesnoth.org/forum/viewtopic.php?p=228337#228337&lt;br /&gt;
&lt;br /&gt;
== hp/xp bars ==&lt;br /&gt;
Replace this old, complex, buggy(zoom), hard-coded code of bars ( https://gna.org/bugs/?4931 ). I plan to use an all images-based system for easy configuration and customization. Current prototype works fine and seems powerful. Except this stupid alpha variation of the filled part of the bar. So on standby, 3 currents options:&lt;br /&gt;
* Drop the alpha variation.&lt;br /&gt;
* Use a little expensive adjust_alpha for the special cases, and maybe just use 2 states : normal / highlighted.&lt;br /&gt;
* Use new bars (and so a different set of images) when highlighting an unit. This will also allow some fancy things like bigger bars etc... but need more memory (a dozen of images)&lt;br /&gt;
&lt;br /&gt;
= Future projects =&lt;br /&gt;
* Do some tweaking about the mousewheel scrolling&lt;br /&gt;
* Polish the drag&amp;amp;drop&lt;br /&gt;
* Try again the grab-map feature for scrolling&lt;br /&gt;
* Starting to replace coloUr by color in the code&lt;br /&gt;
* Continue to improve zoom&lt;br /&gt;
* Optimize the image cache system&lt;br /&gt;
* Optimize some sdl_utils functions&lt;br /&gt;
* Desynchronize flags of villages&lt;br /&gt;
* Change this bad system of special characters to a tag system. Or at least, use a better characters choice (using &amp;quot;{&amp;quot; for normal text is really a bad idea for macros)&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=15357</id>
		<title>User:Alink</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=15357"/>
		<updated>2007-05-14T16:37:37Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* hp/xp bars */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm just starting this page, so for the moment, there is only the essential current things &lt;br /&gt;
&lt;br /&gt;
= Current projects =&lt;br /&gt;
&lt;br /&gt;
== Icons in the status bar ==&lt;br /&gt;
* Modify themes to add space for the new flag icon (from 16 pixels to 24). For better visibility of the playing side, because a rectangle is better for a flag and the images ave already this size (so they are shrinked). ''Done for the default theme.''&lt;br /&gt;
* Use standard size (16x16, 24x16) for the icons instead of 15x15. ''Done, except for the flag-icons.''&lt;br /&gt;
* Remove a &amp;quot;feature&amp;quot; of the theme engine which delete transparent part of icons and strech them regardless of their proportions.&lt;br /&gt;
* Add support and nice icons for other resolutions (tiny-gui). Need to do previous point before and take care of the automatic resizing during the tiny-gui install&lt;br /&gt;
* Try to graying icons during opponent's turn. https://gna.org/bugs/?9058&lt;br /&gt;
&lt;br /&gt;
== Text rendering ==&lt;br /&gt;
* Fix the imprecise wrapping when using special format characters and don't even watch size variation.&lt;br /&gt;
* Do something about wrapping of language not using spaces (add a new wrap parameter for language: CJK or wrap-letter): http://www.wesnoth.org/forum/viewtopic.php?p=228337#228337&lt;br /&gt;
&lt;br /&gt;
== hp/xp bars ==&lt;br /&gt;
Replace this old, complex, buggy(zoom), hard-coded code of bars ( https://gna.org/bugs/?4931 ). I plan to use an all images-based system for easy configuration and customization. Current prototype works fine and seems powerful. Except this stupid alpha variation of the filled part of the bar. So on standby, 3 currents options:&lt;br /&gt;
* Drop the alpha variation.&lt;br /&gt;
* Use a little expensive adjust_alpha for the special cases, and maybe just use 2 states : normal / highlighted.&lt;br /&gt;
* Use new bars (and so a different set of images) when highlighting an unit. This will also allow some fancy things like bigger bars etc... but need more memory (a dozen of images)&lt;br /&gt;
&lt;br /&gt;
= Future projects =&lt;br /&gt;
* Do some tweaking about the mousewheel scrolling&lt;br /&gt;
* Polish the drag&amp;amp;drop&lt;br /&gt;
* Try again the grab-map feature for scrolling&lt;br /&gt;
* Starting to replace coloUr by color in the code&lt;br /&gt;
* Continue to improve zoom&lt;br /&gt;
* Optimize the image cache system&lt;br /&gt;
* Optimize some sdl_utils functions&lt;br /&gt;
* Desynchronize flags of villages&lt;br /&gt;
* Change this bad system of special characters to a tag system. Or at least, use a better characters choice (using &amp;quot;{&amp;quot; for normal text is really a bad idea for macros)&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=15356</id>
		<title>User:Alink</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=15356"/>
		<updated>2007-05-14T16:36:02Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Text rendering */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm just starting this page, so for the moment, there is only the essential current things &lt;br /&gt;
&lt;br /&gt;
= Current projects =&lt;br /&gt;
&lt;br /&gt;
== Icons in the status bar ==&lt;br /&gt;
* Modify themes to add space for the new flag icon (from 16 pixels to 24). For better visibility of the playing side, because a rectangle is better for a flag and the images ave already this size (so they are shrinked). ''Done for the default theme.''&lt;br /&gt;
* Use standard size (16x16, 24x16) for the icons instead of 15x15. ''Done, except for the flag-icons.''&lt;br /&gt;
* Remove a &amp;quot;feature&amp;quot; of the theme engine which delete transparent part of icons and strech them regardless of their proportions.&lt;br /&gt;
* Add support and nice icons for other resolutions (tiny-gui). Need to do previous point before and take care of the automatic resizing during the tiny-gui install&lt;br /&gt;
* Try to graying icons during opponent's turn. https://gna.org/bugs/?9058&lt;br /&gt;
&lt;br /&gt;
== Text rendering ==&lt;br /&gt;
* Fix the imprecise wrapping when using special format characters and don't even watch size variation.&lt;br /&gt;
* Do something about wrapping of language not using spaces (add a new wrap parameter for language: CJK or wrap-letter): http://www.wesnoth.org/forum/viewtopic.php?p=228337#228337&lt;br /&gt;
&lt;br /&gt;
== hp/xp bars ==&lt;br /&gt;
Replace this old, complex, buggy(zoom), hard-coded code of bars ( https://gna.org/bugs/?4931 ). I plan to use an all images-based system for easy configuration and customization. Current prototype works fine except and seems powerfull. Except this stupid alpha variation of the filled part of the bar. So on standby, 3 currents options:&lt;br /&gt;
* Drop the alpha variation.&lt;br /&gt;
* Use a little expensive adjust_alpha for the special cases.&lt;br /&gt;
* Use new bars (and so a different set of images) when highlighting an unit. This will also allow some fancy things like bigger bars etc... but need more memory (a dozen of images) &lt;br /&gt;
&lt;br /&gt;
= Future projects =&lt;br /&gt;
* Do some tweaking about the mousewheel scrolling&lt;br /&gt;
* Polish the drag&amp;amp;drop&lt;br /&gt;
* Try again the grab-map feature for scrolling&lt;br /&gt;
* Starting to replace coloUr by color in the code&lt;br /&gt;
* Continue to improve zoom&lt;br /&gt;
* Optimize the image cache system&lt;br /&gt;
* Optimize some sdl_utils functions&lt;br /&gt;
* Desynchronize flags of villages&lt;br /&gt;
* Change this bad system of special characters to a tag system. Or at least, use a better characters choice (using &amp;quot;{&amp;quot; for normal text is really a bad idea for macros)&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=15355</id>
		<title>User:Alink</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=15355"/>
		<updated>2007-05-14T16:34:01Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Icons in the status bar */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm just starting this page, so for the moment, there is only the essential current things &lt;br /&gt;
&lt;br /&gt;
= Current projects =&lt;br /&gt;
&lt;br /&gt;
== Icons in the status bar ==&lt;br /&gt;
* Modify themes to add space for the new flag icon (from 16 pixels to 24). For better visibility of the playing side, because a rectangle is better for a flag and the images ave already this size (so they are shrinked). ''Done for the default theme.''&lt;br /&gt;
* Use standard size (16x16, 24x16) for the icons instead of 15x15. ''Done, except for the flag-icons.''&lt;br /&gt;
* Remove a &amp;quot;feature&amp;quot; of the theme engine which delete transparent part of icons and strech them regardless of their proportions.&lt;br /&gt;
* Add support and nice icons for other resolutions (tiny-gui). Need to do previous point before and take care of the automatic resizing during the tiny-gui install&lt;br /&gt;
* Try to graying icons during opponent's turn. https://gna.org/bugs/?9058&lt;br /&gt;
&lt;br /&gt;
== Text rendering ==&lt;br /&gt;
* Fix the imprecise wrapping when using special format characters and don't even watch size variation.&lt;br /&gt;
* Do something about wrapping of language not using spaces (fix tag use or add a new wrap parameter for language): http://www.wesnoth.org/forum/viewtopic.php?p=228337#228337&lt;br /&gt;
&lt;br /&gt;
== hp/xp bars ==&lt;br /&gt;
Replace this old, complex, buggy(zoom), hard-coded code of bars ( https://gna.org/bugs/?4931 ). I plan to use an all images-based system for easy configuration and customization. Current prototype works fine except and seems powerfull. Except this stupid alpha variation of the filled part of the bar. So on standby, 3 currents options:&lt;br /&gt;
* Drop the alpha variation.&lt;br /&gt;
* Use a little expensive adjust_alpha for the special cases.&lt;br /&gt;
* Use new bars (and so a different set of images) when highlighting an unit. This will also allow some fancy things like bigger bars etc... but need more memory (a dozen of images) &lt;br /&gt;
&lt;br /&gt;
= Future projects =&lt;br /&gt;
* Do some tweaking about the mousewheel scrolling&lt;br /&gt;
* Polish the drag&amp;amp;drop&lt;br /&gt;
* Try again the grab-map feature for scrolling&lt;br /&gt;
* Starting to replace coloUr by color in the code&lt;br /&gt;
* Continue to improve zoom&lt;br /&gt;
* Optimize the image cache system&lt;br /&gt;
* Optimize some sdl_utils functions&lt;br /&gt;
* Desynchronize flags of villages&lt;br /&gt;
* Change this bad system of special characters to a tag system. Or at least, use a better characters choice (using &amp;quot;{&amp;quot; for normal text is really a bad idea for macros)&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=15231</id>
		<title>User:Alink</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=User:Alink&amp;diff=15231"/>
		<updated>2007-05-08T23:54:35Z</updated>

		<summary type="html">&lt;p&gt;Alink: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm just starting this page, so for the moment, there is only the essential current things &lt;br /&gt;
&lt;br /&gt;
= Current projects =&lt;br /&gt;
&lt;br /&gt;
== Icons in the status bar ==&lt;br /&gt;
* Modify themes to add space for the new flag icon (from 16 pixels to 24). For better visibility of the playing side, because a rectangle is better for a flag and the images ave already this size (so they are shrinked).&lt;br /&gt;
* Use standard size (16x16, 24x16) for the icons instead of 15x15&lt;br /&gt;
* Remove a &amp;quot;feature&amp;quot; of the theme engine which delete transparent part of icons and strech them regardless of their proportions.&lt;br /&gt;
* Add support and nice icons for other resolutions (tiny-gui). Easy but need to do previous point before&lt;br /&gt;
* Try to graying icons during opponent's turn. https://gna.org/bugs/?9058&lt;br /&gt;
&lt;br /&gt;
== Text rendering ==&lt;br /&gt;
* Fix the imprecise wrapping when using special format characters and don't even watch size variation.&lt;br /&gt;
* Do something about wrapping of language not using spaces (fix tag use or add a new wrap parameter for language): http://www.wesnoth.org/forum/viewtopic.php?p=228337#228337&lt;br /&gt;
&lt;br /&gt;
== hp/xp bars ==&lt;br /&gt;
Replace this old, complex, buggy(zoom), hard-coded code of bars ( https://gna.org/bugs/?4931 ). I plan to use an all images-based system for easy configuration and customization. Current prototype works fine except and seems powerfull. Except this stupid alpha variation of the filled part of the bar. So on standby, 3 currents options:&lt;br /&gt;
* Drop the alpha variation.&lt;br /&gt;
* Use a little expensive adjust_alpha for the special cases.&lt;br /&gt;
* Use new bars (and so a different set of images) when highlighting an unit. This will also allow some fancy things like bigger bars etc... but need more memory (a dozen of images) &lt;br /&gt;
&lt;br /&gt;
= Future projects =&lt;br /&gt;
* Do some tweaking about the mousewheel scrolling&lt;br /&gt;
* Polish the drag&amp;amp;drop&lt;br /&gt;
* Try again the grab-map feature for scrolling&lt;br /&gt;
* Starting to replace coloUr by color in the code&lt;br /&gt;
* Continue to improve zoom&lt;br /&gt;
* Optimize the image cache system&lt;br /&gt;
* Optimize some sdl_utils functions&lt;br /&gt;
* Desynchronize flags of villages&lt;br /&gt;
* Change this bad system of special characters to a tag system. Or at least, use a better characters choice (using &amp;quot;{&amp;quot; for normal text is really a bad idea for macros)&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=EasyCoding&amp;diff=14959</id>
		<title>EasyCoding</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=EasyCoding&amp;diff=14959"/>
		<updated>2007-04-25T17:40:34Z</updated>

		<summary type="html">&lt;p&gt;Alink: /* Theme Changes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Foreword ==&lt;br /&gt;
This page is here to document easy to do coding tasks. It is not here to double the feature request database, and should only be filled by people that know the code well enough to juge the difficulty of a given task. &lt;br /&gt;
&lt;br /&gt;
If you are such a person, you should feel free to edit this page.&lt;br /&gt;
&lt;br /&gt;
If you're not, you should post a feature request and discuss your idea on the forum or IRC. A coder with better knowledge of the code might give you the green light to add your feature here.&lt;br /&gt;
&lt;br /&gt;
Anybody should feel free to add &amp;quot;clues&amp;quot; to any tasks, that is entry points, traps to avoid, person to contact to discuss and so on.&lt;br /&gt;
&lt;br /&gt;
If you plan to work on a feature, write your name at the bottom of the feature, with the date. Note that if you are too long at working on a feature I'll &amp;quot;free&amp;quot; it back (that is if you're not working on it. If you have problems implementing it, just tell us....)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[User:Boucman|Boucman]] 20:48, 3 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
== Animation related features ==&lt;br /&gt;
=== Victory animation ===&lt;br /&gt;
'''an animation to be played by the surviving unit during the death animation of the other unit'''&lt;br /&gt;
&lt;br /&gt;
this should be fairly easy to do, just duplicate all death animation code, and modify the unit_die function to change the state of both units.&lt;br /&gt;
&lt;br /&gt;
ask Boucman for extra help&lt;br /&gt;
&lt;br /&gt;
* unit_display.cpp&lt;br /&gt;
* unit_type.cpp&lt;br /&gt;
* unit.cpp&lt;br /&gt;
* unit_animation.cpp;&lt;br /&gt;
&lt;br /&gt;
Done! Submitting patch as soon as it can be tested. [[User:TheAT|TheAT]] 01:53, 17 October 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
=== En Guard animation ===&lt;br /&gt;
'''An animation to replace the standing animation when the unit is next to an enemy'''&lt;br /&gt;
&lt;br /&gt;
Slightly more tricky than the previous one, you should copy most of the standing code, &lt;br /&gt;
but beware that this should be invisible to external callers. &lt;br /&gt;
The call to get_stats should be looked at&lt;br /&gt;
&lt;br /&gt;
Ask Boucman for extra help&lt;br /&gt;
&lt;br /&gt;
* unit.cpp&lt;br /&gt;
* unit_type.cpp&lt;br /&gt;
* unit_animation.cpp&lt;br /&gt;
&lt;br /&gt;
=== Special tags for Extra_anim ===&lt;br /&gt;
'''Special tags in the animate_unit event to call standard unit animations'''&lt;br /&gt;
&lt;br /&gt;
One of the big limitation of the extra_animation tags is &lt;br /&gt;
that you need to modify the unit itself to have the extra anim. &lt;br /&gt;
Most anims can't be easily called that way. &lt;br /&gt;
It would be interesting to have special tags that would be recognised &lt;br /&gt;
to call the standard animations (attack, defense, etc...)&lt;br /&gt;
&lt;br /&gt;
The tricky part is to handle correctly the &amp;quot;offset&amp;quot; parameter, &lt;br /&gt;
and add all the WML handling to &amp;quot;fill in&amp;quot; the information &lt;br /&gt;
we won't have available (non-existant filtering criterias)&lt;br /&gt;
&lt;br /&gt;
This is more tricky than the two above, &lt;br /&gt;
and I would advise doing one of the other two first to understand how it works&lt;br /&gt;
&lt;br /&gt;
Ask Boucman for extra help&lt;br /&gt;
&lt;br /&gt;
* unit.cpp&lt;br /&gt;
* actions.cpp&lt;br /&gt;
&lt;br /&gt;
=== Animate flags during a [delay] event ===&lt;br /&gt;
currently, the [event] tag calls SDL_delay() and blocks the game completely. It would be trivial to change it to a loop that would call event::pump() every 10ms to have all animations updated&lt;br /&gt;
&lt;br /&gt;
the tricky part is to make sure the screen is somehow &amp;quot;locked&amp;quot; and that player can't play during that time (should be the case, simple checking is needed)&lt;br /&gt;
&lt;br /&gt;
grep should give you the file to change&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I am on this.Boucman please email me with more details when you have time [[User:Spx2|Spx2]] 12:31, 23 December 2006 (CEST) &lt;br /&gt;
&lt;br /&gt;
Boucman please email me with an event that i can test this on&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WML related features ==&lt;br /&gt;
=== Side-specific messages ===&lt;br /&gt;
Side-specific [message]s ([http://gna.org/bugs/index.php?7427 FR #7427])&lt;br /&gt;
=== Side-specific results ===&lt;br /&gt;
Giving result=defeat or result=victory for specific sides. ([http://gna.org/bugs/index.php?4960 FR #4960])&lt;br /&gt;
=== Recall Event ===&lt;br /&gt;
WML event trigger for recalling (the current one triggers on both recalls and recruits) ([http://gna.org/bugs/index.php?3622 FR #3622]) (please read the comments of the report for a proper description of how this should work)&lt;br /&gt;
=== Enabling checking of damage dealt in WML ===&lt;br /&gt;
A WML variable should be set when triggering some combat-related events, allowing WML to know the amount of damage being dealt. ([http://gna.org/bugs/index.php?7673 FR #7673])&lt;br /&gt;
=== Support for leaderless multiplayergames ===&lt;br /&gt;
Add support for the WML tag victory_when_enemies_defeated in the scenario tag during multiplayergames. ([https://gna.org/bugs/index.php?8106 FR #8106])&lt;br /&gt;
&lt;br /&gt;
== GUI related features ==&lt;br /&gt;
=== Theme Changes ===&lt;br /&gt;
* show number of owned villages/total villages (FR: #3135) (--[[User:Alink|alink]] done but must update help, doc, tooltip...)&lt;br /&gt;
* allow custom themes to display values of WML variables ([http://gna.org/bugs/index.php?6209 FR #6209])&lt;br /&gt;
* hide the hourglass item from the statusbar when there is no timer&lt;br /&gt;
&lt;br /&gt;
=== Widget Changes ===&lt;br /&gt;
* show side number, name and team association information in the status table &lt;br /&gt;
* make games sortable in the lobby (open slots, total number of players, era, XP modifier, gold per village, fog/shroud) &lt;br /&gt;
* input history (chat, commands, ..), seek Sapient for more info and tips&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
=== More powerful village naming ===&lt;br /&gt;
'''Adding mountain names and other features to village names, having a second random name in village names'''&lt;br /&gt;
&lt;br /&gt;
Currently the village naming engine has a very good structure that could allow &lt;br /&gt;
more powerfull names to be generated. &lt;br /&gt;
Understanding how it works should be quite easy, and a few usefull improvements could be added.&lt;br /&gt;
&lt;br /&gt;
* Currently villages can use lake names and river names, this should be extended to other features like bridges, swamps, mountains etc...&lt;br /&gt;
* It would be nice to have a separate list of &amp;quot;first sylabus&amp;quot; and &amp;quot;last sylabus&amp;quot; for naming. That's not really needed in english, but some translations could use it&lt;br /&gt;
* Again, it is common to have villages with more than one &amp;quot;random&amp;quot; word in them. having a $name2 variable would be nice&lt;br /&gt;
&lt;br /&gt;
=== Debug Mode ===&lt;br /&gt;
* New debug command functionality (setting status.variables, possibly terrain, WML value display)&lt;br /&gt;
* Make it possible to toggle shroud and fog (but take care that this is only possible in campaigns)&lt;/div&gt;</summary>
		<author><name>Alink</name></author>
		
	</entry>
</feed>