<?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=Kevg</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=Kevg"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Kevg"/>
	<updated>2026-05-05T11:39:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=DirectActionsWML&amp;diff=36741</id>
		<title>DirectActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=DirectActionsWML&amp;diff=36741"/>
		<updated>2010-06-06T12:40:47Z</updated>

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

		<summary type="html">&lt;p&gt;Kevg: /* WML related features */&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 judge 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;
&lt;br /&gt;
Since bugs are sometimes a good opportunity to get a first idea of the code, i will add some here that are easy to fix as soon as i stumble upon them (the one i had in mind is fixed already ;-).&lt;br /&gt;
&lt;br /&gt;
--Yogi Bear, 28 February 2008&lt;br /&gt;
&lt;br /&gt;
== MP related features ==&lt;br /&gt;
&lt;br /&gt;
== WML related features ==&lt;br /&gt;
&lt;br /&gt;
=== WML configurable village income / upkeep ===&lt;br /&gt;
Preferably as a [scenario], [side] or [campaign] keys. As per FR #6301 [https://gna.org/bugs/?6301]. Patch submitted: [https://gna.org/patch/index.php?1162] (gabba)&lt;br /&gt;
&lt;br /&gt;
--[[User:Boucman|Boucman]] 08:56, 28 February 2010 (UTC) : this is postponed for 1.8, can be considered reserved&lt;br /&gt;
&lt;br /&gt;
=== Add support of [if] for [scenario] ===&lt;br /&gt;
As per FR #4539 [https://gna.org/bugs/?4539]&lt;br /&gt;
&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]) -- [[User:dlr365|dlr365]] -- patch submitted [https://gna.org/bugs/index.php?4960]&lt;br /&gt;
&lt;br /&gt;
--[[User:Boucman|Boucman]] 08:58, 28 February 2010 (UTC) Patch seems abandonned, but can be used for further work feel free to take over the FR&lt;br /&gt;
&lt;br /&gt;
=== Support for leaderless multiplayergames ===&lt;br /&gt;
Add support for the WML key victory_when_enemies_defeated= in the scenario tag during multiplayergames. ([https://gna.org/bugs/index.php?8106 FR #8106])&lt;br /&gt;
--[[User:Endercoaster|endercoaster]] 30, March 2010. I'm gonna give this one a try.&lt;br /&gt;
&lt;br /&gt;
=== Support for standalone multiplayer scenarios ===&lt;br /&gt;
There used to be support for standalone scenarios in the userdata tree, in reorganising the trees this feature got lost and an add-on is now required to add a scenario.&lt;br /&gt;
Re-add this feature. It is probably a good idea to mirror the mainline multiplayer tree.&lt;br /&gt;
&lt;br /&gt;
=== Other Ideas ===&lt;br /&gt;
See [[FutureWML]]; some ideas there are easier than others.&lt;br /&gt;
&lt;br /&gt;
== Improvements to AI ==&lt;br /&gt;
&lt;br /&gt;
Fix some todos, add new formula functions, or do minor improvements to the formula language. Make it easier to debug the formula language, add more ai components.&lt;br /&gt;
&lt;br /&gt;
Please discuss these with Crab, Dragonking, Sirp or Boucman&lt;br /&gt;
&lt;br /&gt;
=== AI Batch testing ===&lt;br /&gt;
&lt;br /&gt;
Finish patch #1169 [https://gna.org/patch/?1169]&lt;br /&gt;
&lt;br /&gt;
=== Add more ai actions ===&lt;br /&gt;
&lt;br /&gt;
Add an ai action (and add formula_ai function to do that) to set a goto on a unit&lt;br /&gt;
&lt;br /&gt;
Add an ai action (and add formula_ai function to do that) to send a chat message to a player&lt;br /&gt;
&lt;br /&gt;
Add an ai action to set formula ai variable (convert existing code from formula_ai)&lt;br /&gt;
&lt;br /&gt;
Add an ai action to set formula ai unit variable (convert existing code from formula_ai)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add an ai action  (and add formula_ai function to do that) to fire a WML event &lt;br /&gt;
&lt;br /&gt;
=== write a (fai or c++ or lua) candidate action for leader control ===&lt;br /&gt;
&lt;br /&gt;
=== write a (fai or c++ or lua) candidate action for using leadership/illuminate  ===&lt;br /&gt;
special handling of units with leadership to have them support units. Only do it if it actually is useful (less hits needed to kill the unit) and ability to help multiple units in a single turn (assuming enough MP)&lt;br /&gt;
&lt;br /&gt;
=== write a (fai or c++ or lua) candidate action for healer control ===&lt;br /&gt;
Handle units with healing power, moving them at places where they can provide the most healing&lt;br /&gt;
&lt;br /&gt;
=== berserker improvement ===&lt;br /&gt;
The default AI's strategy of attacking as much as possible is very bad with berserker... A simple AI that would prevent the berserker from attacking (and keeping him close to fight without being exposed) and attack when the chance to kill is high enough would be an interesting addition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== power projection improvement ===&lt;br /&gt;
AI sometimes wants to calculate 'how much firepower can enemy bring on location X'. in doing so, it considers enemy possible moves, time of day, attacks, enemy defense, etc.&lt;br /&gt;
There is specific problem with 'time_of_day' used in that calculation -sometimes, it's really needed to check 'time of day for NEXT turn', not time of day for THIS turn.(since the time of day might change next turn). &lt;br /&gt;
&lt;br /&gt;
power_projection must be fixed to account for the possibility of time_of_day being different.&lt;br /&gt;
&lt;br /&gt;
Note that some enemies might go after us (so, still on THIS turn), and some - before us (so, their next turn will be on NEXT turn).&lt;br /&gt;
&lt;br /&gt;
== GUI related features ==&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Note at the moment Mordante is working on a new GUI system, these &lt;br /&gt;
changes will probably affect the way these items need to be implemented.&lt;br /&gt;
Contact Mordante on IRC before starting to work on these.&lt;br /&gt;
  &lt;br /&gt;
--[[User:SkeletonCrew|SkeletonCrew]] 14:04, 9 March 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Theme Changes ===&lt;br /&gt;
&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, ..) - note: rujasu is working on this feature&lt;br /&gt;
&lt;br /&gt;
== GUI2 related features ==&lt;br /&gt;
GUI2 is the new gui engine Mordante/SkeletonCrew is working on. &lt;br /&gt;
* Information on the wiki can be found here http://www.wesnoth.org/wiki/GUIToolkit&lt;br /&gt;
* The source code is under src/gui/&lt;br /&gt;
* The configuration config files are under data/gui/default&lt;br /&gt;
&lt;br /&gt;
Some tasks need the --new-widgets since the code is only shown in the experimental mode. Tasks which need this switch have the * in the title.&lt;br /&gt;
&lt;br /&gt;
At the moment there are no easy tasks available.&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&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;
Euschn 24/03/2009&lt;br /&gt;
&lt;br /&gt;
=== Debug Mode ===&lt;br /&gt;
* New debug command functionality (setting additional status.variables, possibly terrain)&lt;br /&gt;
=== Option to disable terrain animations globally ===&lt;br /&gt;
see https://gna.org/bugs/?15976&lt;br /&gt;
&lt;br /&gt;
please think a little about use cases (editor, game etc...)&lt;br /&gt;
&lt;br /&gt;
ask boucman for details&lt;br /&gt;
&lt;br /&gt;
== Bugs ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[NotSoEasyCoding]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Future]]&lt;/div&gt;</summary>
		<author><name>Kevg</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=ConditionalActionsWML&amp;diff=36694</id>
		<title>ConditionalActionsWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=ConditionalActionsWML&amp;diff=36694"/>
		<updated>2010-05-30T11:23:21Z</updated>

		<summary type="html">&lt;p&gt;Kevg: /* True Condition Tags */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WML Tags}}&lt;br /&gt;
&lt;br /&gt;
Conditional Actions WML is used to describe container actions that create branching and flow control for WML. The [[#Conditional Actions|conditional actions]] act as gatekeepers, encapsulating other actions with [[#Condition Tags|conditions]] which must be met before an action can take place. These conditional actions also contain the actions which will take place if those conditions are met and, in some cases, what actions will take place if they are ''not'' met.&lt;br /&gt;
&lt;br /&gt;
== Conditional Actions ==&lt;br /&gt;
&lt;br /&gt;
These actions describe actions that should be executed only if certain conditions are met.&lt;br /&gt;
&lt;br /&gt;
=== [if] ===&lt;br /&gt;
&lt;br /&gt;
Executes actions only if the contained [[#Condition Tags|conditions]] are met.&lt;br /&gt;
&lt;br /&gt;
* [[#Condition Tags|Condition Tags]]: Conditions which must be met for the actions in the '''[then]''' tag to be executed.&lt;br /&gt;
&lt;br /&gt;
* '''[then]''': Contains [[:Category:ActionsWML|actions]] which should be executed if all conditions evaluate as true ''or'' if any single '''[or]''' tag evaluates as true.&lt;br /&gt;
&lt;br /&gt;
* '''[else]''': Contains [[:Category:ActionsWML|actions]] which should be executed if any condition evaluates as false ''and'' '''all''' of the '''[or]''' tags evaluate as false.&lt;br /&gt;
&lt;br /&gt;
=== [switch] ===&lt;br /&gt;
&lt;br /&gt;
The '''[switch]''' tag is a special case because it does not use [[#Condition Tags|Condition Tags]] to control whether actions are performed. Instead, it executes different sets of actions based on the value of a variable.&lt;br /&gt;
&lt;br /&gt;
* '''variable''': The name of the variable to check.&lt;br /&gt;
* '''[case]''': Case tag which forms a block containing:&lt;br /&gt;
** '''value''': The value to test the variable's value against.&lt;br /&gt;
** [[:Category:ActionsWML|Action WML]]: Action WML to execute if the variable matches the value. (The rest of the '''[case]''' block after the '''value''' attribute.)&lt;br /&gt;
* '''[else]''': Else tag which forms a block of [[:Category:ActionsWML|Action WML]] to execute if no '''[case]''' block contains a '''value''' matching the value of the '''variable'''.&lt;br /&gt;
&lt;br /&gt;
Example usage:&lt;br /&gt;
  [switch]&lt;br /&gt;
     variable=foo&lt;br /&gt;
     [case]&lt;br /&gt;
        value=&amp;quot;A&amp;quot;&lt;br /&gt;
        ... WML if foo=A ...&lt;br /&gt;
     [/case]&lt;br /&gt;
     [case]&lt;br /&gt;
        value=&amp;quot;B&amp;quot;&lt;br /&gt;
        ... WML if foo=B ...&lt;br /&gt;
     [/case]&lt;br /&gt;
     [else]&lt;br /&gt;
        ... WML if not foo=A nor foo=B ...&lt;br /&gt;
     [/else]&lt;br /&gt;
  [/switch]&lt;br /&gt;
&lt;br /&gt;
=== [while] ===&lt;br /&gt;
&lt;br /&gt;
Like the '''[if]''' tag, executes actions only if conditions described in the contained [[#Condition Tags|conditions]] are met. Additionally, the '''[while]''' tag ''continues'' to execute the actions until the contained [[#Condition Tags|conditions]] are no longer met. Executes a maximum of 1024 iterations per invocation.&lt;br /&gt;
&lt;br /&gt;
* [[#Condition Tags|Condition Tags]]: Conditions which must be met for the actions in the '''[do]''' tag to be executed.&lt;br /&gt;
&lt;br /&gt;
* '''[do]''': contains [[:Category:ActionsWML|actions]] that should be executed repeatedly until some condition is false.&lt;br /&gt;
&lt;br /&gt;
The '''[while]''' tag is useful for iterating over an array.&lt;br /&gt;
An array is a list of values.&lt;br /&gt;
The ''number''th value in the array '''array''' is stored in the WML variable '''''array''[number]'''.&lt;br /&gt;
Note that if '''number''' is the value of the variable '''variable''',&lt;br /&gt;
the expression '''$''array''[$variable]''' will return the ''number''th value in ''array''.&lt;br /&gt;
&lt;br /&gt;
==== 'FOREACH' Macro ====&lt;br /&gt;
This macro simplifies the use of a '''[while]''' tag to create a ''for-each'' iteration format. This is useful, for example, when you want to iterate over each row in a table. To use it, use the [http://www.wesnoth.org/macro-reference.xhtml#FOREACH FOREACH] and [http://www.wesnoth.org/macro-reference.xhtml#NEXT NEXT] macros.&lt;br /&gt;
&lt;br /&gt;
==== 'REPEAT' Macro ====&lt;br /&gt;
This macro simplifies the use of a '''[while]''' tag to execute the same  [[:Category:ActionsWML|actions]] repeatedly for a specified number of times. To use it, use the [http://www.wesnoth.org/macro-reference.xhtml#REPEAT REPEAT] macro.&lt;br /&gt;
&lt;br /&gt;
== Condition Tags ==&lt;br /&gt;
&lt;br /&gt;
===True Condition Tags===&lt;br /&gt;
These tags describe conditions which must be met before an action can take place. Some or all of them are used in the various [[#Conditional Actions|Conditional Actions]].&lt;br /&gt;
&lt;br /&gt;
; [have_unit]&lt;br /&gt;
: A unit with greater than zero hit points matching this filter exists.&lt;br /&gt;
:* [[StandardUnitFilter]] '''*''': Selection criteria. Do not use a [filter] tag.&amp;lt;br /&amp;gt;'''* Note:''' ''Does '''not''' check for matching units in the recall list!''&lt;br /&gt;
:* '''count''': ''(Optional)'' If used, a number of units equal to the value must match the filter. Accepts a number, range, or comma separated range. If not used, the default value is &amp;quot;1-99999&amp;quot;.&lt;br /&gt;
:* '''search_recall_list''': ''(Optional)'' If 'yes', search through recall list too. (Default is 'no') {{DevFeature1.9}}&lt;br /&gt;
&lt;br /&gt;
; [have_location]&lt;br /&gt;
: A location matching this filter exists.&lt;br /&gt;
:* [[StandardLocationFilter]]: Selection criteria.&lt;br /&gt;
:* '''count''': ''(Optional)'' If used, a number of locations equal to the value must match the filter. Accepts a number, range, or comma separated range. If not used, the default value is &amp;quot;1-99999&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
; [variable]&lt;br /&gt;
: Test the value of a WML variable (see [[VariablesWML]]) against another value.&lt;br /&gt;
:* '''name''': The name of the variable to test.&lt;br /&gt;
:* ''&amp;lt;comparison&amp;gt;'': '''One''' of the following keys must be used to compare the value of the named variable, represented as ''$name'' below, against another value:&lt;br /&gt;
:** '''contains''': ''$name'' contains this string value.&lt;br /&gt;
:** '''equals''': ''$name'' is equal (string wise) to this value.&lt;br /&gt;
:** '''not_equals''': ''$name'' is not equal (string wise) to this value.&lt;br /&gt;
:** '''numerical_equals''': ''$name'' is equal (numerically) to this value. &lt;br /&gt;
:** '''numerical_not_equals''': ''$name'' is not equal (numerically) to this value. '''*'''&amp;lt;br /&amp;gt;'''*''' Using equals is faster. The point of numerical_equals and boolean_equals is not performance, it's representation. For instance, &amp;quot;1&amp;quot; and &amp;quot;1.0&amp;quot; are not equal as strings but they are equal as numbers; and &amp;quot;yes&amp;quot; and &amp;quot;on&amp;quot; are not equal as strings but they are equal as booleans. (This also explains why equals is faster: it is a straightforward comparison that doesn't try to understand what you have written.)&lt;br /&gt;
:** '''greater_than''': ''$name'' is greater than this value.&lt;br /&gt;
:** '''greater_than_equal_to''': ''$name'' is greater than or equal to this value.&lt;br /&gt;
:** '''less_than''': ''$name'' is less than this value.&lt;br /&gt;
:** '''less_than_equal_to''': ''$name'' is less than or equal to this value.&lt;br /&gt;
:** '''boolean_equals''': ''$name'' has an equivalent boolean value. '''*'''&lt;br /&gt;
:** '''boolean_not_equals''': ''$name'' does not have an equivalent boolean value. '''*'''&lt;br /&gt;
====Boolean Values====&lt;br /&gt;
'''*''' When values are evaluated as boolean values they are checked to see if they are ''false'' or ''true''.&amp;lt;br /&amp;gt;These values are evaluated as ''false'': '''no''', '''false''', '''off''', '''0''', and '''0.0''' (and &amp;quot;'''uninitialized'''&amp;quot;)&amp;lt;br /&amp;gt;These values are evaluated as ''true'': '''yes''', '''true''', '''on''', '''1''', and '''0.1''' (and any other non-zero number)&lt;br /&gt;
&lt;br /&gt;
=== Meta Condition Tags ===&lt;br /&gt;
&lt;br /&gt;
These tags aren't really conditions, themselves. Instead they are wrapped around condition tags to group them into multiple conditions that must all be met, lists of conditions that only one must be met, or conditions that must not be met. These are handled in order in any combination you can think of. One important thing to remember is if you are using '''[or]''' tags, the first conditional statement should ''not'' have an '''[or]''' tag wrapped around it.&lt;br /&gt;
&lt;br /&gt;
; [and]&lt;br /&gt;
: A condition which must evaluate to true in addition to any others. Useful as a bracket for complex conditions, but not strictly necessary.&lt;br /&gt;
:* [[#Condition Tags|Condition Tags]]: If these evaluate to true, the '''[and]''' tag evaluates to true.&lt;br /&gt;
&lt;br /&gt;
; [or]&lt;br /&gt;
: A condition which, if it evaluates to true, is all that is necessary for the conditions to be met. In other words, if all other conditions are false, but one '''[or]''' condition is true, the conditions have been met for an [[:Category:ActionsWML|action]] to take place. (See [[AdvancedConditionalWML|Example]])&lt;br /&gt;
:* [[#Condition Tags|Condition Tags]]: If these evaluate to true, the '''[or]''' tag evaluates to true. &lt;br /&gt;
&lt;br /&gt;
; [not]&lt;br /&gt;
: A condition which reverses the evaluation of the contained condition(s).&lt;br /&gt;
:* [[#Condition Tags|Condition Tags]]: If these evaluate to true, the '''[not]''' tag evaluates to false. If these evaluate to false, the '''[not]''' tag evaluates to true.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[VariablesWML]]&lt;br /&gt;
* [[InternalActionsWML]]&lt;br /&gt;
* [[DirectActionsWML]]&lt;br /&gt;
* [[InterfaceActionsWML]]&lt;br /&gt;
* [[EventWML]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: WML Reference]]&lt;br /&gt;
[[Category: ActionsWML]]&lt;/div&gt;</summary>
		<author><name>Kevg</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=EasyCoding&amp;diff=36490</id>
		<title>EasyCoding</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=EasyCoding&amp;diff=36490"/>
		<updated>2010-05-12T16:14:38Z</updated>

		<summary type="html">&lt;p&gt;Kevg: /* Use different font for in-game chat */&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 judge 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;
&lt;br /&gt;
Since bugs are sometimes a good opportunity to get a first idea of the code, i will add some here that are easy to fix as soon as i stumble upon them (the one i had in mind is fixed already ;-).&lt;br /&gt;
&lt;br /&gt;
--Yogi Bear, 28 February 2008&lt;br /&gt;
&lt;br /&gt;
== MP related features ==&lt;br /&gt;
&lt;br /&gt;
== WML related features ==&lt;br /&gt;
&lt;br /&gt;
=== WML configurable village income / upkeep ===&lt;br /&gt;
Preferably as a [scenario], [side] or [campaign] keys. As per FR #6301 [https://gna.org/bugs/?6301]. Patch submitted: [https://gna.org/patch/index.php?1162] (gabba)&lt;br /&gt;
&lt;br /&gt;
--[[User:Boucman|Boucman]] 08:56, 28 February 2010 (UTC) : this is postponed for 1.8, can be considered reserved&lt;br /&gt;
&lt;br /&gt;
=== Add support of [if] for [scenario] ===&lt;br /&gt;
As per FR #4539 [https://gna.org/bugs/?4539]&lt;br /&gt;
&lt;br /&gt;
=== Make [have_unit] optionaly use full SUF ===&lt;br /&gt;
[have_unit] by default uses SUF but does not apply it to recall list. Introduce an optional key that will allow to lift that limitation.&lt;br /&gt;
&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]) -- [[User:dlr365|dlr365]] -- patch submitted [https://gna.org/bugs/index.php?4960]&lt;br /&gt;
&lt;br /&gt;
--[[User:Boucman|Boucman]] 08:58, 28 February 2010 (UTC) Patch seems abandonned, but can be used for further work feel free to take over the FR&lt;br /&gt;
&lt;br /&gt;
=== Support for leaderless multiplayergames ===&lt;br /&gt;
Add support for the WML key victory_when_enemies_defeated= in the scenario tag during multiplayergames. ([https://gna.org/bugs/index.php?8106 FR #8106])&lt;br /&gt;
--[[User:Endercoaster|endercoaster]] 30, March 2010. I'm gonna give this one a try.&lt;br /&gt;
&lt;br /&gt;
=== Support for standalone multiplayer scenarios ===&lt;br /&gt;
There used to be support for standalone scenarios in the userdata tree, in reorganising the trees this feature got lost and an add-on is now required to add a scenario.&lt;br /&gt;
Re-add this feature. It is probably a good idea to mirror the mainline multiplayer tree.&lt;br /&gt;
&lt;br /&gt;
=== Other Ideas ===&lt;br /&gt;
See [[FutureWML]]; some ideas there are easier than others.&lt;br /&gt;
&lt;br /&gt;
== Improvements to AI ==&lt;br /&gt;
&lt;br /&gt;
Fix some todos, add new formula functions, or do minor improvements to the formula language. Make it easier to debug the formula language, add more ai components.&lt;br /&gt;
&lt;br /&gt;
Please discuss these with Crab, Dragonking, Sirp or Boucman&lt;br /&gt;
&lt;br /&gt;
=== AI Batch testing ===&lt;br /&gt;
&lt;br /&gt;
Finish patch #1169 [https://gna.org/patch/?1169]&lt;br /&gt;
&lt;br /&gt;
=== Add more ai actions ===&lt;br /&gt;
&lt;br /&gt;
Add an ai action (and add formula_ai function to do that) to set a goto on a unit&lt;br /&gt;
&lt;br /&gt;
Add an ai action (and add formula_ai function to do that) to send a chat message to a player&lt;br /&gt;
&lt;br /&gt;
Add an ai action to set formula ai variable (convert existing code from formula_ai)&lt;br /&gt;
&lt;br /&gt;
Add an ai action to set formula ai unit variable (convert existing code from formula_ai)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Add an ai action  (and add formula_ai function to do that) to fire a WML event &lt;br /&gt;
&lt;br /&gt;
=== write a (fai or c++ or lua) candidate action for leader control ===&lt;br /&gt;
&lt;br /&gt;
=== write a (fai or c++ or lua) candidate action for using leadership/illuminate  ===&lt;br /&gt;
special handling of units with leadership to have them support units. Only do it if it actually is useful (less hits needed to kill the unit) and ability to help multiple units in a single turn (assuming enough MP)&lt;br /&gt;
&lt;br /&gt;
=== write a (fai or c++ or lua) candidate action for healer control ===&lt;br /&gt;
Handle units with healing power, moving them at places where they can provide the most healing&lt;br /&gt;
&lt;br /&gt;
=== berserker improvement ===&lt;br /&gt;
The default AI's strategy of attacking as much as possible is very bad with berserker... A simple AI that would prevent the berserker from attacking (and keeping him close to fight without being exposed) and attack when the chance to kill is high enough would be an interesting addition&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== power projection improvement ===&lt;br /&gt;
AI sometimes wants to calculate 'how much firepower can enemy bring on location X'. in doing so, it considers enemy possible moves, time of day, attacks, enemy defense, etc.&lt;br /&gt;
There is specific problem with 'time_of_day' used in that calculation -sometimes, it's really needed to check 'time of day for NEXT turn', not time of day for THIS turn.(since the time of day might change next turn). &lt;br /&gt;
&lt;br /&gt;
power_projection must be fixed to account for the possibility of time_of_day being different.&lt;br /&gt;
&lt;br /&gt;
Note that some enemies might go after us (so, still on THIS turn), and some - before us (so, their next turn will be on NEXT turn).&lt;br /&gt;
&lt;br /&gt;
== GUI related features ==&lt;br /&gt;
-------------------&lt;br /&gt;
&lt;br /&gt;
Note at the moment Mordante is working on a new GUI system, these &lt;br /&gt;
changes will probably affect the way these items need to be implemented.&lt;br /&gt;
Contact Mordante on IRC before starting to work on these.&lt;br /&gt;
  &lt;br /&gt;
--[[User:SkeletonCrew|SkeletonCrew]] 14:04, 9 March 2008 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Theme Changes ===&lt;br /&gt;
&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, ..) - note: rujasu is working on this feature&lt;br /&gt;
&lt;br /&gt;
== GUI2 related features ==&lt;br /&gt;
GUI2 is the new gui engine Mordante/SkeletonCrew is working on. &lt;br /&gt;
* Information on the wiki can be found here http://www.wesnoth.org/wiki/GUIToolkit&lt;br /&gt;
* The source code is under src/gui/&lt;br /&gt;
* The configuration config files are under data/gui/default&lt;br /&gt;
&lt;br /&gt;
Some tasks need the --new-widgets since the code is only shown in the experimental mode. Tasks which need this switch have the * in the title.&lt;br /&gt;
&lt;br /&gt;
At the moment there are no easy tasks available.&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&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;
Euschn 24/03/2009&lt;br /&gt;
&lt;br /&gt;
=== Debug Mode ===&lt;br /&gt;
* New debug command functionality (setting additional status.variables, possibly terrain)&lt;br /&gt;
=== Fixed parameter in a nimation ===&lt;br /&gt;
since we're a little short in easy codings, &lt;br /&gt;
[https://gna.org/bugs/index.php?13171 this feature request] is easy.&lt;br /&gt;
&lt;br /&gt;
Ask Boucman for details&lt;br /&gt;
&lt;br /&gt;
== Bugs ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[NotSoEasyCoding]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Future]]&lt;/div&gt;</summary>
		<author><name>Kevg</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SideWML&amp;diff=36419</id>
		<title>SideWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SideWML&amp;diff=36419"/>
		<updated>2010-05-06T12:21:27Z</updated>

		<summary type="html">&lt;p&gt;Kevg: /* 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 number. The leader of this side is placed on the tile represented by this number (see [[BuildingMaps]]). When defining sides, they must be defined in order since the side number is checked against the number of sides seen so far.&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 the remainder of the '''[side]''' tag, See [[SingleUnitWML]]. Note that if the keys '''x''', '''y''' are included, the leader will begin there regardless of keep location. If this side has a recall list from a previous level, then the recall list will be searched for a leader (using '''canrecruit=yes''') and if one is found it will be used instead of the one described in the '''[side]''' tag. Typical keys used for defining the leader unit are '''type''' (mandatory), '''id''', '''name''' and '''unrenamable=yes''', see [[SingleUnitWML]].&lt;br /&gt;
&lt;br /&gt;
* '''recruit''': a list of unit types. At the beginning of the scenario, the side gains recruitment of these units.&lt;br /&gt;
&lt;br /&gt;
* '''gold''': the starting gold for this side. Default 100. (If gold is carried over from a previous scenario, this value is the minimum starting gold.)&lt;br /&gt;
&lt;br /&gt;
* '''income''': the base income for this side, default 0. This is added to ''base_income'', '''[game_config]''' to determine the side's base income. (see [[GameConfigWML]]).&lt;br /&gt;
&lt;br /&gt;
* '''hidden''': if 'yes', side is not shown in status table.&lt;br /&gt;
&lt;br /&gt;
* '''fog''': if 'yes', this side cannot see any tiles it is not within vision of, except at the start. Please note that the AI currently ignores the fog.&lt;br /&gt;
&lt;br /&gt;
* '''shroud''': if 'yes', this side cannot see any tiles it has not moved within sight of. Please note that the AI currently ignores the shroud. NOTE: with shroud=no, this team *ignores* shroud, so it is not possible to modify it using place_shroud and remove_shroud tags. If you want to do so, use &amp;quot;shroud=yes&amp;quot; and place_shroud/remove_shroud tags.&lt;br /&gt;
&lt;br /&gt;
* '''shroud_data''': describes the area which this team has de-shrouded. An example:&lt;br /&gt;
 |&lt;br /&gt;
 |00011111000&lt;br /&gt;
This would leave the first column on the map unaltered and would change the second column for 11 tiles. A '0' means: shrouded, '1' means unshrouded. You can either call an external file using {@filename}  (see [[PreprocessorRef]]) or place the data in quotes. For making an external file see [[BuildingScenariosShroudData]].&lt;br /&gt;
&lt;br /&gt;
* '''persistent''': whether the side exists in any other scenarios. If '1'(yes), then ''save_id''(see below) is used to identify the side in other scenarios. Default '1'(yes) for sides with a human controller, '0'(no) for ai controlled sides.&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. (For versions prior to 1.7.3, some extra effort to retrieve carryover information may be needed. See [[SideSwitchingWML]])&lt;br /&gt;
&lt;br /&gt;
* '''team_name''': a non translatable string representing the team's description. Sides with the same team_name are allied. Default ''side''. {{DevFeature}} ''team_name'' is now a comma-separated list of teams that the side is on.&lt;br /&gt;
&lt;br /&gt;
* '''user_team_name''': a translatable string representing the team's description. This has no effect on alliances. Default ''team_name''.&lt;br /&gt;
&lt;br /&gt;
* '''colour''': May be either a numeric color index or a color name (e.g. 'blue', 'purple', 'orange', etc.).  The numeric form is deprecated. The default list of numbers and corresponding colours can be found in data/core/team_colors.cfg.&lt;br /&gt;
&lt;br /&gt;
* '''flag''': a custom flag animation to use instead of the default one to mark captured villages. An automatic side-coloring is applied.&lt;br /&gt;
** Example animation that has three frames and loops every 750ms: ''flag=misc/myflag-1.png:250,misc/myflag-2.png:250,misc/myflag-3.png:250''&lt;br /&gt;
&lt;br /&gt;
* '''flag_icon''': a custom flag icon to indicate the side playing in the statusbar (a size of 24x16 is recommended). An automatic side-coloring is applied.&lt;br /&gt;
&lt;br /&gt;
* '''village_gold''': the amount of gold given to this side per village it controls per turn. Default specified in ''village_income'', '''[game_config]''' ([[GameConfigWML]]). '''Note:''' If you need village gold to be 0. Set the variable to -1.&lt;br /&gt;
&lt;br /&gt;
* '''recall_cost''': the amount of gold it costs to recall a unit. Default specified in ''recall_cost'', '''[game_config]''' ([[GameConfigWML]]). {{DevFeature1.9}}&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;
* '''disallow_observers''': prevents observers from seeing this side turn. (default: no)&lt;br /&gt;
&lt;br /&gt;
* '''scroll_to_leader''': optional. If 'no', scroll to the leader doesn't perform on the start of each turn. (default: yes) ([[GameConfigWML]]). {{DevFeature1.9}}&lt;br /&gt;
&lt;br /&gt;
* '''[ai]''' if '''controller=ai''', gives parameters to the AI. See [[AiWML]].&lt;br /&gt;
&lt;br /&gt;
* '''[village]''' describes a village the side begins in control of.&lt;br /&gt;
** ''x'', ''y'' the location of the village. If the pair of coordinates is not a village or is duplicated in another [village] tag, behaviour is undefined. Recent game engine or wmllint should warn about these.&lt;br /&gt;
&lt;br /&gt;
* '''[unit]''' describes a unit which begins on the side. See [[SingleUnitWML]]. If the side has a recall list and the unit is not given a location, it will start on the recall list. Note that the ''side'' attribute under '''[unit]''' will be ignored, as the side will come from the ''side'' attribute of '''[side]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following keys are multiplayer only:&lt;br /&gt;
&lt;br /&gt;
* '''allow_player''': if false then this side will not be allowed to be modified and will be hidden during game creation.&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;
* '''faction''': this lock this side to this faction.&lt;br /&gt;
&lt;br /&gt;
* '''faction_from_recruit''': if true then this side will be locked to the faction that matches the recruits better.&lt;br /&gt;
&lt;br /&gt;
== 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>Kevg</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SideWML&amp;diff=36418</id>
		<title>SideWML</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SideWML&amp;diff=36418"/>
		<updated>2010-05-06T11:23:42Z</updated>

		<summary type="html">&lt;p&gt;Kevg: /* 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 number. The leader of this side is placed on the tile represented by this number (see [[BuildingMaps]]). When defining sides, they must be defined in order since the side number is checked against the number of sides seen so far.&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 the remainder of the '''[side]''' tag, See [[SingleUnitWML]]. Note that if the keys '''x''', '''y''' are included, the leader will begin there regardless of keep location. If this side has a recall list from a previous level, then the recall list will be searched for a leader (using '''canrecruit=yes''') and if one is found it will be used instead of the one described in the '''[side]''' tag. Typical keys used for defining the leader unit are '''type''' (mandatory), '''id''', '''name''' and '''unrenamable=yes''', see [[SingleUnitWML]].&lt;br /&gt;
&lt;br /&gt;
* '''recruit''': a list of unit types. At the beginning of the scenario, the side gains recruitment of these units.&lt;br /&gt;
&lt;br /&gt;
* '''gold''': the starting gold for this side. Default 100. (If gold is carried over from a previous scenario, this value is the minimum starting gold.)&lt;br /&gt;
&lt;br /&gt;
* '''income''': the base income for this side, default 0. This is added to ''base_income'', '''[game_config]''' to determine the side's base income. (see [[GameConfigWML]]).&lt;br /&gt;
&lt;br /&gt;
* '''hidden''': if 'yes', side is not shown in status table.&lt;br /&gt;
&lt;br /&gt;
* '''fog''': if 'yes', this side cannot see any tiles it is not within vision of, except at the start. Please note that the AI currently ignores the fog.&lt;br /&gt;
&lt;br /&gt;
* '''shroud''': if 'yes', this side cannot see any tiles it has not moved within sight of. Please note that the AI currently ignores the shroud. NOTE: with shroud=no, this team *ignores* shroud, so it is not possible to modify it using place_shroud and remove_shroud tags. If you want to do so, use &amp;quot;shroud=yes&amp;quot; and place_shroud/remove_shroud tags.&lt;br /&gt;
&lt;br /&gt;
* '''shroud_data''': describes the area which this team has de-shrouded. An example:&lt;br /&gt;
 |&lt;br /&gt;
 |00011111000&lt;br /&gt;
This would leave the first column on the map unaltered and would change the second column for 11 tiles. A '0' means: shrouded, '1' means unshrouded. You can either call an external file using {@filename}  (see [[PreprocessorRef]]) or place the data in quotes. For making an external file see [[BuildingScenariosShroudData]].&lt;br /&gt;
&lt;br /&gt;
* '''persistent''': whether the side exists in any other scenarios. If '1'(yes), then ''save_id''(see below) is used to identify the side in other scenarios. Default '1'(yes) for sides with a human controller, '0'(no) for ai controlled sides.&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. (For versions prior to 1.7.3, some extra effort to retrieve carryover information may be needed. See [[SideSwitchingWML]])&lt;br /&gt;
&lt;br /&gt;
* '''team_name''': a non translatable string representing the team's description. Sides with the same team_name are allied. Default ''side''. {{DevFeature}} ''team_name'' is now a comma-separated list of teams that the side is on.&lt;br /&gt;
&lt;br /&gt;
* '''user_team_name''': a translatable string representing the team's description. This has no effect on alliances. Default ''team_name''.&lt;br /&gt;
&lt;br /&gt;
* '''colour''': May be either a numeric color index or a color name (e.g. 'blue', 'purple', 'orange', etc.).  The numeric form is deprecated. The default list of numbers and corresponding colours can be found in data/core/team_colors.cfg.&lt;br /&gt;
&lt;br /&gt;
* '''flag''': a custom flag animation to use instead of the default one to mark captured villages. An automatic side-coloring is applied.&lt;br /&gt;
** Example animation that has three frames and loops every 750ms: ''flag=misc/myflag-1.png:250,misc/myflag-2.png:250,misc/myflag-3.png:250''&lt;br /&gt;
&lt;br /&gt;
* '''flag_icon''': a custom flag icon to indicate the side playing in the statusbar (a size of 24x16 is recommended). An automatic side-coloring is applied.&lt;br /&gt;
&lt;br /&gt;
* '''village_gold''': the amount of gold given to this side per village it controls per turn. Default specified in ''village_income'', '''[game_config]''' ([[GameConfigWML]]). '''Note:''' If you need village gold to be 0. Set the variable to -1.&lt;br /&gt;
&lt;br /&gt;
* '''recall_cost''': the amount of gold it costs to recall a unit. Default specified in ''recall_cost'', '''[game_config]''' ([[GameConfigWML]]). {{DevFeature1.9}}&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;
* '''disallow_observers''': prevents observers from seeing this side turn. (default: no)&lt;br /&gt;
&lt;br /&gt;
* '''scroll_to_leader''': optional. If 'no', scroll to the leader doesn't perform on the start of each turn. (default: yes)&lt;br /&gt;
&lt;br /&gt;
* '''[ai]''' if '''controller=ai''', gives parameters to the AI. See [[AiWML]].&lt;br /&gt;
&lt;br /&gt;
* '''[village]''' describes a village the side begins in control of.&lt;br /&gt;
** ''x'', ''y'' the location of the village. If the pair of coordinates is not a village or is duplicated in another [village] tag, behaviour is undefined. Recent game engine or wmllint should warn about these.&lt;br /&gt;
&lt;br /&gt;
* '''[unit]''' describes a unit which begins on the side. See [[SingleUnitWML]]. If the side has a recall list and the unit is not given a location, it will start on the recall list. Note that the ''side'' attribute under '''[unit]''' will be ignored, as the side will come from the ''side'' attribute of '''[side]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following keys are multiplayer only:&lt;br /&gt;
&lt;br /&gt;
* '''allow_player''': if false then this side will not be allowed to be modified and will be hidden during game creation.&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;
* '''faction''': this lock this side to this faction.&lt;br /&gt;
&lt;br /&gt;
* '''faction_from_recruit''': if true then this side will be locked to the faction that matches the recruits better.&lt;br /&gt;
&lt;br /&gt;
== 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>Kevg</name></author>
		
	</entry>
</feed>