https://wiki.wesnoth.org/api.php?action=feedcontributions&user=Suokko&feedformat=atomThe Battle for Wesnoth Wiki - User contributions [en]2024-03-29T11:24:06ZUser contributionsMediaWiki 1.31.16https://wiki.wesnoth.org/index.php?title=ReplayWML&diff=30602ReplayWML2009-05-25T10:50:56Z<p>Suokko: /* The [command] tag */</p>
<hr />
<div>{{WML Tags}}<br />
== The [command] tag ==<br />
<br />
The '''[command]''' tag is used to specify an action in a replay.<br />
<br />
The following tags are recognized:<br />
* '''[start]''': is used to initialize the replay so that generated random numbers can be saved.<br />
* '''[move]''': the player moved a unit.<br />
** '''[source]''': the location the unit moved to.<br />
** '''[destination]''': the location the unit moved from.<br />
* '''[recruit]''': the player recruited a unit.<br />
** '''value''': the index number of the recruited unit. (Index numbers start at 0 and include all recruitable units in alphabetical order.)<br />
** '''x''' and '''y''': the castle tile the unit is recruited on.<br />
* '''[recall]''': the player recalled a unit. Same keys as [recruit], except that the index is in order of level, followed by required XP to advance.<br />
* '''[attack]''': the player attacked.<br />
** '''weapon''': the index number of the weapon. Weapons are indexed by the unit designer.<br />
** '''[source]''': the location of the attacking unit.<br />
** '''[destination]''': the location of the defending unit.<br />
* '''[end_turn]''': the player ended his turn.<br />
* '''[init_side]''': new turn is starting for a side. This fires begin of turn events.<br />
* '''[fire_event]''': a specific event was raised<br />
** '''raise''': the name of the event<br />
** '''[source]''': the location of the event<br />
** '''[set_variable]''': set WML variable(s) before firing<br />
*** '''name''': the name of the variable<br />
*** '''value''': a string value (literal)<br />
* '''[choose]''': the player was given an option by the scenario.<br />
** '''value''': the index number of the option chosen. Index numbers are given by the scenario designer.<br />
* '''[random]''': if the action required a random number, this describes the random number that was generated. In 1.0.x, nested '''[random]''' tags are used and only one is allowed at this level. In 1.1.x, a '''[random]''' tag is used at this level for each value.<br />
** '''value''': list of generated random values. In 1.1.x only a single value can be used.<br />
** '''[results]''': used for '''[attack]''' commands. Describes the results of the battle.<br />
*** '''chance''': the percent chance that the attack had to hit.<br />
*** '''damage''': the amount of damage that the attack would do if it hits.<br />
*** '''dies''': whether the defender dies from the hit.<br />
*** '''hits''': whether the attack hits.<br />
** '''[random]''': additional lists of generated random values. '''[random]''' has the same format as the first '''[random]''' and describes the other numbers that were generated. .<br />
<br />
== See Also ==<br />
* [[SavefileWML]]<br />
* [[ReferenceWML]]<br />
<br />
<br />
[[Category: WML Reference]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=Template:WML_Tags&diff=30601Template:WML Tags2009-05-25T10:49:13Z<p>Suokko: added init side</p>
<hr />
<div>{| class="gallery" style="width:225px;float: right;border: 1px solid #B48648; color:#B48648; font-size: 7pt;margin-left;10px;"<br />
|-<br />
|<br />
<span style="float: right;"><small class="editlink noprint plainlinksneverexpand">[{{SERVER}}{{localurl:Template:WML Tags|action=edit}} edit ]</small></span><br />
'''WML Tags'''<br />
<br />
|-<br />
|''A:'' <br />
[[AbilitiesWML|abilities]],<br />
[[CampaignWML|about]],<br />
[[UnitTypeWML|advancefrom]],<br />
[[UnitTypeWML|advancement]],<br />
[[StatisticalScenarioWML|advances]],<br />
[[AiWML|ai]],<br />
[[DirectActionsWML|allow_recruit]],<br />
[[DirectActionsWML|allow_undo]],<br />
[[ConditionalActionsWML#Meta_Condition_Tags|and]],<br />
[[InterfaceActionsWML|animate_unit]],<br />
[[AnimationWML|animation]],<br />
[[VariablesWML|array]],<br />
[[UnitTypeWML|attack]],<br />
[[AnimationWML|attack_filter]], <br />
[[StatisticalScenarioWML|attacks]],<br />
[[AiWML|avoid]];<br />
|-<br />
|''B:'' <br />
[[UnitTypeWML|base_unit]], [[CampaignWML#The_.5Bbinary_path.5D_tag|binary_path]], [[HelpWML|bold]], [[EditorWML|brush]];<br />
|-<br />
|''C:'' <br />
[[CampaignWML#The_.5Bcampaign.5D_tag|campaign]],<br />
[[DirectActionsWML|capture_village]],<br />
[[ConditionalActionsWML#.5Bswitch.5D|case]],<br />
[[ReplayWML|choose]],<br />
[[InternalActionsWML|clear_variable]],<br />
[[InterfaceActionsWML|colour_adjust]],<br />
command([[InterfaceActionsWML|action]], [[ReplayWML|replay]]);<br />
|-<br />
|''D:'' <br />
[[AbilitiesWML|damage]],<br />
[[StatisticalScenarioWML|deaths]],<br />
[[InterfaceActionsWML|debug_message]],<br />
[[AnimationWML|defend]],<br />
[[StatisticalScenarioWML|defends]],<br />
[[UnitTypeWML|defense]],<br />
[[InterfaceActionsWML|delay]],<br />
[[ReplayWML|destination]],<br />
[[DirectActionsWML|disallow_recruit]],<br />
[[ConditionalActionsWML#.5Bwhile.5D|do]];<br />
|-<br />
|''E:'' <br />
[[EditorWML|editor_group]],<br />
[[EditorWML|editor_music]], <br />
[[EditorWML|editor_times]],<br />
[[EditorWML|editor_tool_hint]],<br />
[[EffectWML|effect]],<br />
[[ConditionalActionsWML#Conditional_Actions|else]],<br />
[[ReplayWML|end_turn]],<br />
[[DirectActionsWML|endlevel]],<br />
end_turn&nbsp;([[DirectActionsWML|action]], [[ReplayWML|replay]]),<br />
[[EraWML|era]],<br />
[[EventWML|event]],<br />
[[ThemeWML|expenses]];<br />
|-<br />
|''F:'' <br />
[[EventWML#.5Bfilter.5D|filter]],<br />
[[FilterWML|filter]],<br />
[[AnimationWML|filter_attack]],<br />
[[EventWML#.5Bfilter_attack.5D|filter_attack]],<br />
[[FilterWML|filter_location]],<br />
[[EventWML#.5Bfilter_second.5D|filter_second]],<br />
[[FilterWML|filter_second]],<br />
[[AnimationWML|filter_second_attack]],<br />
[[EventWML#.5Bfilter_second_attack.5D|filter_second_attack]],<br />
[[FilterWML|filter_vision]],<br />
[[StandardUnitFilter|filter_wml]],<br />
[[InternalActionsWML|fire_event]],<br />
[[HelpWML|format]],<br />
[[AnimationWML|frame]];<br />
|-<br />
|''G:'' <br />
[[GameConfigWML|game_config]],<br />
[[ScenarioWML|generator]],<br />
[[DirectActionsWML|gold]],<br />
[[ThemeWML|gold]];<br />
|-<br />
|''H:'' <br />
[[ConditionalActionsWML#Condition_Tags|have_location]],<br />
[[ConditionalActionsWML#Condition_Tags|have_unit]],<br />
[[HelpWML|header]],<br />
[[DirectActionsWML|heal_unit]],<br />
[[InterfaceActionsWML|hide_unit]];<br />
|-<br />
|''I:'' <br />
[[ConditionalActionsWML#.5Bif.5D|if]],<br />
[[TimeWML|illuminated_time]],<br />
[[TerrainGraphicsWML|image]],<br />
[[HelpWML|img]],<br />
[[ThemeWML|income]],<br />
[[ReplayWML|init_side]],<br />
[[InternalActionsWML|insert_tag]],<br />
[[HelpWML|italic]],<br />
[[InterfaceActionsWML|item]];<br />
|-<br />
|''J:''<br />
[[HelpWML|jump]],<br />
[[InternalActionsWML|join]];<br />
|-<br />
|''K:'' <br />
[[DirectActionsWML|kill]],<br />
[[StatisticalScenarioWML|killed]];<br />
|-<br />
|''L:'' <br />
[[LabelWML|label]] ([[InterfaceActionsWML|map]], [[ThemeWML|theme]]),<br />
[[LanguageWML|language]],<br />
[[AiWML|leader_goal]],<br />
[[LuaWML|lua]];<br />
|-<br />
|''M:'' <br />
[[ThemeWML|main_map]],<br />
[[ThemeWML|menu]],<br />
[[InterfaceActionsWML|message]],<br />
[[ThemeWML|mini_map]],<br />
[[AnimationWML|missile_frame]],<br />
[[SingleUnitWML|modifications]],<br />
[[DirectActionsWML|modify_side]],<br />
[[DirectActionsWML|modify_turns]],<br />
[[ReplayWML|move]],<br />
[[InterfaceActionsWML|move_unit_fake]],<br />
[[UnitTypeWML|movement costs]],<br />
[[UnitsWML|movetype]],<br />
[[ScenarioWML|multiplayer]],<br />
[[EraWML|multiplayer_side]],<br />
[[InterfaceActionsWML|music]];<br />
|-<br />
|''N:'' <br />
[[AnimationWML|neighbour_unit_filter]],<br />
[[ConditionalActionsWML#Meta_Condition_Tags|not]],<br />
[[FilterWML|not]],<br />
[[ThemeWML|num_units]];<br />
|-<br />
|''O:'' <br />
[[DirectActionsWML|object]],<br />
[[InterfaceActionsWML|objectives]],<br />
[[InterfaceActionsWML|objective]],<br />
[[ThemeWML|observers]],<br />
[[InterfaceActionsWML|open_help]],<br />
[[InterfaceActionsWML|option]],<br />
[[ConditionalActionsWML#Meta_Condition_Tags|or]];<br />
|-<br />
|''P:'' <br />
[[ThemeWML|panel]], [[IntroWML|part]], [[DirectActionsWML|place_shroud]], [[ThemeWML|position]],<br />
[[InterfaceActionsWML|print]], [[AiWML|protect_location]], [[AiWML|protect_unit]];<br />
|-<br />
|''R:'' <br />
[[UnitsWML|race]], [[ReplayWML|random]], recall&nbsp;([[DirectActionsWML|action]], <br />
[[ReplayWML|replay]]), [[StatisticalScenarioWML|recalls]],<br />
[[ReplayWML|recruit]], [[StatisticalScenarioWML|recruits]], [[InterfaceActionsWML|redraw]],<br />
[[HelpWML|ref]], [[DirectActionsWML|remove_shroud]], [[InterfaceActionsWML|remove_unit_overlay]],<br />
[[InterfaceActionsWML|removeitem]], [[InterfaceActionsWML|remove_sound_source]], <br />
[[ReplaceMapWML|replace_map]] [[SavefileWML|replay]], [[SavefileWML|replay_start]],<br />
[[UnitTypeWML|resistance]], [[ThemeWML|resolution]], [[ReplayWML|results]], [[InternalActionsWML|role]];<br />
|-<br />
|''S:'' <br />
[[SavefileWML|save]], [[ScenarioWML|scenario]],<br />
[[InterfaceActionsWML|scroll]], [[InterfaceActionsWML|scroll_to]],<br />
[[InterfaceActionsWML|scroll_to_unit]], [[AnimationWML|secondary_attack_filter]], [[AnimationWML|secondary_unit_filter]], [[HelpWML|section]],<br />
[[InterfaceActionsWML#.5Bset_menu_item.5D_.28SVN_trunk_only.29|set_menu_item]], [[DirectActionsWML|set_recruit]],<br />
[[InternalActionsWML|set_variable]], [[InternalActionsWML|set_variables]], [[InterfaceActionsWML|show_objectives]],<br />
[[SideWML|side]], [[ThemeWML|side_playing]], [[SavefileWML|snapshot]],<br />
[[InterfaceActionsWML|sound]], [[InterfaceActionsWML|sound_source]], [[ReplayWML|source]], [[EventWML|special_filter]], [[EventWML|special_filter_second]],<br />
[[InternalActionsWML|split]],<br />
[[StatisticalScenarioWML#The_.5Bstatistics.5D_tag|statistics]],<br />
[[ThemeWML|status]], [[DirectActionsWML|stone]], [[InternalActionsWML|store_gold]], [[InternalActionsWML|store_locations]],<br />
[[InternalActionsWML|store_map_dimensions]],<br />
[[InternalActionsWML|store_starting_location]], [[InternalActionsWML|store_side]], [[InternalActionsWML|store_time_of_day]], [[InternalActionsWML|store_unit]], [[InternalActionsWML|store_villages]] [[IntroWML|story]],<br />
[[ConditionalActionsWML#.5Bswitch.5D|switch]];<br />
|-<br />
|''T:'' <br />
[[AiWML|target]],<br />
[[StatisticalScenarioWML#The_.5Bteam.5D_tag|team]],<br />
[[DirectActionsWML|teleport]], [[AnimationWML|teleport_anim]],<br />
terrain([[TerrainWML|define]], [[DirectActionsWML|create]]), [[TerrainGraphicsWML|terrain_graphics]], [[TerrainMaskWML|terrain_mask]], [[ScenarioWML#Test_scenario|test]],<br />
[[WesCamp|textdomain]], [[InterfaceActionsWML|text_input]], [[ThemeWML|theme]], [[ConditionalActionsWML#.5Bif.5D|then]],<br />
[[TerrainGraphicsWML|tile]], [[TimeWML|time]], time_area&nbsp;([[DirectActionsWML|action]], [[ScenarioWML|scenario]]), <br />
[[ThemeWML|time_of_day]],<br />
[[HelpWML|topic]], [[HelpWML|toplevel]], [[SingleUnitWML|trait]], [[ThemeWML|turn]], [[ScenarioWML|tutorial]];<br />
|-<br />
|''U:'' <br />
[[InterfaceActionsWML|unhide_unit]], unit&nbsp;([[UnitTypeWML|define]], [[SingleUnitWML|create]]),<br />
[[ThemeWML|unit_abilities]], [[ThemeWML|unit_alignment]], [[ThemeWML|unit_description]], [[AnimationWML|unit_filter]], [[ThemeWML|unit_hp]], [[ThemeWML|unit_image]], [[ThemeWML|unit_level]], [[ThemeWML|unit_moves]],<br />
[[InterfaceActionsWML|unit_overlay]], [[ThemeWML|unit_profile]], [[ThemeWML|unit_status]],<br />
[[ThemeWML|unit_traits]], [[ThemeWML|unit_type]], [[ThemeWML|unit_weapons]], [[ThemeWML|unit_xp]],<br />
[[UnitsWML|units]], [[DirectActionsWML|unstone]], [[DirectActionsWML|unstore_unit]], [[ThemeWML|upkeep]];<br />
|-<br />
| ''V:'' <br />
[[ConditionalActionsWML#Condition_Tags|variable]],<br />
[[VariablesWML|variables]],<br />
[[SideWML|village]],<br />
[[ThemeWML|villages]];<br />
|-<br />
| ''W:'' <br />
[[ConditionalActionsWML#.5Bwhile.5D|while]],<br />
[[InterfaceActionsWML|wml_message]];<br />
|}</div>Suokkohttps://wiki.wesnoth.org/index.php?title=EventWML&diff=30600EventWML2009-05-25T09:23:50Z<p>Suokko: /* A Trap for the Unwary */</p>
<hr />
<div>{{WML Tags}}<br />
== The [event] Tag ==<br />
<br />
This tag is a subtag of the [scenario], [unit] and [era] tags which is used to describe a set of actions which trigger at a certain point in a scenario. When used in a [scenario] tag (also includes [multiplayer], [tutorial] and [test]), the event only occurs in that scenario. When used in a [unit] type definition, the event will occur in all scenarios in which a unit of that type appears in. When used in an [era], the event will occur in any scenario which is played using that era.<br />
<br />
This tag has keys and child tags that control when and if the event actions will be triggered. Most important of these is the '''name''' key. Without it, no error will be raised but the event will never fire. Therefore, from a practical standpoint, it can be considered mandatory. All of the others can be used or not and the event actions will fire either way.<br />
<br />
=== The 'name' Key (Mandatory) ===<br />
<br />
Usage:<br />
name=<value><br />
<br />
This is '''not''' like a normal 'name' key. ''It is a basic description of when the event will trigger.'' It also has a very large number of predefined values, one of which must be used for the key to be valid.<br />
<br />
'''Lexicon side note:''' ''It is not uncommon to refer to these values as the 'trigger' for an event and, furthermore, to call an event by its 'trigger' name. For example, in an event containing '''name=moveto''', a person might refer to the event as a ''''moveto''' event' and/or refer to the ''''moveto''' trigger' in the event or even talk about the 'event trigger' when referring to the '''moveto''' value of the 'name' key in that event. Some or all of this usage can, in fact, be found throughout this page.''<br />
<br />
The '''name''' key can accept a list of comma separated values describing when the event will be triggered.* These values may be either predefined event types or custom event names not matching any predefined type.<br />
<br />
For example:<br />
<br />
name=attacker_misses,defender_misses<br />
<br />
''* Note that unless you use [[#first_time_only|first_time_only=no]], the event will fire only once, '''not''' once for each listed type.''<br />
<br />
==== Predefined 'name' Key Values ====<br />
<br />
All predefined event types are listed here along with a description of when this value will cause the event to be triggered. Any value ''not'' listed here is a custom event name which can be triggered only by a '''[fire_event]''' tag somewhere else.<br />
<br />
; preload {{DevFeature}}<br />
: Triggers before a scenario 'prestarts' and when loading a savegame -- before anything is shown on the screen at all. Can be used to set up the [[LuaWML|Lua]] environment: loading libraries, defining helper functions, etc.<br />'''Note:''' Unlike prestart and start, the preload event '''must be able to fire more than once!''' This is because it is triggered each time a savegame is loaded in addition to the initial time when it loads before the scenario 'prestart'. This means that it is effectively ''mandatory'' to have the [[#first_time_only|first_time_only=no]] key value in a preload event.<br />
<br />
; prestart<br />
: Triggers before a scenario 'starts' -- before anything is shown on the screen at all. Can be used to set up things like village ownership. For things displayed on-screen such as character dialog, use '''start''' instead.<br />'''Note:''' ''This value makes the [[#first_time_only|first_time_only]] key irrelevant since, by definition, it can only fire once.''<br />
<br />
; start<br />
: Triggers after the map is shown but before the scenario begins -- before players can 'do' anything.<br />'''Note:''' ''This value makes the [[#first_time_only|first_time_only]] key irrelevant since, by definition, it can only fire once.''<br />
<br />
; new turn<br />
: Triggers whenever the last player ends their turn. See also [[#first_time_only|first_time_only=no]]. When the last player ends their turn, before any events of this type trigger, the value of the WML variable '''turn_number''' is set to the number of the turn that is beginning.<br />
<br />
; side turn<br />
: Triggers when a side is about to start its turn. Before events of this type trigger, the value of the WML variable '''side_number''' is set to the number of the side of the player about to take their turn. This is before any healing takes place for that side, before calculating income, and before restoring unit movement and status.<br />
<br />
; ai turn<br />
: Triggered just before the AI is invoked for a side. This is called after ''side turn'', and thus the WML variable '''side_number''' still holds the number of this side.<br />
<br />
; turn refresh<br />
: Like '''side turn''', triggers just before a side is taking control but '''after''' healing, calculating income, and restoring unit movement and status.<br />
<br />
; turn ''X''<br />
: For ''X'' equals a number greater than 1, this event triggers at the start of turn ''X''. The value of ''X'' cannot be 1 but, if that effect is needed, use '''name=new turn''' and '''first_time_only=yes''' to achieve the equivalent of what '''turn 1''' would do.<br />
<br />
; time over<br />
: Triggers on turn ''turns''. (''turns'' is specified in [scenario])<br />
<br />
; enemies defeated<br />
: Triggers when all units with '''canrecruit=yes''' (that is, all leaders) not allied with side 1 are killed.<br />
<br />
; victory<br />
: In this scenario, any tag of the form '''[endlevel] result=victory [/endlevel]''' will be automatically preceded by all actions in this tag. It helps debugging if the victory event allows you to safely advance to any of the possible next maps after using the ":n" command. Scenarios where key units are picked up before the victory, or where some action chosen earlier determines which map to advance to, make it hard to quickly test scenarios in a campaign. (See also: [endlevel], [[DirectActionsWML]])<br />
<br />
; defeat<br />
: In this scenario, any tag of the form '''[endlevel] result=defeat [/endlevel]''' will be automatically preceded by all actions in this tag. (See also [endlevel], [[DirectActionsWML]])<br />
<br />
<br />
Filters can be applied to the following event triggers (see [[FilterWML]]; see also below). The actions specified in the event tag will be executed only if the filter returns true. <br />
These event triggers are all actions by units ('''moveto''', '''attack''') or things that happen to units ('''recruit''', '''advance'''). When one of these events is triggered, the position of the active unit (referred to as the '''primary unit''') is stored in the variables '''x1''' and '''y1''' and the position of any unit that primary unit does something to is stored in the variables '''x2''' and '''y2''' (this unit is referred to as the '''secondary unit''' below). '' These units are also automatically stored in the variables 'unit' and 'second_unit' as if they had been stored using the '''[store_unit]''' tag. see [[SingleUnitWML]]<br />
<br />
; moveto<br />
: Triggers after the primary unit moves. Typically this is used when the primary unit gets to a particular location and a filter for the location of the primary unit is included; remember that this is the location that the primary unit lands on, not the location it started on or any location it travels on.<br />''An '''[allow_undo]''' tag anywhere within a moveto event will cancel any lack of undo functionality the event would have caused. Note that undo functionality will only move the unit back to its former location; it will not other changes to the game caused by the event. Thus it is up to the scenario designer to use this tag correctly.'' {{DevFeature}} $x2 and $y2 refer to the hex the unit came from.<br />
<br />
; sighted<br />
: Triggers when the primary unit becomes visible to the secondary unit in particular after not being visible to the secondary unit's side (so if the secondary unit's side doesn't have shroud or fog, the event never triggers). This happens both when the primary unit moves into view during its turn, and when the secondary unit moves to a location where it can see the primary unit. (This editor hasn't tested whether the event triggers multiple times if the primary unit moves into view of multiple units at once, or if not, which one gets chosen to be the secondary unit here.) (Note: it appears that when a sighted event is triggered because an enemy unit moves into your field of view, the game engine cannot determine which unit (on your side) sees the unit that moved, and so it fires a ''name=sighted'' event without setting ''$second_unit''. This means that, for example, using ''speaker=second_unit'' inside a message tag may fail.)<br />
<br />
; attack<br />
: Triggers when the primary unit attacks the secondary unit.<br />
<br />
; attack_end<br />
: Similar to '''attack''', but is triggered ''after'' the fight instead of before. Note that if either unit is killed during the fight, this event triggers before any '''die''' events.<br />
<br />
; attacker_hits<br />
: Triggers when the the primary unit (the attacker) hits the secondary unit (the defender). The value of the WML variable '''damage_inflicted''' is set to the number of hitpoints inflicted by the attacker.<br />
<br />
; attacker_misses<br />
: Same as ''attacker_hits'', but is triggered when the attacker misses.<br />
<br />
; defender_hits<br />
: Triggers when the primary unit (the attacker) is hit in retaliation by the secondary unit (the defender). The value of the WML variable '''damage_inflicted''' is set to the number of hitpoints inflicted by the defender.<br />
<br />
; defender_misses<br />
: Same as ''defender_hits'', but is triggered when the defender misses.<br />
<br />
; stone<br />
: Triggers when the primary unit is hit by an attack with the 'stones' ability (See ''stones'', [[AbilitiesWML]]) by the secondary unit (the unit with the 'stones' ability).<br />
<br />
; last breath<br />
: Triggers when the primary unit is killed by the secondary unit, but before the death animation is triggered.<br />
<br />
; die<br />
: Triggers when the primary unit is killed by the secondary unit.<br />
<br />
; capture<br />
: Triggers when the primary unit captures a village. The village may have been previously neutral, or previously owned by another side; merely moving into your own villages does not constitute a capture.<br />
<br />
; recruit<br />
: Triggers when the primary unit is recruited. (That is, when a unit is recruited it will trigger this event and this event's filter will filter that unit.).<br />
<br />
; prerecruit<br />
: Triggers when the primary unit is recruited but before it is displayed.<br />
<br />
; recall<br />
: Triggers after a unit is recalled.<br />
<br />
; prerecall<br />
: Triggers when a unit is recalled but before it is displayed.<br />
<br />
; advance<br />
: Triggers just before the primary unit is going to advance to another unit.<br />
<br />
; post_advance<br />
: Triggers just after the primary unit has advanced to another unit.<br />
<br />
; select<br />
: Triggers when the primary unit is selected. ''Note: in networked multiplayer, these events are only executed by the client on which the event is triggered, leading to out of sync errors if you modify the game state in the event.''<br />
<br />
; menu item X<br />
: Triggers when a WML menu item with id=''X'' is selected. ''Note: if the menu item has a [command], this event may be executed before or after the command; there is no guarantee.''<br />
<br />
=== Custom events.<br />
<br />
An event with a custom name may be invoked using the [[InternalActionsWML#.5Bfire_event.5D|[fire_event]]] tag. Normally you'll use such custom events as named subroutines to be called by events with predefined types. One common case of this, for example, is that more than one '''sighted''' events might fire the same custom event that changes the scenario objectives.<br />
<br />
=== Optional Keys and Tags ===<br />
<br />
These keys and tags are more complex ways to filter when an event should trigger:<br />
<br />
==== first_time_only ====<br />
: Whether the event should be removed from the scenario after it is triggered. There are two possible values for this key:<br />
: ''first_time_only=yes''<br />
:: Default behavior if key is omitted. The event will trigger the first time it can and never again.<br />
: ''first_time_only=no''<br />
:: The event will every time the criteria are met instead of only the first time.<br />
<br />
==== [filter] ====<br />
: The event will only trigger if the primary unit matches this filter.<br />
:* [[StandardUnitFilter]]: selection criteria<br />
<br />
==== [filter_second] ====<br />
: Like [filter], but for the secondary unit.<br />
:* [[StandardUnitFilter]]: selection criteria<br />
<br />
==== [filter_attack] ====<br />
: Can be used to set additional filtering criteria for the primary unit and the secondary unit that are not generally available in a standard unit filter. Can be used in events ''attack'', ''attacker_hits'', ''attacker_misses'', ''defender_hits'', ''defender_misses'' and ''attack_end''.<br />
:* '''name''': the name of the weapon used.<br />
:* '''range''': the range of the weapon used. <br />
<br />
==== [filter_second_attack] ====<br />
: Like [filter_attack], but for the secondary unit.<br />
:* '''name''': the name of the weapon used.<br />
:* '''range''': the range of the weapon used.<br />
<br />
==== [event] ====<br />
: A special case 'action', the [event] tag may be used to create a [[#Nested Events|nested event]].<br />
<br />
==== delayed_variable_substitution ====<br />
: This key is only relevant inside of a [[#Delayed Variable Substitution|nested event]] and controls when variable substitution will occur in those special case actions.<br />
<br />
=== Actions triggered by [event] ===<br />
<br />
After the trigger conditions have been met, all action tags within the [event] tag are executed in the order they are written in.<br />
<br />
There are 3 main types of actions:<br />
* direct actions ([[DirectActionsWML]]) which have a direct effect on gameplay<br />
* display actions ([[InterfaceActionsWML]]) which show something to the user<br />
* internal actions ([[InternalActionsWML]]) which are used by WML internally<br />
<br />
Several actions use standard filters to find out which units<br />
to execute the command on. These are denoted by the phrases<br />
"standard unit filter" and "standard location filter".<br />
<br />
=== Nested Events ===<br />
<br />
There is one special type of action: event creation. By placing an '''[event]''' tag inside another '''[event]''' tag, the nested event is spawned (created) when the parent (outer) event is encountered (when executing the contents of the parent event).<br />
<br />
([[#Nested Event Example|See Examples]])<br />
<br />
==== Delayed Variable Substitution ====<br />
<br />
Variable substitution for a nested event can happen either when it is spawned by the parent event or when it is triggered itself. This is controlled with the key '''delayed_variable_substitution''' which is used in the nested event.<br />
<br />
If this key is set to ''yes'', the variables in the nested event will contain values from the turn in which the ''nested'' event was triggered. ''This is the default behavior if the key is omitted.'' If set to ''no'', the variables in the nested event are set at the time the ''parent'' event is triggered.<br />
<br />
This behavior can be fine tuned with a special syntax when referencing variables. Instead of the normal '''$variable''' syntax, use '''$|variable''' to cause a variable to contain values relevant to the turn in which the nested event was triggered even when '''delayed_variable_substitution''' is set to ''no''. In this way you can have a mix of variables relevant to the parent and nested event trigger times.<br />
<br />
([[#Delayed Variable Substitution Example|See Examples]])<br />
<br />
== Multiplayer safety ==<br />
<br />
It is only possible to use [message] with input and random numbers in events that are synchronous. This limitation is caused because that WML requires data from remote hosts which is only available after network synchronisation.<br />
<br />
List of event that are synchronous:<br />
* moveto<br />
* sighted <br />
* attack<br />
* attack_end <br />
* attacker_hits <br />
* attacker_misses <br />
* defender_hits<br />
* defender_misses <br />
* stone<br />
* last breath <br />
* die<br />
* capture <br />
* recruit<br />
* prerecruit <br />
* recall <br />
* prerecall <br />
* advance <br />
* post_advance <br />
* events fired from WML event handler that is synchronous<br />
* new turn {{DevFeature}}<br />
* side turn {{DevFeature}}<br />
* turn X {{DevFeature}}<br />
* turn refresh {{DevFeature}}<br />
<br />
There is also event that are synchronous if fired by engine but they can be fired by wml tags too from non-synchronous event. So when you are using them you must be extra careful. For example [unsotre_unit] unit may trigger unit advancement that will fire ''advance'' and ''post advance'' events.<br />
<br />
== A Trap for the Unwary ==<br />
<br />
It is perfectly possible (and, in fact, useful) to have multiple events with the same predefined name and thus the same trigger condition. However, it is not defined what order such events will fire in, so you need to code so the order <br />
will not matter.<br />
<br />
Because of the above, you need to beware of using macros to generate events. If you include a macro expanding to an event definition twice, the event will be executed twice (not once) each time the trigger condition fires. Consider this code:<br />
<br />
#define DOUBLE<br />
[event]<br />
name=multiply_by_2<br />
{VARIABLE_OP 2_becomes_4 multiply 2}<br />
[/event]<br />
#enddef<br />
<br />
{DOUBLE}<br />
{DOUBLE}<br />
<br />
{VARIABLE 2_becomes_4 2}<br />
<br />
[fire_event]<br />
name=multiply_by_2<br />
[/fire_event]<br />
<br />
{DEBUG_MSG "$2_becomes_4 should be 4"}<br />
<br />
After it executes, the debug message will reveal that the variable has been set to 8, not 4.<br />
<br />
== Miscellaneous Notes and Examples ==<br />
<br />
=== Primary/Secondary Unit Speaker Example ===<br />
<br />
In events, the primary unit can be referred to as '''unit''' and the secondary unit can be referred to as '''second_unit''' in [message] tags using the '''speaker''' key. For example:<br />
<br />
[event]<br />
name=die<br />
[message]<br />
speaker='''second_unit'''<br />
message= _ "Hahaha! I finally killed you!"<br />
[/message]<br />
<br />
[message]<br />
speaker='''unit'''<br />
message= _ "It's not over yet! I'll come back to haunt you!"<br />
[/message]<br />
[/event]<br />
<br />
=== Nested Event Example ===<br />
<br />
An event is created for a portal that opens on turn 10. The parent (or 'outer') event executes on turn 10 at which point the nested moveto event is created. This nested event executes when a player steps on a certain spot.<br />
<br />
[event]<br />
name=turn 10<br />
<br />
[event]<br />
name=moveto<br />
<br />
[filter]<br />
x,y=5,8<br />
[/filter]<br />
<br />
# moving to 5,8 will trigger this event only on turn 10 and after<br />
[/event]<br />
[/event]<br />
<br />
An equivalent way of doing this would be to create a single moveto event with an '''[if]''' statement to check for turn number but using nested '''[event]''' tags is a convenient shortcut to accomplish this task without resorting to '''[if]''' statements.<br />
<br />
=== Delayed Variable Substitution Example ===<br />
<br />
This code will display the turn on which the nested ''moveto'' event happens.<br />
<br />
[event]<br />
name=turn 10<br />
<br />
[event]<br />
name=moveto<br />
delayed_variable_substitution=yes<br />
<br />
[filter]<br />
x,y=5,8<br />
[/filter]<br />
<br />
{DEBUG_MSG "Turn $turn_number"} <br />
[/event]<br />
[/event]<br />
<br />
Since this is the default behavior for the '''delayed_variable_substitution''' key, the following example is identical.<br />
<br />
[event]<br />
name=turn 10<br />
<br />
[event]<br />
name=moveto<br />
<br />
[filter]<br />
x,y=5,8<br />
[/filter]<br />
<br />
{DEBUG_MSG "Turn $turn_number"} <br />
[/event]<br />
[/event]<br />
<br />
This code will always display "Turn 10" when the nested ''moveto'' event happens. This is because the variable substitution is done when the parent event is triggered and spawns the nested event, ''not'' when the nested event is triggered.<br />
<br />
[event]<br />
name=turn 10<br />
<br />
[event]<br />
name=moveto<br />
delayed_variable_substitution=no<br />
<br />
[filter]<br />
x,y=5,8<br />
[/filter]<br />
<br />
{DEBUG_MSG "Turn $turn_number"} <br />
[/event]<br />
[/event]<br />
<br />
Finally, this example is identical to the first two, in that it will display the turn on which the nested ''moveto'' event happens despite the fact that the '''delayed_variable_substitution''' key is set to ''no''. This is because the special '''$|variable''' syntax is used.<br />
<br />
[event]<br />
name=turn 10<br />
<br />
[event]<br />
name=moveto<br />
delayed_variable_substitution=no<br />
<br />
[filter]<br />
x,y=5,8<br />
[/filter]<br />
<br />
{DEBUG_MSG "Turn $|turn_number"} <br />
[/event]<br />
[/event]<br />
<br />
== See Also ==<br />
<br />
* [[DirectActionsWML]]<br />
* [[InternalActionsWML]]<br />
* [[InterfaceActionsWML]]<br />
* [[FilterWML]]<br />
* [[ReferenceWML]]<br />
<br />
<br />
[[Category: WML Reference]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=NotSoEasyCoding&diff=26741NotSoEasyCoding2008-09-17T22:05:52Z<p>Suokko: Ai improvements to default AI</p>
<hr />
<div>== Foreword ==<br />
This page shows projects which are considered a good idea by the developers but which have nobody working on them so far. If you think you've got the required skill for a task go on, implement it and you've got a high chance that it'll be accepted. The remaining barrier will only be that it's done well. :-)<br />
<br />
If you are such a person, you should feel free to edit this page.<br />
<br />
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.<br />
<br />
Anybody should feel free to add "clues" to any tasks, that is entry points, traps to avoid, person to contact to discuss and so on.<br />
<br />
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 "free" it back (that is if you're not working on it. If you have problems implementing it, just tell us....)<br />
<br />
<br />
<br />
== Game Engine ==<br />
=== Showing "Advantage" In-Game/End-Game ===<br />
<br />
As described here: [http://www.wesnoth.org/forum/viewtopic.php?p=169416]<br />
<br />
=== Multiplayer and RNG Cheating ===<br />
<br />
As described here: [http://www.wesnoth.org/forum/viewtopic.php?t=9500]<br />
<br />
=== A more generalised teleporting ability ===<br />
<br />
see [http://www.wesnoth.org/forum/viewtopic.php?p=209117#209117]<br />
<br />
=== A change to allied healing ===<br />
<br />
As proposed here: [http://www.wesnoth.org/forum/viewtopic.php?f=15&t=15880]<br />
<br />
== Improvements to AI ==<br />
=== Village grabbing ===<br />
<br />
Improve AI village grabbing algorithm to assign villages that are farther than one turn from current unit location.<br />
Idea how to do would be value villages so that it can filter out villages that belongs to enemies/allies sides. Those villages are stored in memory and used in 2nd pass that determines how AI should dispatch units to get villages if it should at all in this turn. This should be close to optimal solution with currently available units but performance limits should be taken into account.<br />
Good solution would be that village grabbing value could be calculated with attack ratings and if some village has high value it would make unit go for that village instead <br />
<br />
This should help AI in begin of scenario. Currently AI might not grab all of villages that belong to its area which results quite large incoming loses.<br />
In later game enemy might have large number of units in one part of map so village grabbing should be avoided in that are. Single unit would be easy pray for enemy so moving there would result just to loses.<br />
<br />
=== leadership ===<br />
<br />
Add new AI phase to handle leadership units. AI should be able to use leadership in multiple locations before using that unit in attack.<br />
<br />
== Data Structures ==<br />
=== Config Writer ===<br />
<br />
The speed of saving Wesnoth games is dominated by the time to marshall all the config structures. This involves deep copying them many times as each subsystem returns its config bundle; far better would be to have a "config_writer" class which is handed to each subsystem which iterates through its structures and does the writing (to file or network) directly to the config_writer instance.<br />
<br />
Stop by #wesnoth-dev on freenode irc if you want to help with this, or post in the Coder's Corner.<br />
<br />
=== Config memory optimisation ===<br />
<br />
Right now, most of the memory used by wesnoth when using '''low_memory''' configuration flag is used by the config object trees. It would be possible to drop unused "branches" of that trees by using boost smart pointers in the config structure<br />
<br />
come and discuss that change on #wesnoth-dev. Sirp is the one that knows the most about that...<br />
<br />
=== Improvements to Unit Map ===<br />
<br />
As described here: [http://www.wesnoth.org/forum/viewtopic.php?p=236063#236063] (cjhopman has submitted a patch on that already)<br />
<br />
== See Also ==<br />
<br />
=== Frequently Proposed Good Ideas ===<br />
<br />
Check the [http://www.wesnoth.org/forum/viewtopic.php?f=12&t=9054&start=0&st=0&sk=t&sd=a B.W.H. list] in the Ideas Forum. Be aware that some entries there are old and have already been implemented, so you will need to investigate that before beginning work.<br />
<br />
[[Category:Development]]<br />
[[Category:Future]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=Download&diff=26740Download2008-09-17T18:14:02Z<p>Suokko: /* (Open)Solaris */ fix version number</p>
<hr />
<div>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.<br />
<br />
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]].<br />
<br />
__NOTOC__<br />
Jump to: [[Download#Stable_.281.4_branch.29|Stable Branch]] | [[Download#Development_.281.5_branch.29|Development Branch]]<br />
<br />
== Stable (1.4 branch) ==<br />
<br />
The stable files are meant to be used as a stable and rather balanced version of the game. Each version of the 1.4 branch is compatible to each other. This will not happen in the development branch.<br />
<br />
Version 1.4 is the latest stable version, updated with several important bugfixes. This version is recommended for most players since the 1.4 online multiplayer community is very large and user-made campaign server has a robust content selection.<br />
<br />
==== Source code ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.5.tar.bz2?download Current Version] (1.4.5, 146.9 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.4.tar.bz2?download Previous Version] (1.4.4, 145.4 MB)<br />
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code<br />
<br />
==== MS Windows ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.5-r3-windows.exe?download Current version] (1.4.5c, 135.4 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.4-win32.exe?download Previous version] (1.4.4, 132.8 MB)<br />
<br />
==== Mac OS X ====<br />
* [http://downloads.sourceforge.net/wesnoth/Battle_for_Wesnoth_1.4.5_UB.dmg?download Current Version (Full)] (1.4.5, Universal, 173.2 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/Battle_for_Wesnoth_1.4.4b_UB.dmg?download Previous Version (Full)] (1.4.4b, Universal, 172.2 MB)<br />
<br />
==== GNU/Linux ====<br />
* 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.<br />
<br />
==== (Open)Solaris ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-solaris-i386-1.4.5.pkg.bz2?download Current Version] (1.4.5, 145.6 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.4.solaris.i386.pkg.bz2?download Previous Version] (1.4.4, 129.1 MB)<br />
<br />
==== OS/2 & eComStation ====<br />
* The current version (1.4.5) is not available yet.<br />
* [http://download.smedley.info/wesnoth-1.4.2-os2-20080515.zip Older version] (1.4.2, 200 MB)<br />
<br />
==== Miscellaneous ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.4.tar.bz2.md5?download md5sum for current source code]<br />
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Source_code Xdelta for the source code]<br />
* [http://sourceforge.net/project/showfiles.php?group_id=89495 SourceForge page for current and all previous versions]<br />
<br />
== Development (1.5 branch) ==<br />
<br />
Version 1.5.x is the latest development version, boasting updated graphics and new exciting features. However, there may be occasional bugs or performance problems in the development versions since heavy changes are taking place all the time. For balanced and stable gaming, it is recommended you use the latest version of the 1.4.x branch. This version is recommended for coders and campaign developers that want to use all of the latest possibilities, as well as those who want to preview the future of Wesnoth.<br />
<br />
==== Source code ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.4.tar.bz2?download Current Version] (1.5.4, 157.4 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.3.tar.bz2?download Previous Version] (1.5.3, 149.6 MB)<br />
<br />
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code<br />
<br />
==== MS Windows ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.4-win32.exe?download Current Version] (1.5.4, 145.8 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.3-windows.exe?download Previous Version] (1.5.3, 156.9 MB)<br />
<br />
==== Mac OS X ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://downloads.sourceforge.net/wesnoth/Battle_for_Wesnoth_1.5.3_UB.dmg?download Previous Version] (1.5.3, Universal, 175.4 MB).<br />
<br />
==== GNU/Linux ====<br />
* 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.<br />
<br />
==== (Open)Solaris ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.1.solaris.i386.pkg.bz2?download Older Version] (1.5.1, 130.4 MB)<br />
<br />
==== AmigaOS4 ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://os4depot.net/index.php?function=showfile&file=game/strategy/wesnoth-devel.lha Older Version] (1.3.12, 105.0 MB)<br />
<br />
==== OS/2 & eComStation ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://download.smedley.info/wesnoth-1.1.8-os2.zip Older Version] (1.1.8, 66 MB)<br />
<br />
==== Syllable ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://www.syllable-software.info/download.php?view.32 Older Version] (1.3.8, 82.2 MB)<br />
<br />
==== Miscellaneous ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.3.tar.bz2.md5?download md5sum for current source code]<br />
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Source_code Xdelta for the source code]<br />
* [http://sourceforge.net/project/showfiles.php?group_id=89495 SourceForge page for current and all previous versions]<br />
* [http://downloads.sourceforge.net/wesnoth/Mac_Compile_Stuff_1.5.3.tar.bz2? MacCompileStuff for 1.5.3]<br />
<br />
== License ==<br />
''Main article: [[Wesnoth:Copyrights]]<br />
<br />
This program is free software; you can redistribute it and/or modify it under the terms of the [http://www.fsf.org/copyleft/gpl.html GNU General Public License version 2], as published by the [http://www.fsf.org/ Free Software Foundation].<br />
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.<br />
<br />
== See also ==<br />
* [http://changelog.wesnoth.org Changelog]<br />
* [http://www.diggygames.com Free Games]<br />
* [[WesnothBinaries| More binaries]]<br />
* [[WesnothSVN]] - bleeding edge version from SVN<br />
<br />
[[Category:Building and Installing]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=Download&diff=26739Download2008-09-17T17:51:34Z<p>Suokko: /* MS Windows */</p>
<hr />
<div>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.<br />
<br />
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]].<br />
<br />
__NOTOC__<br />
Jump to: [[Download#Stable_.281.4_branch.29|Stable Branch]] | [[Download#Development_.281.5_branch.29|Development Branch]]<br />
<br />
== Stable (1.4 branch) ==<br />
<br />
The stable files are meant to be used as a stable and rather balanced version of the game. Each version of the 1.4 branch is compatible to each other. This will not happen in the development branch.<br />
<br />
Version 1.4 is the latest stable version, updated with several important bugfixes. This version is recommended for most players since the 1.4 online multiplayer community is very large and user-made campaign server has a robust content selection.<br />
<br />
==== Source code ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.5.tar.bz2?download Current Version] (1.4.5, 146.9 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.4.tar.bz2?download Previous Version] (1.4.4, 145.4 MB)<br />
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code<br />
<br />
==== MS Windows ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.5-r3-windows.exe?download Current version] (1.4.5c, 135.4 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.4-win32.exe?download Previous version] (1.4.4, 132.8 MB)<br />
<br />
==== Mac OS X ====<br />
* [http://downloads.sourceforge.net/wesnoth/Battle_for_Wesnoth_1.4.5_UB.dmg?download Current Version (Full)] (1.4.5, Universal, 173.2 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/Battle_for_Wesnoth_1.4.4b_UB.dmg?download Previous Version (Full)] (1.4.4b, Universal, 172.2 MB)<br />
<br />
==== GNU/Linux ====<br />
* 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.<br />
<br />
==== (Open)Solaris ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-solaris-i386-1.4.5.pkg.bz2?download Current Version] (1.4.4, 145.6 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.4.solaris.i386.pkg.bz2?download Previous Version] (1.4.4, 129.1 MB)<br />
<br />
==== OS/2 & eComStation ====<br />
* The current version (1.4.5) is not available yet.<br />
* [http://download.smedley.info/wesnoth-1.4.2-os2-20080515.zip Older version] (1.4.2, 200 MB)<br />
<br />
==== Miscellaneous ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.4.tar.bz2.md5?download md5sum for current source code]<br />
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Source_code Xdelta for the source code]<br />
* [http://sourceforge.net/project/showfiles.php?group_id=89495 SourceForge page for current and all previous versions]<br />
<br />
== Development (1.5 branch) ==<br />
<br />
Version 1.5.x is the latest development version, boasting updated graphics and new exciting features. However, there may be occasional bugs or performance problems in the development versions since heavy changes are taking place all the time. For balanced and stable gaming, it is recommended you use the latest version of the 1.4.x branch. This version is recommended for coders and campaign developers that want to use all of the latest possibilities, as well as those who want to preview the future of Wesnoth.<br />
<br />
==== Source code ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.4.tar.bz2?download Current Version] (1.5.4, 157.4 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.3.tar.bz2?download Previous Version] (1.5.3, 149.6 MB)<br />
<br />
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code<br />
<br />
==== MS Windows ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.4-win32.exe?download Current Version] (1.5.4, 145.8 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.3-windows.exe?download Previous Version] (1.5.3, 156.9 MB)<br />
<br />
==== Mac OS X ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://downloads.sourceforge.net/wesnoth/Battle_for_Wesnoth_1.5.3_UB.dmg?download Previous Version] (1.5.3, Universal, 175.4 MB).<br />
<br />
==== GNU/Linux ====<br />
* 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.<br />
<br />
==== (Open)Solaris ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.1.solaris.i386.pkg.bz2?download Older Version] (1.5.1, 130.4 MB)<br />
<br />
==== AmigaOS4 ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://os4depot.net/index.php?function=showfile&file=game/strategy/wesnoth-devel.lha Older Version] (1.3.12, 105.0 MB)<br />
<br />
==== OS/2 & eComStation ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://download.smedley.info/wesnoth-1.1.8-os2.zip Older Version] (1.1.8, 66 MB)<br />
<br />
==== Syllable ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://www.syllable-software.info/download.php?view.32 Older Version] (1.3.8, 82.2 MB)<br />
<br />
==== Miscellaneous ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.3.tar.bz2.md5?download md5sum for current source code]<br />
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Source_code Xdelta for the source code]<br />
* [http://sourceforge.net/project/showfiles.php?group_id=89495 SourceForge page for current and all previous versions]<br />
* [http://downloads.sourceforge.net/wesnoth/Mac_Compile_Stuff_1.5.3.tar.bz2? MacCompileStuff for 1.5.3]<br />
<br />
== License ==<br />
''Main article: [[Wesnoth:Copyrights]]<br />
<br />
This program is free software; you can redistribute it and/or modify it under the terms of the [http://www.fsf.org/copyleft/gpl.html GNU General Public License version 2], as published by the [http://www.fsf.org/ Free Software Foundation].<br />
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.<br />
<br />
== See also ==<br />
* [http://changelog.wesnoth.org Changelog]<br />
* [http://www.diggygames.com Free Games]<br />
* [[WesnothBinaries| More binaries]]<br />
* [[WesnothSVN]] - bleeding edge version from SVN<br />
<br />
[[Category:Building and Installing]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=Download&diff=26738Download2008-09-17T17:51:05Z<p>Suokko: /* MS Windows */</p>
<hr />
<div>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.<br />
<br />
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]].<br />
<br />
__NOTOC__<br />
Jump to: [[Download#Stable_.281.4_branch.29|Stable Branch]] | [[Download#Development_.281.5_branch.29|Development Branch]]<br />
<br />
== Stable (1.4 branch) ==<br />
<br />
The stable files are meant to be used as a stable and rather balanced version of the game. Each version of the 1.4 branch is compatible to each other. This will not happen in the development branch.<br />
<br />
Version 1.4 is the latest stable version, updated with several important bugfixes. This version is recommended for most players since the 1.4 online multiplayer community is very large and user-made campaign server has a robust content selection.<br />
<br />
==== Source code ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.5.tar.bz2?download Current Version] (1.4.5, 146.9 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.4.tar.bz2?download Previous Version] (1.4.4, 145.4 MB)<br />
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code<br />
<br />
==== MS Windows ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.5-r3-windows.exe?download Current version] (1.4.5C, 135.4 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.4-win32.exe?download Previous version] (1.4.4, 132.8 MB)<br />
<br />
==== Mac OS X ====<br />
* [http://downloads.sourceforge.net/wesnoth/Battle_for_Wesnoth_1.4.5_UB.dmg?download Current Version (Full)] (1.4.5, Universal, 173.2 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/Battle_for_Wesnoth_1.4.4b_UB.dmg?download Previous Version (Full)] (1.4.4b, Universal, 172.2 MB)<br />
<br />
==== GNU/Linux ====<br />
* 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.<br />
<br />
==== (Open)Solaris ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-solaris-i386-1.4.5.pkg.bz2?download Current Version] (1.4.4, 145.6 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.4.solaris.i386.pkg.bz2?download Previous Version] (1.4.4, 129.1 MB)<br />
<br />
==== OS/2 & eComStation ====<br />
* The current version (1.4.5) is not available yet.<br />
* [http://download.smedley.info/wesnoth-1.4.2-os2-20080515.zip Older version] (1.4.2, 200 MB)<br />
<br />
==== Miscellaneous ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.4.4.tar.bz2.md5?download md5sum for current source code]<br />
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Source_code Xdelta for the source code]<br />
* [http://sourceforge.net/project/showfiles.php?group_id=89495 SourceForge page for current and all previous versions]<br />
<br />
== Development (1.5 branch) ==<br />
<br />
Version 1.5.x is the latest development version, boasting updated graphics and new exciting features. However, there may be occasional bugs or performance problems in the development versions since heavy changes are taking place all the time. For balanced and stable gaming, it is recommended you use the latest version of the 1.4.x branch. This version is recommended for coders and campaign developers that want to use all of the latest possibilities, as well as those who want to preview the future of Wesnoth.<br />
<br />
==== Source code ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.4.tar.bz2?download Current Version] (1.5.4, 157.4 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.3.tar.bz2?download Previous Version] (1.5.3, 149.6 MB)<br />
<br />
* [[CompilingWesnoth|Compiling Guide]] - how to compile the source code<br />
<br />
==== MS Windows ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.4-win32.exe?download Current Version] (1.5.4, 145.8 MB)<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.3-windows.exe?download Previous Version] (1.5.3, 156.9 MB)<br />
<br />
==== Mac OS X ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://downloads.sourceforge.net/wesnoth/Battle_for_Wesnoth_1.5.3_UB.dmg?download Previous Version] (1.5.3, Universal, 175.4 MB).<br />
<br />
==== GNU/Linux ====<br />
* 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.<br />
<br />
==== (Open)Solaris ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.1.solaris.i386.pkg.bz2?download Older Version] (1.5.1, 130.4 MB)<br />
<br />
==== AmigaOS4 ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://os4depot.net/index.php?function=showfile&file=game/strategy/wesnoth-devel.lha Older Version] (1.3.12, 105.0 MB)<br />
<br />
==== OS/2 & eComStation ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://download.smedley.info/wesnoth-1.1.8-os2.zip Older Version] (1.1.8, 66 MB)<br />
<br />
==== Syllable ====<br />
* The current version (1.5.4) is not available yet.<br />
* [http://www.syllable-software.info/download.php?view.32 Older Version] (1.3.8, 82.2 MB)<br />
<br />
==== Miscellaneous ====<br />
* [http://downloads.sourceforge.net/wesnoth/wesnoth-1.5.3.tar.bz2.md5?download md5sum for current source code]<br />
* [http://www.wesnoth.org/wiki/Download_Xdeltas#Source_code Xdelta for the source code]<br />
* [http://sourceforge.net/project/showfiles.php?group_id=89495 SourceForge page for current and all previous versions]<br />
* [http://downloads.sourceforge.net/wesnoth/Mac_Compile_Stuff_1.5.3.tar.bz2? MacCompileStuff for 1.5.3]<br />
<br />
== License ==<br />
''Main article: [[Wesnoth:Copyrights]]<br />
<br />
This program is free software; you can redistribute it and/or modify it under the terms of the [http://www.fsf.org/copyleft/gpl.html GNU General Public License version 2], as published by the [http://www.fsf.org/ Free Software Foundation].<br />
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.<br />
<br />
== See also ==<br />
* [http://changelog.wesnoth.org Changelog]<br />
* [http://www.diggygames.com Free Games]<br />
* [[WesnothBinaries| More binaries]]<br />
* [[WesnothSVN]] - bleeding edge version from SVN<br />
<br />
[[Category:Building and Installing]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=AiWML&diff=26726AiWML2008-09-16T09:28:13Z<p>Suokko: Added recruiting force explenation</p>
<hr />
<div>{{WML Tags}}<br />
== AI phases ==<br />
<br />
When the AI does its turn, it has several 'phases'.<br />
In debug mode, these phases are shown in the upper-left corner.<br />
<br />
=== Combat phase ===<br />
It decides who is in range to attack, and whether it's worth attacking them<br />
<br />
=== Healing phase ===<br />
It locates injured units and sees if they can be moved to villages to heal<br />
<br />
=== Village capturing phase ===<br />
It locates units, and sees if they are in range of villages which they can capture<br />
<br />
=== Retreating phase ===<br />
It sees if any units are in grave danger/hopelessly outnumbered, and if they are, it retreats them<br />
<br />
=== Movement/targeting phase ===<br />
It decides upon 'targets', assigns those targets values, and moves units toward targets based on how easy it is to get to the targets, and how valuable the targets are.<br />
<br />
== the [ai] tag ==<br />
<br />
The [ai] tag is used inside a [side] tag, and it's contents define how the AI controlling that side acts. You can use multiple [ai] tags and have them apply during different turns or times of day, for example to set an undead side's caution higher and aggression lower during the day, or to boost the aggressiveness of a side when they receive reinforcements on a specific turn.<br />
<br />
The following key/tags can be used in an '''[ai]''' tag:<br />
* '''time_of_day''': the time(s) of day when the AI should use the parameters given in this [ai] tag. Possible values are listed in data/schedules.cfg (See [[TimeWML]]).<br />
<br />
* '''turns''': during which turns the AI should use the parameters given in this [ai] tag. This takes the same syntax of dashes(-) and commas(,) as is described under Filtering Locations in [[FilterWML]], except of course they apply to turns not locations.<br />
<br />
* '''ai_algorithm''': allows an alternate AI algorithm (cannot be created with WML) to be used. Besides the default, the game comes with only ''idle_ai'', which makes the AI do nothing and can be used to create a passive, unmoving side. Cannot be applied only to a set of turns or a given time of day using the keys ''turns'' and ''time_of_day'', but must be given either in an [ai] tag without the aforementioned keys or outside [ai] tags inside the [side] tag.<br />
<br />
* '''python_script''': is used when '''ai_algorithm''' has the value '''python_ai''', and specifies the name of the python script the AI should use. The script is looked for in the same pathes as units, specified with '''binary_path'''.<br />
<br />
* '''recruitment_pattern''': This key takes a comma separated list containing the usages defined in the recruitable units. Common usages are: 'scout', 'fighter', 'archer', 'healer' and 'mixed fighter'. This tells the AI with what probability it should recruit different types of units. The AI considers each unit to be one of these types. The type is listed in the unit file in data/units/ (See also [[UnitWML]]).<br />
** For example, "recruitment_pattern=fighter,fighter,archer" means, the AI will recruit twice as many fighters as archers, and not recruit scouts (other than scouts for capturing villages, who are recruited independently), healers or mixed fighters. "fighter,fighter,archer" also is the default setting if no recruitment_pattern is specified.<br />
* '''aggression''': This key affects how an AI player will fight.<br />
** It determines how an AI considers the difference between its units and its opponents by taking the value ''1 - AI unit value in proportion to opponent unit value''. ('Unit value' here means that the AI weights its decision on the chance to kill a unit or be killed, using a combination of its own units.) So, to make an AI which considers its units worthless, i.e. only cares about how much damage attacks inflict, set aggression at ''1 - 0 = 1.0''. This is the highest meaningful value for aggression; although it is insane, it is used on many HttT levels. If an AI set on this value can inflict 1 damage and take 0, or inflict 2 damage and take 20 himself, he'll take the latter option. To make an AI which considers its units equally as valuable as its opponent's, i.e. only attacks if he feels he can inflict more damage than he receives, set aggression at ''1 - 1 = 0.0''.<br />
** Although an AI which considers its opponent's units worthless is impossible under this scheme, an AI which, for example, considers its units twice as valuable as its opponent's can be represented by aggression ''1 - 2 = -1.0''.<br />
** The default is ''1 - 1/2 = 0.5'', which means the AI is content with dealing only half the damage to his opponent of that which he himself takes.<br />
<br />
* '''caution''': A number 0.0 or higher (default=0.25) that affects how cautious the AI is in various ways. If it is higher, the AI will want to retreat more (especially to a better defensive terrain), it will dislike moving out of a defensive terrain to attack more, and, if grouping is enabled, it forms bigger groups to protect from enemies when going to a target.<br />
<br />
* '''village_value''' A number 0 or higher (default=1) which determines how much the AI tries to capture villages.<br />
<br />
* '''leader_value''': A number 0 or higher (default=3) which determines how much the AI targets enemy leaders.<br />
<br />
* '''villages_per_scout''': A number 0 or higher which determines how many scouts the AI recruits. Defaults to 4. If 0, the AI doesn't recruit scouts to capture villages.<br />
<br />
* '''recruitment_ignore_bad_movement''': if 'yes', the AI will not analyse the terrain to see if the unit is suitable for it.<br />
<br />
* '''recruitment_ignore_bad_combat''': if 'yes', the AI will not analyse the units the enemy has fielded to see if the unit is suitable for fighting them.<br />
<br />
* '''number_of_possible_recruits_to_force_recruit''': {{DevFeature}} A number higher than 0.0. Tells AI to force leader to move to keep if it has enough gold to recruit number units. If set to 0.0 moveing to recruit is disabled. Default is 3.1. <br />
<br />
* '''passive_leader''': if 'yes' the AI leader will never move or attack, except to obey [leader_goal]s.<br />
1<br />
* '''attack_depth''': a number from 1 to 6, default 5. This is how many units will be thought about to attack a single unit. If the attack is completed, the AI on another round of thinking may still decide to attack that unit again with other units. Note that in battles, a unit usually can't be attacked from all six sides anyway, so any high attack_depth will be about the same. If attack_depth is low, the AI won't want to attack unwounded units very much, because it doesn't think it can kill them in the attack.<br />
<br />
* '''simple_targetting''': When the AI decides what targets to move towards with which units, it considers all its units that can move, sequentially. For each unit, it decides what the best target for it to go towards is. If not 'yes', it will check if any other units would be better to go towards that target than the unit it is currently considering.<br />
<br />
* '''scout_village_targetting''': The AI multiplies the value of village targets for scouts by this value. The default is 3.<br />
<br />
* '''grouping''': how the AI should try to group units<br />
** '''offensive''': (the default): Makes the AI try to group units together before attacking.<br />
** '''defensive''': Makes the AI group units together very conservatively, and only advances much beyond its castle if it has overwhelming force.<br />
** '''no''': Makes the AI not use grouping behaviour. This is what it used to be like.<br />
<br />
* '''protect_leader''' and '''protect_leader_radius''': the way these parameters work, is to target any enemy units that come within 'protect_leader_radius' of the AI leader with a value of 'protect_leader' on the units. The default for these values are 1.0 and 20. {{DevFeature}}: 2.0 and 10.<br />
<br />
* '''[protect_location]''': gives the AI a location to protect. Note that the AI will NOT station any units around the location, it will only send units to attack any enemy units that come within the guarding radius of the target.<br />
** ''x'', ''y'' standard coordinates. These indicate the location the AI is protecting,<br />
** '''radius''': indicates the radius around it to protect<br />
** '''value''': indicates the importance of protecting this location<br />
<br />
* '''[protect_unit]''': gives the AI a set of units to protect. Note once again that the AI will not place units around the unit if there are no enemies nearby.<br />
** [[StandardUnitFilter]]: the unit(s) to protect<br />
** '''radius''': indicates the radius around it to protect<br />
** '''value''': indicates the importance of protecting this unit<br />
<br />
* '''[target]''': Any number of [target] tags can be used to set a target for the AI. For anything related to 'values', set them relative to other targets. An AI is willing to dedicate twice as many resources and travel twice as far to get a target worth '2.0' as it is a target worth '1.0'.<br />
** [[StandardUnitFilter]]<br />
** value: A number greater than 0 (default=1) which determines how much the AI tries to kill all units which pass the filter.<br />
<br />
* '''[avoid]''': Makes the AI avoid a specific location or unit.<br />
** ''x'', ''y'' standard coordinates- A location for the AI to avoid moving to. The AI will never move a unit to this location except for trying to move its leader to a keep. Either coordinate may be a range; ranges are interpreted in the usual way as areas, in this case to be avoided.<br />
** [[StandardUnitFilter]] A set of units for the AI to avoid moving to. This feature is currently not implemented.<br />
<br />
* '''[leader_goal]''': Makes the AI try to move its leader to a specific location (as in the goal of The Elves Besieged).<br />
** '''x''', '''y''': the location for the AI to move its leader to<br />
<br />
== See Also ==<br />
<br />
* [[ReferenceWML]]<br />
<br />
<br />
[[Category: WML Reference]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=User:Suokko&diff=26698User:Suokko2008-09-12T20:40:11Z<p>Suokko: /* todo list */</p>
<hr />
<div>== todo list ==<br />
* Write optimized text parser<br />
* Add per cache checksum<br />
* Reduce size of game_config object in memory <br />
* Improve MP lobby usability<br />
* Reduce network usage for MP games<br />
* Write more unit tests<br />
=== minor features ===<br />
* Stop inactive games in server<br />
* Add nickname to stored ban data<br />
* Add better support for group bans<br />
=== optional before 1.6 ===<br />
* Completely transparent server restart<br />
* Boost asio networking library<br />
* Reduce wesnothd memory usage<br />
<br />
== Ideas how to improve wesnoth MP ==<br />
This section is free for all to add possible improvements to wesnoth MP. I will check them and add to my todo list. It is good idea to provide forum link where idea has been dicussed.<br />
*<br />
*<br />
*</div>Suokkohttps://wiki.wesnoth.org/index.php?title=User:Suokko&diff=26697User:Suokko2008-09-12T20:35:39Z<p>Suokko: New page: == todo list == * Write optimized text parser * Add per cache checksum * Reduce size of game_config object in memory * Improve MP lobby ussability * Reduce network usage for MP games * Wr...</p>
<hr />
<div>== todo list ==<br />
* Write optimized text parser<br />
* Add per cache checksum<br />
* Reduce size of game_config object in memory <br />
* Improve MP lobby ussability<br />
* Reduce network usage for MP games<br />
* Write more unit tests<br />
<br />
=== optional before 1.6 ===<br />
* Completely transparent server restart<br />
* Boost asio networking library<br />
* Reduce wesnothd memory usage</div>Suokkohttps://wiki.wesnoth.org/index.php?title=Give_Your_Hero_A_Personality&diff=26696Give Your Hero A Personality2008-09-12T08:09:50Z<p>Suokko: </p>
<hr />
<div>by Francisco Muñoz (fmunoz)<br />
<br />
This tutorial details techniques for modifying existing wesnoth sprites in order to generate new, more unique images. This is especially useful when creating a "hero" character for a campaign, who behaves similarly to an existing unit type, such as the swordsman, thus needing to suggest the unit it is derived from, and yet look unique at the same time. Several of the techniques described herein, such as color transformations, are very useful for general work.<br />
<br />
All instructions are given according to how one would use them in The Gimp, I'm sure that Photoshop users can easily translate them to equivalent commands. Attached to this message is a zip archive with the gimp file described in the tutorial.<br />
<br />
<br />
<br />
'''1st Image, Edgar, the mercenary sword: Swapping heads'''<br />
<br />
We want a variation of the swordman as our hero, thus we are going to use the easiest method, giving him a new head. We save the image file with a new name (to avoid accidentally overwriting the original one, one good way is to change the file format to the .xcf gimp original file format, rather than saving as a png). We open the swordsman image and change its mode to use more colours (Image->Mode->RGB). We delete the original head of the image by either selecting it and deleting the pixels in the selection (R and later Ctrl+K), or by using the eraser (Shift+E, but make sure to change the size to 1 pixel). We select the head from the head template, copy, and paste it over the body image, move (M) it to pick a place where it looks right. Then, we can just click again to merge it with the body layer or create a new layer for it (which is a better option) by clicking in the menu option under layer or in the layer palette. Now we have the 1st image of our new hero ready.<br />
<br />
<br />
'''2nd Image, Harold of the horned helm : Layers'''<br />
<br />
Lets do another one, this time we select the horned helmet head, and repeat the same steps again. If we used the multilayer approach we can reuse the body layer, after hiding the first face (click on the eye icon in the layer palette, if you don't have that palette, you can open it from the Dialogues mmenu). Looking at the image, we notice the horn is overlapping the sword. That doesn't look good. This time we are going to use another layer to fix it. We select the sword, copy, and paste it. This time we need to put it in another layer (not absolutely necessary, but a very helpful technique). We may need to change the ordering of the layers, to make sure that the new sword layer is placed over the head layer.<br />
<br />
<br />
'''3rd Image, Victor, the Pirate Marine : Adding bits'''<br />
<br />
This time we want more. We are going to use all the steps from the previous edit (and the same file too), but we are going to add minor extra bits here and there, a new sword point, a red gem in the shield, and extra shoulder padding.<br />
After adding the new head and our new sword copy (to lay over the red bandanna end), we change its point a bit to make it into a kind of boarding sabre. We create another layer, where we draw a bigger set of shoulder pads using the armour colours. You can copy a few bits of armour into this new layer to get the colours more easily later; just paste them at one side and delete them when you are done. Using the pencil (N) with a size of 1 pixel, we draw the new shoulder armour. Remember that you can use the CONTROL key to pick colours fast from the samples we pasted before. We paste a red bit over the centre of the shield too (again in another layer).<br />
<br />
<br />
'''4th Image, Rufus, the Breathdrainer: Colourize and change hue.'''<br />
<br />
We want an evil swordsman variation, and we have an evil looking hooded head (kudos to artist Neoriceisgood) but the armour and weapon don't look evil enough.<br />
<br />
We create a copy of the body, hide all the unused layers, and add the head using the same method as before. We go to the new body layer, which we want to look like a dark metal, so we start selecting the blue bits using either the Rectangle selection (R, later we can use CONTROL to remove parts and SHIFT to add them), or the Select by Colour tool (SHIFT+O, later we can use CONTROL to remove colours and SHIFT to add them). We can mix the two methods of selection; the end result of our "target" being selected is the same. We remove the pixels of the sword, because we are going to change them later.<br />
<br />
From the menu Layer->Colours->Hue-Saturation, we change the saturation (to something less) and brightness (also less), until we have a darker, more sinister armour. We deselect the pixels (SHIFT+CTRL+A), and try to select the yellowish bits of the armour. As the pixels have a really soft colour, the former method doesn't work really well now, so we have to use Layer->Colours->Colourize to add more Saturation. We change mostly the hue until we have a dark purple. Now we repeat these things with the sword blade and the its handle to make it look like a wraith's sword (We can also easily do things by hand with the pencil tool).<br />
<br />
Take note of the colour settings used if you plan to edit all the other unit frames. An easy way to do this is to use special layers that store and perform those color changes (which photoshop calls "adjustment layers"), rather than applying the changes directly to the picture data. Another way is simply to scribble down the few settings (hue, saturation, brightness) which were changed for each part of the unit, onto a piece of paper.<br />
<br />
<br />
'''5th image, Karina, the Firemaiden: All at the same time'''<br />
<br />
In this last image we add a new head, edit the sword to look like it is on fire, and change the armour colour until it looks like it is made of brass. The sword has been done using 3 layers, the original one, a flames one done using the fire colours from the Wesnoth item-firesword.png image and another copy of the original, placed above the others, with a 50% transparency (change it in the upper part of the Layer palette). As a last touch we add the same red bit we used in the Victor shield as a gem in the breastplate.<br />
<br />
<br />
http://exong.net/wesnoth-attach/files/faces_166.png http://exong.net/wesnoth-attach/files/human-swordman-variations_127.png<br />
<br />
The following use to be a [[http://www.wesnoth.org/forum/download/file.php?id=4919, zip file]] containing all the images. However, the file was lost in the Last Great Forum Crash, and can no longer be downloaded.<br />
<br />
<br />
== See Also ==<br />
* [[Create]]<br />
* [[Art Tutorials]]<br />
<br />
[[Category: Art Tutorials]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=Give_Your_Hero_A_Personality&diff=26695Give Your Hero A Personality2008-09-12T08:09:16Z<p>Suokko: </p>
<hr />
<div>by Francisco Muñoz (fmunoz)<br />
<br />
This tutorial details techniques for modifying existing wesnoth sprites in order to generate new, more unique images. This is especially useful when creating a "hero" character for a campaign, who behaves similarly to an existing unit type, such as the swordsman, thus needing to suggest the unit it is derived from, and yet look unique at the same time. Several of the techniques described herein, such as color transformations, are very useful for general work.<br />
<br />
All instructions are given according to how one would use them in The Gimp, I'm sure that Photoshop users can easily translate them to equivalent commands. Attached to this message is a zip archive with the gimp file described in the tutorial.<br />
<br />
<br />
<br />
'''1st Image, Edgar, the mercenary sword: Swapping heads'''<br />
<br />
We want a variation of the swordman as our hero, thus we are going to use the easiest method, giving him a new head. We save the image file with a new name (to avoid accidentally overwriting the original one, one good way is to change the file format to the .xcf gimp original file format, rather than saving as a png). We open the swordsman image and change its mode to use more colours (Image->Mode->RGB). We delete the original head of the image by either selecting it and deleting the pixels in the selection (R and later Ctrl+K), or by using the eraser (Shift+E, but make sure to change the size to 1 pixel). We select the head from the head template, copy, and paste it over the body image, move (M) it to pick a place where it looks right. Then, we can just click again to merge it with the body layer or create a new layer for it (which is a better option) by clicking in the menu option under layer or in the layer palette. Now we have the 1st image of our new hero ready.<br />
<br />
<br />
'''2nd Image, Harold of the horned helm : Layers'''<br />
<br />
Lets do another one, this time we select the horned helmet head, and repeat the same steps again. If we used the multilayer approach we can reuse the body layer, after hiding the first face (click on the eye icon in the layer palette, if you don't have that palette, you can open it from the Dialogues mmenu). Looking at the image, we notice the horn is overlapping the sword. That doesn't look good. This time we are going to use another layer to fix it. We select the sword, copy, and paste it. This time we need to put it in another layer (not absolutely necessary, but a very helpful technique). We may need to change the ordering of the layers, to make sure that the new sword layer is placed over the head layer.<br />
<br />
<br />
'''3rd Image, Victor, the Pirate Marine : Adding bits'''<br />
<br />
This time we want more. We are going to use all the steps from the previous edit (and the same file too), but we are going to add minor extra bits here and there, a new sword point, a red gem in the shield, and extra shoulder padding.<br />
After adding the new head and our new sword copy (to lay over the red bandanna end), we change its point a bit to make it into a kind of boarding sabre. We create another layer, where we draw a bigger set of shoulder pads using the armour colours. You can copy a few bits of armour into this new layer to get the colours more easily later; just paste them at one side and delete them when you are done. Using the pencil (N) with a size of 1 pixel, we draw the new shoulder armour. Remember that you can use the CONTROL key to pick colours fast from the samples we pasted before. We paste a red bit over the centre of the shield too (again in another layer).<br />
<br />
<br />
'''4th Image, Rufus, the Breathdrainer: Colourize and change hue.'''<br />
<br />
We want an evil swordsman variation, and we have an evil looking hooded head (kudos to artist Neoriceisgood) but the armour and weapon don't look evil enough.<br />
<br />
We create a copy of the body, hide all the unused layers, and add the head using the same method as before. We go to the new body layer, which we want to look like a dark metal, so we start selecting the blue bits using either the Rectangle selection (R, later we can use CONTROL to remove parts and SHIFT to add them), or the Select by Colour tool (SHIFT+O, later we can use CONTROL to remove colours and SHIFT to add them). We can mix the two methods of selection; the end result of our "target" being selected is the same. We remove the pixels of the sword, because we are going to change them later.<br />
<br />
From the menu Layer->Colours->Hue-Saturation, we change the saturation (to something less) and brightness (also less), until we have a darker, more sinister armour. We deselect the pixels (SHIFT+CTRL+A), and try to select the yellowish bits of the armour. As the pixels have a really soft colour, the former method doesn't work really well now, so we have to use Layer->Colours->Colourize to add more Saturation. We change mostly the hue until we have a dark purple. Now we repeat these things with the sword blade and the its handle to make it look like a wraith's sword (We can also easily do things by hand with the pencil tool).<br />
<br />
Take note of the colour settings used if you plan to edit all the other unit frames. An easy way to do this is to use special layers that store and perform those color changes (which photoshop calls "adjustment layers"), rather than applying the changes directly to the picture data. Another way is simply to scribble down the few settings (hue, saturation, brightness) which were changed for each part of the unit, onto a piece of paper.<br />
<br />
<br />
'''5th image, Karina, the Firemaiden: All at the same time'''<br />
<br />
In this last image we add a new head, edit the sword to look like it is on fire, and change the armour colour until it looks like it is made of brass. The sword has been done using 3 layers, the original one, a flames one done using the fire colours from the Wesnoth item-firesword.png image and another copy of the original, placed above the others, with a 50% transparency (change it in the upper part of the Layer palette). As a last touch we add the same red bit we used in the Victor shield as a gem in the breastplate.<br />
<br />
<br />
http://exong.net/wesnoth-attach/files/faces_166.png http://exong.net/wesnoth-attach/files/human-swordman-variations_127.png<br />
<br />
The following use to be a [[http://www.wesnoth.org/forum/download/files.php?id=4919, zip file]] containing all the images. However, the file was lost in the Last Great Forum Crash, and can no longer be downloaded.<br />
<br />
<br />
== See Also ==<br />
* [[Create]]<br />
* [[Art Tutorials]]<br />
<br />
[[Category: Art Tutorials]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=ServerAdministration&diff=26537ServerAdministration2008-08-28T16:24:47Z<p>Suokko: /* Available commands */ ban command extensions</p>
<hr />
<div>== Overview ==<br />
<br />
The Wesnoth server, wesnothd provides a simple interface for administering the server from within the game itself.<br />
<br />
To issue an administrative command to the server, you must be connected to the server using Wesnoth, and in the lobby. Any text you type into the chat box that begins with '/query ' will be considered an administrative command instead of a normal chat message. It will not be relayed to other users, but instead treated as a command by the server.<br />
<br />
Most commands are not accessible to normal users. They are only accessible once you have authenticated yourself to the server as an administrator. The way to authenticate yourself as an administrator is to use the command,<br />
<br />
'''/query <password>'''<br />
<br />
where <password> is the administrative password to the server. The administrative password is specified as the passwd attribute in wesnothd.cfg. By convention, it will generally start with 'admin ' followed by the actual password, so the usual syntax to authenticate yourself is,<br />
<br />
'''/query admin <passwd>'''<br />
<br />
Naturally the password for a server should be kept a secret. One danger is that if you forget to type '/query ' at the start of a command you may accidentally type the password in a chat message, and let all users on the server know it. If you do this, then notify an administrator who has access to the box as soon as possible, so they can reset the password in wesnothd.cfg. We may provide features to prevent this kind of accident in future versions.<br />
<br />
A message from the server should tell you that you have successfully authenticated yourself as an administrator. The server will recognize you as an administrator until the next time you log out of the server.<br />
<br />
== Available commands ==<br />
<br />
'''/query metrics''': this command will show a simple metrics report of how the server has been performing. (available to non-administrators)<br />
<br />
'''/query netstats''': shows some network stats. (available to non-administrators)<br />
<br />
'''/query wml''': shows stats about WML documents and their current memory consumption. (available to non-administrators)<br />
<br />
'''/query status [<nickmask>]''': this command will show you a list of users (matching the nickmask) connected to the server, with IP addresses, and how long they have been connected. Note that IP addresses of users are not available to non-administrators, and should be treated as confidential. When used as a non-administrator it just returns the entry of the user.<br />
<br />
'''/query motd [<message>]''': this command sets the message of the day that appears as the first message users get when they log on to the server. Without argument it returns the current motd. (available to non-administrators)<br />
<br />
'''/query msg <message>''': this command will relay the message 'message' to all users on the server, even if they are in a game. The message will appear to come from 'server', so you should write your name as part of the message if it is necessary to show who it comes from.<br />
<br />
'''/query lobbymsg <message>''': this command will relay the message 'message' to all users in the lobby of the server. The message will appear to come from 'server', so you should write your name as part of the message if it is necessary to show who it comes from.<br />
<br />
'''/query kick <mask>''': this command will disconnect the user matching the given nick or ip mask from the server.<br />
<br />
'''/query ban <mask> [<time>] <reason>''': this command will make the server refuse connections from users matching the given ip mask or the ips of users matching the nick mask. When banning by nick mask already existing bans will not be overwritten. When banning by ip mask existing bans (and their reason!) will be overwritten so you can change the reason for a ban that way.<br />
<br />
'''/query gban <mask> <group> [<time>] <reason>''': this command will make ban that belongs to a group. It functions just like ordinary ban but ban listing just ignores them.<br />
<br />
'''/query bans''': shows a list of currently banned ip masks and the reasons for the bans.<br />
<br />
'''/query kban <mask> [<time>] <reason>''': this command is equivalent to 'kick <mask>' 'ban <mask> [<time] <reason>' -- i.e. bans the users matching the ip mask or the ips of users matching the nick mask and disconnects them all in one go. The most common way to ban someone from the server.<br />
<br />
'''/query unban <ipmask>''': this command removes the specified ip mask from the ban list.<br />
<br />
'''/query ungban <group>''': this command removes all bans in the group.<br />
<br />
<br />
Masks are arguments that can contain wildcards ('*' and '?'). '*' matches any number of characters (including none), and '?' any one character. Ip masks are masks that contain at least one '.'.<br />
<br />
Time parameter is used set length of ban. Simple example is 2D12h means 2 days and 12 hours. Modifiers are s=seconds, m=minutes, h=hours, D=days, M=months and Y=years (short times with lowercase and long times with uppercase). Server also supports keywords for time like LONG, MEDIUM and SHORT but none is set yet.<br />
<br />
== Future extensions ==<br />
<br />
The current administrative interface is fairly primitive. We plan to provide some further extensions in the future, such as,<br />
<br />
'''/query mute <nick>''': makes it so that any messages sent by the user with the given nick will not be received by any other user on the server unless they share an IP address with 'nick'. Any games created by 'nick' will likewise not be seen by other users. 'nick' may observe games but will not appear in the observer list, and players of the game will not see any messages they type.<br />
<br />
[[Category:Troubleshooting and Bugs]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=ServerAdministration&diff=26444ServerAdministration2008-08-15T19:42:14Z<p>Suokko: /* Available commands */</p>
<hr />
<div>== Overview ==<br />
<br />
The Wesnoth server, wesnothd provides a simple interface for administering the server from within the game itself.<br />
<br />
To issue an administrative command to the server, you must be connected to the server using Wesnoth, and in the lobby. Any text you type into the chat box that begins with '/query ' will be considered an administrative command instead of a normal chat message. It will not be relayed to other users, but instead treated as a command by the server.<br />
<br />
Most commands are not accessible to normal users. They are only accessible once you have authenticated yourself to the server as an administrator. The way to authenticate yourself as an administrator is to use the command,<br />
<br />
'''/query <password>'''<br />
<br />
where <password> is the administrative password to the server. The administrative password is specified as the passwd attribute in wesnothd.cfg. By convention, it will generally start with 'admin ' followed by the actual password, so the usual syntax to authenticate yourself is,<br />
<br />
'''/query admin <passwd>'''<br />
<br />
Naturally the password for a server should be kept a secret. One danger is that if you forget to type '/query ' at the start of a command you may accidentally type the password in a chat message, and let all users on the server know it. If you do this, then notify an administrator who has access to the box as soon as possible, so they can reset the password in wesnothd.cfg. We may provide features to prevent this kind of accident in future versions.<br />
<br />
A message from the server should tell you that you have successfully authenticated yourself as an administrator. The server will recognize you as an administrator until the next time you log out of the server.<br />
<br />
== Available commands ==<br />
<br />
'''/query metrics''': this command will show a simple metrics report of how the server has been performing. (available to non-administrators)<br />
<br />
'''/query netstats''': shows some network stats. (available to non-administrators)<br />
<br />
'''/query wml''': shows stats about WML documents and their current memory consumption. (available to non-administrators)<br />
<br />
'''/query status [<nickmask>]''': this command will show you a list of users (matching the nickmask) connected to the server, with IP addresses, and how long they have been connected. Note that IP addresses of users are not available to non-administrators, and should be treated as confidential. When used as a non-administrator it just returns the entry of the user.<br />
<br />
'''/query motd [<message>]''': this command sets the message of the day that appears as the first message users get when they log on to the server. Without argument it returns the current motd. (available to non-administrators)<br />
<br />
'''/query msg <message>''': this command will relay the message 'message' to all users on the server, even if they are in a game. The message will appear to come from 'server', so you should write your name as part of the message if it is necessary to show who it comes from.<br />
<br />
'''/query lobbymsg <message>''': this command will relay the message 'message' to all users in the lobby of the server. The message will appear to come from 'server', so you should write your name as part of the message if it is necessary to show who it comes from.<br />
<br />
'''/query kick <mask>''': this command will disconnect the user matching the given nick or ip mask from the server.<br />
<br />
'''/query ban <mask> [<time>] [<reason>]''': this command will make the server refuse connections from users matching the given ip mask or the ips of users matching the nick mask. When banning by nick mask already existing bans will not be overwritten. When banning by ip mask existing bans (and their reason!) will be overwritten so you can change the reason for a ban that way. Time is only in 1.5 server. Either time or reason is required when banning.<br />
<br />
'''/query bans''': shows a list of currently banned ip masks and the reasons for the bans.<br />
<br />
'''/query kban <mask> [<time>] [<reason>]''': this command is equivalent to 'kick <mask>' 'ban <mask> [<reason>]' -- i.e. bans the users matching the ip mask or the ips of users matching the nick mask and disconnects them all in one go. The most common way to ban someone from the server. Time is only in 1.5 server. Either time or reason is required when banning.<br />
<br />
'''/query unban <ipmask>''': this command removes the specified ip mask from the ban list.<br />
<br />
<br />
Masks are arguments that can contain wildcards ('*' and '?'). '*' matches any number of characters (including none), and '?' any one character. Ip masks are masks that contain at least one '.'.<br />
<br />
Time parameter is used set length of ban. Simple example is 2D12h means 2 days and 12 hours. Modifiers are s=seconds, m=minutes, h=hours, D=days, M=months and Y=years. Server also supports keywords for time like LONG, MEDIUM and SHORT but none is set yet.<br />
<br />
== Future extensions ==<br />
<br />
The current administrative interface is fairly primitive. We plan to provide some further extensions in the future, such as,<br />
<br />
'''/query mute <nick>''': makes it so that any messages sent by the user with the given nick will not be received by any other user on the server unless they share an IP address with 'nick'. Any games created by 'nick' will likewise not be seen by other users. 'nick' may observe games but will not appear in the observer list, and players of the game will not see any messages they type.<br />
<br />
[[Category:Troubleshooting and Bugs]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=ServerAdministration&diff=26443ServerAdministration2008-08-15T19:24:08Z<p>Suokko: </p>
<hr />
<div>== Overview ==<br />
<br />
The Wesnoth server, wesnothd provides a simple interface for administering the server from within the game itself.<br />
<br />
To issue an administrative command to the server, you must be connected to the server using Wesnoth, and in the lobby. Any text you type into the chat box that begins with '/query ' will be considered an administrative command instead of a normal chat message. It will not be relayed to other users, but instead treated as a command by the server.<br />
<br />
Most commands are not accessible to normal users. They are only accessible once you have authenticated yourself to the server as an administrator. The way to authenticate yourself as an administrator is to use the command,<br />
<br />
'''/query <password>'''<br />
<br />
where <password> is the administrative password to the server. The administrative password is specified as the passwd attribute in wesnothd.cfg. By convention, it will generally start with 'admin ' followed by the actual password, so the usual syntax to authenticate yourself is,<br />
<br />
'''/query admin <passwd>'''<br />
<br />
Naturally the password for a server should be kept a secret. One danger is that if you forget to type '/query ' at the start of a command you may accidentally type the password in a chat message, and let all users on the server know it. If you do this, then notify an administrator who has access to the box as soon as possible, so they can reset the password in wesnothd.cfg. We may provide features to prevent this kind of accident in future versions.<br />
<br />
A message from the server should tell you that you have successfully authenticated yourself as an administrator. The server will recognize you as an administrator until the next time you log out of the server.<br />
<br />
== Available commands ==<br />
<br />
'''/query metrics''': this command will show a simple metrics report of how the server has been performing. (available to non-administrators)<br />
<br />
'''/query netstats''': shows some network stats. (available to non-administrators)<br />
<br />
'''/query wml''': shows stats about WML documents and their current memory consumption. (available to non-administrators)<br />
<br />
'''/query status [<nickmask>]''': this command will show you a list of users (matching the nickmask) connected to the server, with IP addresses, and how long they have been connected. Note that IP addresses of users are not available to non-administrators, and should be treated as confidential. When used as a non-administrator it just returns the entry of the user.<br />
<br />
'''/query motd [<message>]''': this command sets the message of the day that appears as the first message users get when they log on to the server. Without argument it returns the current motd. (available to non-administrators)<br />
<br />
'''/query msg <message>''': this command will relay the message 'message' to all users on the server, even if they are in a game. The message will appear to come from 'server', so you should write your name as part of the message if it is necessary to show who it comes from.<br />
<br />
'''/query lobbymsg <message>''': this command will relay the message 'message' to all users in the lobby of the server. The message will appear to come from 'server', so you should write your name as part of the message if it is necessary to show who it comes from.<br />
<br />
'''/query kick <mask>''': this command will disconnect the user matching the given nick or ip mask from the server.<br />
<br />
'''/query ban <mask> [<time>] [<reason>]''': this command will make the server refuse connections from users matching the given ip mask or the ips of users matching the nick mask. When banning by nick mask already existing bans will not be overwritten. When banning by ip mask existing bans (and their reason!) will be overwritten so you can change the reason for a ban that way. Time is only in 1.5.<br />
<br />
'''/query bans''': shows a list of currently banned ip masks and the reasons for the bans.<br />
<br />
'''/query kban <mask> [<time>] [<reason>]''': this command is equivalent to 'kick <mask>' 'ban <mask> [<reason>]' -- i.e. bans the users matching the ip mask or the ips of users matching the nick mask and disconnects them all in one go. The most common way to ban someone from the server. Time is only in 1.5.<br />
<br />
'''/query unban <ipmask>''': this command removes the specified ip mask from the ban list.<br />
<br />
<br />
Masks are arguments that can contain wildcards ('*' and '?'). '*' matches any number of characters (including none), and '?' any one character. Ip masks are masks that contain at least one '.'.<br />
<br />
Time parameter is used set length of ban. Simple example is 2D12h means 2 days and 12 hours. Modifiers are s=seconds, m=minutes, h=hours, D=days, M=months and Y=years. Server also supports keywords for time like LONG, MEDIUM and SHORT but none is set yet.<br />
<br />
== Future extensions ==<br />
<br />
The current administrative interface is fairly primitive. We plan to provide some further extensions in the future, such as,<br />
<br />
'''/query mute <nick>''': makes it so that any messages sent by the user with the given nick will not be received by any other user on the server unless they share an IP address with 'nick'. Any games created by 'nick' will likewise not be seen by other users. 'nick' may observe games but will not appear in the observer list, and players of the game will not see any messages they type.<br />
<br />
[[Category:Troubleshooting and Bugs]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=ServerAdministration&diff=26442ServerAdministration2008-08-15T17:06:01Z<p>Suokko: /* Available commands */ Modified ban command syntax.</p>
<hr />
<div>== Overview ==<br />
<br />
The Wesnoth server, wesnothd provides a simple interface for administering the server from within the game itself.<br />
<br />
To issue an administrative command to the server, you must be connected to the server using Wesnoth, and in the lobby. Any text you type into the chat box that begins with '/query ' will be considered an administrative command instead of a normal chat message. It will not be relayed to other users, but instead treated as a command by the server.<br />
<br />
Most commands are not accessible to normal users. They are only accessible once you have authenticated yourself to the server as an administrator. The way to authenticate yourself as an administrator is to use the command,<br />
<br />
'''/query <password>'''<br />
<br />
where <password> is the administrative password to the server. The administrative password is specified as the passwd attribute in wesnothd.cfg. By convention, it will generally start with 'admin ' followed by the actual password, so the usual syntax to authenticate yourself is,<br />
<br />
'''/query admin <passwd>'''<br />
<br />
Naturally the password for a server should be kept a secret. One danger is that if you forget to type '/query ' at the start of a command you may accidentally type the password in a chat message, and let all users on the server know it. If you do this, then notify an administrator who has access to the box as soon as possible, so they can reset the password in wesnothd.cfg. We may provide features to prevent this kind of accident in future versions.<br />
<br />
A message from the server should tell you that you have successfully authenticated yourself as an administrator. The server will recognize you as an administrator until the next time you log out of the server.<br />
<br />
== Available commands ==<br />
<br />
'''/query metrics''': this command will show a simple metrics report of how the server has been performing. (available to non-administrators)<br />
<br />
'''/query netstats''': shows some network stats. (available to non-administrators)<br />
<br />
'''/query wml''': shows stats about WML documents and their current memory consumption. (available to non-administrators)<br />
<br />
'''/query status [<nickmask>]''': this command will show you a list of users (matching the nickmask) connected to the server, with IP addresses, and how long they have been connected. Note that IP addresses of users are not available to non-administrators, and should be treated as confidential. When used as a non-administrator it just returns the entry of the user.<br />
<br />
'''/query motd [<message>]''': this command sets the message of the day that appears as the first message users get when they log on to the server. Without argument it returns the current motd. (available to non-administrators)<br />
<br />
'''/query msg <message>''': this command will relay the message 'message' to all users on the server, even if they are in a game. The message will appear to come from 'server', so you should write your name as part of the message if it is necessary to show who it comes from.<br />
<br />
'''/query lobbymsg <message>''': this command will relay the message 'message' to all users in the lobby of the server. The message will appear to come from 'server', so you should write your name as part of the message if it is necessary to show who it comes from.<br />
<br />
'''/query kick <mask>''': this command will disconnect the user matching the given nick or ip mask from the server.<br />
<br />
'''/query ban <mask> <time> [<reason>]''': this command will make the server refuse connections from users matching the given ip mask or the ips of users matching the nick mask. When banning by nick mask already existing bans will not be overwritten. When banning by ip mask existing bans (and their reason!) will be overwritten so you can change the reason for a ban that way. Time is only in 1.5.<br />
<br />
'''/query bans''': shows a list of currently banned ip masks and the reasons for the bans.<br />
<br />
'''/query kban <mask> <time> [<reason>]''': this command is equivalent to 'kick <mask>' 'ban <mask> [<reason>]' -- i.e. bans the users matching the ip mask or the ips of users matching the nick mask and disconnects them all in one go. The most common way to ban someone from the server. Time is only in 1.5.<br />
<br />
'''/query unban <ipmask>''': this command removes the specified ip mask from the ban list.<br />
<br />
<br />
Masks are arguments that can contain wildcards ('*' and '?'). '*' matches any number of characters (including none), and '?' any one character. Ip masks are masks that contain at least one '.'.<br />
<br />
Time parameter is used set length of ban. Simple example is 2D12h means 2 days and 12 hours. Modifiers are s=seconds, m=minutes, h=hours, D=days, M=months and Y=years. Server also supports keywords for time like LONG, MEDIUM and SHORT but none is set yet.<br />
<br />
== Future extensions ==<br />
<br />
The current administrative interface is fairly primitive. We plan to provide some further extensions in the future, such as,<br />
<br />
'''/query mute <nick>''': makes it so that any messages sent by the user with the given nick will not be received by any other user on the server unless they share an IP address with 'nick'. Any games created by 'nick' will likewise not be seen by other users. 'nick' may observe games but will not appear in the observer list, and players of the game will not see any messages they type.<br />
<br />
[[Category:Troubleshooting and Bugs]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=GettingStarted&diff=26438GettingStarted2008-08-15T09:03:08Z<p>Suokko: </p>
<hr />
<div>{| style="float:right;"<br />
|<br />
__TOC__<br />
|}<br />
The Battle for Wesnoth is a turn-based strategy game with a fantasy theme.<br />
<br />
''Build up a great army'', gradually turning raw recruits into hardened veterans. In later games, recall your toughest warriors and form a deadly host against whom none can stand! Choose units from a large pool of specialists, and hand-pick a force with the right strengths to fight well on different terrains against all manner of opposition. <br />
<br />
Fight to regain the throne of Wesnoth, of which you are the legitimate heir, or use your dread power over the Undead to dominate the land of mortals, or lead your glorious Orcish tribe to victory against the humans who dared despoil your lands … Wesnoth has many different sagas waiting to be played out. You can create your own custom units, and write your own scenarios – or even full-blown campaigns. You can also challenge your friends – or strangers – and fight in epic ''multi-player'' fantasy battles.<br />
<br />
=== Welcome to Wesnoth ===<br />
==== The Land of Wesnoth ====<br />
The Land of Wesnoth is generally divided into three areas: the northlands, which are generally lawless; the kingdom of Wesnoth and its occasional principality, Elensefar; and the domain of the Southwest Elves.<br />
<br />
The Kingdom of Wesnoth lies in the center of the land. Its borders are the Great River to the north, the Lower Hills in the east and south, the Green Swamp to the southwest, and the Ocean to the west. Elensefar, a once-province of Wesnoth, is bordered by the Great River to the north, a loosely defined line with Wesnoth to the east, the Bay of Pearls to the south, and the ocean to the west. There is no government of the Northlands. Various groups of orcs, dwarves, barbarians and even elves populate the region. The northern and eastern borders are not defined, the southern border is the Great River, and the western border is the Ocean.<br />
<br />
As you travel around the land you will encounter peaceful villages where you can heal your troops and obtain a good income to support your army. You will also have to cross mountains and rivers, either on foot or mounted, push through forests, hills and tundra, or brazenly cross open grassland. In each of these areas different creatures have adapted to live there and can travel more easily and fight better when they are in familiar terrain. In the hills, mountains and underground caves orcs and dwarves are most at home. In the forests the elves reign supreme while in the oceans and rivers mermen and nagas control the waves.<br />
<br />
==== The Creatures of Wesnoth ====<br />
<br />
The world of Wesnoth contains several [[races]] that have joined forces into different factions. Here, Elves and Dwarves fight side by side against Orcs and Humans. In most campaigns, you will mostly control units from one faction, but often you will have a recruit list with units mixed in from other factions, and will not have some units from a faction available. Basically, your recruit list is determined by the plot of the campaign, not by a predetermined ruleset.<br />
<br />
Sometimes factions make alliances with others, so you may face more than one faction in a scenario.<br />
<br />
=== Finding Your Way Around Battle For Wesnoth ===<br />
<div class="thumb tright"><div><br />
[http://exong.net/wesnoth-attach/files/splash111_1152_744.jpg http://exong.net/wesnoth-attach/files/splash111_300_159.jpg]<br />
<div class="thumbcaption"><div align="center">The Main Menu<br>(Click to enlarge)</div></div></div><br />
</div><br />
When Wesnoth first starts it displays an initial background and a column of buttons called the Main Menu. The buttons only work with a mouse. For the impatient, we recommend you: click the 'Language' button to set your language; then click the 'Tutorial' button to run the tutorial; and then play the campaign, 'The Two Brothers' by clicking the 'Campaign' button and selecting it from the list provided.<br />
<br />
The Main Menu buttons are:<br />
<br />
*Tutorial<br />
:The tutorial is a real, but basic, game which teaches you some of the basic controls needed to play the game. Winning or losing is not important here, but learning what to do is. Click the Tutorial button to play. In the Tutorial you are in the role of the young prince Konrad or princess Li'sar, learning from the Elder Mage Delfador - pay attention or he might turn you into a newt.<br />
<br />
*Campaign<br />
:Wesnoth was primarily designed to play campaigns. Campaigns are a series of connected scenarios. Click this button to start a new campaign. You will be presented with a list of campaigns available on your computer (more can be downloaded if you wish). Select your campaign and click OK to start or Cancel to quit.<br />
<br />
:Each campaign has a difficulty level: easy, medium (normal), and hard. Some have an extra setting, 'nightmare'. We recommend medium as this level is challenging, but not difficult. You may not change the difficulty during the campaign. In case you have serious problems fighting your way through easy difficulty, the guide about [[BasicStrategy]] will surely help you. Once you have selected the difficulty, you will start with the first scenario of the campaign. A good campaign to start with is the Heir to The Throne. It is not too difficult on easy, but gets challenging later on. You can find walkthroughs or descriptions of the available campaigns at:<br />
<br />
::* [[MainlineCampaigns]]<br />
::* [[UserCampaigns]]<br />
::* [[BeginnerCampaigns]]<br />
<br />
*Multiplayer<br />
:Click this button to play single scenarios against one or more opponents. You can play the games over the internet or at your computer, against computer or human opponents. When you select this button a dialogue will appear and allow you to choose how you want to play the scenario. To learn more, see [[#Multiplayer|Multiplayer]].<br />
<br />
*Load<br />
:Click this button to load a previously saved game. You will be shown a dialogue listing saved games. Select the game and click Ok to load and continue, or Cancel to return to the Main Menu.<br />
<br />
:If you select a replay game, you can check the Replay check box. The loaded game will make all the moves from the beginning while you watch.<br />
<br />
*Language<br />
:Click this button, select your language, and click OK to use it, or Cancel to continue with the current language. The first time Wesnoth starts, it defaults to English, but once you change it, it will start in that language.<br />
<br />
*Preferences<br />
<br />
:Click here to change default settings. These are explained in more detail in [[PlayingBattleForWesnoth#Preferences|the Manual]].<br />
<br />
*About<br />
:Click this button for a list of major Wesnoth contributors. You may find most of them at irc.freenode.org:6667 on #wesnoth. Or visit http://www.wesnoth.org for news, forums, and Wiki updates. The project is hosted on https://gna.org/projects/wesnoth, where you can download the latest production or developer release, review and report problems (bugs).<br />
<br />
*Quit<br />
:Click this button to close Wesnoth.<br />
<br />
This getting started guide provides a basic introduction to Battle for Wesnoth. You can find more details about playing the game in the [[WesnothManual|Manual]].<br />
<br />
=== Play a Game ===<br />
There are two basic ways to play Battle for Wesnoth:<br />
*Play a sequence of connected scenarios, known as a campaign, against the computer (Campaign)<br />
*Play a single scenario against computer or human opponents (Multiplayer)<br />
(Note: The development of multiplayer campaigns is currently underway).<br />
<br />
==== Campaigns ====<br />
Campaigns can take a long time to complete. Typical campaigns have about 10-20 scenarios. The main advantage with campaigns is that they allow you to develop your army. As you complete each scenario, the remaining units at the end are saved for you to use in the next scenario. If you choose not to use a unit at all during a scenario it is carried over to the next, so you don't lose units you don't use.<br />
<br />
The campaign is the primary form in which Wesnoth is intended to be played, and is the recommended way for new players to learn the game. Some Official campaigns also describe the history of Wesnoth as scenarios are completed.<br />
<br />
==== Multiplayer ====<br />
Multiplayer games are played with or against other players, which may be human or AI-controlled. There are 4 major options: 1) Join official server, 2) Connect to host/server, 3) Host networked game, 4) Local game.<br />
<br />
By selecting this option, you may play either competitive games or cooperative games. Competitive games include 1 vs 1's , 2 vs 2's or even free-for-alls (FFA's). Cooperative games or scenarios include survivals and other user made scenarios, which may include RPG elements or other elements which are not present in campaigns or competitive games. In general, cooperative scenarios require downloading from the Wesnoth Add-On Server. In all games, you have the option of assigning any sides control by the AI.<br />
<br />
Multiplayer games can take anywhere from 1 hour to 10 hours (or more, for very rare map settings), depending on how many players there are (and the size of the map). The average time is between 3 to 7 hours. Games can be saved and loaded as many times as you like. So, it's possible for some games to last 1 or 2 weeks, even though the play time is only a few hours. You cannot carry over units in multiplayer from one scenario to the next, so building up your army's strength is possible only within the scenario.<br />
<br />
===== Join Official Server =====<br />
By selecting this option, you will be connected to the official Wesnoth server via the Internet. This option will allow you to play with other players from around the world.<br />
<br />
===== Connect to Host/Server =====<br />
This option allows you to connect to other computers or servers, including the official Wesnoth server. You may use this option to join a multiplayer game via a local access network (LAN).<br />
<br />
===== Host Networked Game =====<br />
This option allows you to create a game that can be joined by other players via a LAN network.<br />
<br />
===== Local Game =====<br />
This option allows you to play a game involving 1 computer only. You may still assign control for other sides to other players/AI.<br />
<br />
=== The Game Screen ===<br />
<br />
Regardless of whether you are playing a scenario or a campaign, the basic layout of the game screen is the same. The majority of the screen is filled with a map which shows all of the action that takes place in the game. Around the map are various elements which provide useful information about the game and are described in more detail below.<br />
<br />
Across the top of the screen from left to right are the following items:<br />
#Menu button<br />
#Actions button<br />
#Turn counter *<br />
#Your gold<br />
#Your total villages<br />
#Your total units<br />
#Your upkeep<br />
#Your income<br />
#Timer or clock<br />
#Current hex type<br />
#Current hex position<br />
<br />
Down the right of the screen from top to bottom are:<br />
#Full map, scaled *<br />
#Time of day indicator<br />
#Unit profile for last selected unit*<br />
#End Turn button *<br />
<br />
(Items marked with a * are currently undocumented)<br />
<br />
*Menu button: Displays a drop-down menu with the following options:<br />
<br />
#Scenario Objectives: Lists the victory and defeat conditions.<br />
#Statistics<br />
#Unit List: Lists your active units, including their map position.<br />
#Status Table: Summary list of visible player units, villages, income etc.<br />
#Save Game: Write the current game position to disk.<br />
#Load Game<br />
#Preferences: see [[PlayingBattleForWesnoth#Preferences|the Manual]] for details.<br />
#Back to: Return to previous turns without opening the Load Game dialog. Not available in all games.<br />
#Help<br />
#Quit Game: Close the game, without saving, and return to the Main menu.<br />
<br />
*Actions button: Displays a drop-down menu with the following options:<br />
#Next unit<br />
#Recruit: Lists units your commander can recruit from a keep.<br />
#Recall (Campaign only): Lists units your commander can recall from a keep.<br />
#Show enemy moves<br />
#Best possible enemy moves<br />
#End Turn: On your turn, select it to end your turn.<br />
<br />
*Your gold, villages, units, upkeep, and income<br />
:Quick way to check how your army is doing. A negative income means you'll lose gold, a positive means you gain gold. Upkeep is the gold you pay your units. Villages shows how many you own, each village will give you Gold.<br />
<br />
*Current hex<br />
:Shows the terrain type and position of the hex pointed to by the mouse. If a unit is on the hex, its resistance on that terrain is shown after the position. The position is in column, row order.<br />
<br />
*Time of day indicator<br />
:Putting your mouse over the indicator will bring up a tooltip showing the effect of the time of day. Wesnoth has a 6-turn day and different alignments have bonuses depending on the time of day.<br />
<br />
==== Recruit and Recall ====<br />
When you first start a scenario or campaign you will only have a few units on the map. One of these will be your commander (identified by a little crown icon). Your commander is usually placed in a castle on a special hex called a keep. Whenever your commander is on a keep (not only your own, but also the keep of any enemy castles you capture) and you have enough gold, you can recruit units for your army. In later scenarios you can recall experienced units that survived earlier scenarios. From here, you can start to build your army to conquer the enemy.<br />
<br />
The first thing you will probably want to do is recruit your first unit. Press 'ctrl-r' (or right click on an empty castle hex and select 'recruit') and you will be able to recruit a unit from a list of all the units available to you. Each recruit is placed on an empty castle square. Once you have filled the castle, you cannot recruit any more until units move off. Your opponent's commander is similarly placed on its castle keep and will begin by recruiting its troops -- so don't dilly-dally looking at the scenery, there's a battle to be won.<br />
<br />
At the end of each successful scenario, all your remaining troops are<br />
automatically saved. At the start of the next scenario you may<br />
recall them in a similar way to recruiting. Recalled troops are often more<br />
experienced than recruits and usually a better choice.<br />
<br />
==== Your Army ====<br />
<br />
All game types use the same soldiers, called units. Each unit is identified<br />
by Race, Level, and Class. Each unit has strengths and weaknesses, <br />
based on their Resistance, current Terrain, and Level. <br />
See http://units.wesnoth.org/<br />
<br />
==== Life and Death - Experience ====<br />
<br />
As your troops gain battle experience, they will learn more skills and<br />
become stronger. They will also die in battle, so you'll need to<br />
recruit and recall more when that happens. But choose wisely, for each has<br />
strengths and weaknesses a cunning opponent will quickly exploit.<br />
<br />
==== Money ====<br />
Your army does not fight for free. It costs you money to recruit units and money to maintain them. You start each scenario with money carried over from previous scenarios (although each scenario ensures you have at least a minimum amount of gold to start if you didn't carry over enough from previous scenarios) and can gain more by meeting scenario objectives quickly and, during a scenario, by controlling villages. Each village you control will give you two gold pieces income per turn. When you first start a scenario it is usually worthwhile to gain control of as many villages as you can to ensure you have sufficient income to wage war. You can see your current gold and current income at the top of the screen as described in the section on [[#The_Game_Screen|the Game Screen]]. More information can be found in [[PlayingBattleForWesnoth#Gold|the manual]].<br />
<br />
==== Save and Load ====<br />
At the start of each scenario, you have the option to save it. <br />
If you are defeated, you may load it and try again. Once you have succeeded, <br />
you will again be asked to save the next scenario and play that. <br />
If you have to stop playing during a scenario, you can save your turn<br />
and load it again later. Just remember, a good BFW player never needs to<br />
save '''during''' a scenario. However, most beginners tend to do so rather<br />
often. ;)<br />
<br />
=== Getting the Most Fun Out of the Game ===<br />
<br />
Remember, the idea of a game is to have fun! Here are some recommendations<br />
from the development team on how to get the most fun out of the game:<br />
<br />
* Consider playing the campaign on 'Medium' difficulty level, especially if you have prior experience with strategy games. We feel you'll find it much more rewarding.<br />
* Don't sweat it too much when you lose some units. The campaign was designed to accommodate the player losing some units along the way.<br />
* Don't abuse saved games. Long ago, Wesnoth only allowed saving the game at the end of a scenario. Mid-scenario saving was added as a convenience to use if you had to continue the game another day, or to protect against crashes. We do not recommend loading mid-scenario saved games over and over because your White Mage keeps getting killed. Learn to protect your White Mage instead, and balance risks! That is part of the strategy.<br />
* If you must load a saved game, we recommend going back to the start of the scenario, so that you choose a new strategy that works, rather than simply finding random numbers that favor you.<br />
* But remember, the aim is to have fun! You may have different tastes than the developers, so do what you enjoy most! If you enjoy loading the saved game every time you make a mistake, looking for the 'perfect' game where you never lose a unit, by all means, go right ahead!<br />
<br />
==== At the start of a scenario ====<br />
* First, read the scenario objectives. Sometimes you do not have to kill enemy leaders; instead it is enough that you survive for a certain number of turns, or pick up a particular object<br />
* Look at the map: the terrain, the position of your leader and the other leader(s).<br />
* Then, begin to recruit units. Cheap units are useful to soak up the first wave of an enemy's attack; advanced units can then be brought in as support. Fast units can be used as scouts, for exploring the map and to quickly conquer villages.<br />
<br />
==== During the scenario ====<br />
* Try to capture and keep control of as many villages as possible to keep the gold coming in<br />
* Keep units in packs so the enemy cannot attack from as many sides, and so you can outnumber each enemy unit. Put your units in a line so that the enemy cannot attack any one of your units from more than two sides.<br />
* Different units have different strengths and weaknesses depending on terrain and who they are attacking; right click on units and select "Describe unit" to learn more <br />
* You can use lower level units as cannon fodder, to slow down enemy. e.g. you can use them to block enemy reaching your important units<br />
* You can cause damage to enemies with advanced units and then finish them with lower level units - to give them more experience (and finally make them advance to next level)<br />
* When you have a White Mage (advances from Mage) or Druid (advances from Shaman), put it in the middle of a circle of units to heal them as they move across the map (Shamans can do this too, but not as well)<br />
* Losing units is expected, even advanced units<br />
* Time of day really matters:<br />
** lawful units do more damage at day and less damage at night<br />
** chaotic units do more damage at night and less damage at day<br />
** remember to always check the time of day on the right side of the screen. Plan ahead - think about what it's going to be next turn as well as this turn.<br />
* Some units are resistant or vulnerable to different kind of attacks. Mounted units are weak vs pierce attacks. Fire and holy (arcane) attacks destroy undead. To see how much a unit resists an attack type, right click on the unit, select 'Unit Description', then select 'Resistance'. It will show you how resistant a unit is to different types of attacks.<br />
<br />
==== Healing ====<br />
An important part of succeeding at Battle for Wesnoth is keeping your units healthy. When your units take damage you can heal them by moving them onto villages or next to special healing units (e.g. the Elvish Shaman and White Mage). Some other units you will encounter, such as Trolls, have the ability to heal themselves naturally. You can find more detailed information about healing in [[PlayingBattleForWesnoth#Healing|Chapter 2]].<br />
<br />
==== Winning a scenario ====<br />
* Advanced units are needed to quickly kill enemy commanders, and to avoid losing lots of units.<br />
* The quicker you win a scenario, the more gold you get; you will get more gold from winning early than from all of the map's villages for the rest of the turns.<br />
* Killing all enemy leaders usually gives instant victory.<br />
<br />
==== More general tips ====<br />
* After slaughtering scenarios (where you take lots of punishment) there are usually "breathing room" scenarios where you can rather easily gain some gold and experience (advanced units)<br />
* Advanced units have higher upkeep than lower level units (1 gp per level), loyal units are an exception.<br />
<br />
<noinclude><br />
<br />
=== See Also ===<br />
* [[WesnothManual]]<br />
* [[AdvancedTactics]]<br />
<br />
<br />
{{Play}}<br />
</noinclude></div>Suokkohttps://wiki.wesnoth.org/index.php?title=Project&diff=26436Project2008-08-15T08:38:44Z<p>Suokko: reverted spam</p>
<hr />
<div>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].<br />
<br />
There are also Wesnoth pages in other languages:<br />
French ([http://tournoiswesnoth.frbb.net/ 1], [http://wesnothfr.ww7.be/ 2]),<br />
[http://wesnoth.fw.hu/ Hungarian],<br />
[http://wikiwiki.jp/wesnoth/ Japanese],<br />
[http://perso.wanadoo.es/wesnoth/ Spanish],<br />
[http://www.wesnoth.cn Chinese],<br />
[http://www.wesnoth.com.pl Polish].<br />
<br />
== Artists ==<br />
Graphic artists and musicians usually meet on the [http://www.wesnoth.org/forum/ forum].<br />
* [http://www.wesnoth.org/forum/viewforum.php?f=9 Artwork development forum]<br />
* [http://www.wesnoth.org/forum/viewforum.php?f=14 Music development forum]<br />
<br />
== Developers ==<br />
Coders can help fixing [http://bugs.wesnoth.org bugs], adding new features...<br />
* [[CodingStandards]]<br />
* [[PatchSubmissionGuidelines]]<br />
* [[Roadmap]]<br />
* [http://devdocs.wesnoth.org/ Documentation] - generated and uploaded two times every day (05:05 and 17:05 GMT+2).<br />
* [[WesnothSVN]]<br />
* [[DeveloperGuide]] / [[DeveloperResources]]<br />
<br />
== Translators ==<br />
* [[WesnothTranslations]]<br />
* [http://gettext.wesnoth.org Statistics]<br />
* [[WesCamp|Translating User made Campaigns (featuring wescamp-i18n)]]<br />
<br />
[[Category:Development]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=Distributing_content&diff=25899Distributing content2008-06-04T13:32:56Z<p>Suokko: /* The Campaign Server */</p>
<hr />
<div>== The Forum ==<br />
<br />
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.<br />
<br />
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].<br />
<br />
== The Campaign Server ==<br />
<br />
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.<br />
<br />
Once you are ready to publish, here is how you access the campaign server:<br />
# Open Wesnoth<br />
# Select "Get Add-ons" from the main menu<br />
# Select "Publish Campaign: ''Your Campaign Name''" (the last entry in the list of campaigns)<br />
<br />
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:<br />
# A .cfg file, for example MyCampaign.cfg<br />
# A .pbl file, for example MyCampaign.pbl<br />
# A folder, for example MyCampaign<br />
<br />
==== General Reading ====<br />
* [[BuildingCampaignsThePBLFile|General information about the .pbl file]] - It has a campaign flavor, but it is adaptable to any content<br />
* [[PblWML|Syntax reference for the .pbl file]]<br />
<br />
==== Content-specific instructions ====<br />
* Campaign - see the [[BuildingCampaigns|Buidling Campaigns Article]]<br />
** [[BuildingCampaignsDistribution|About distributing campaigns]]<br />
* Multiplayer era - see the [[BuildingFactions#Adding_a_whole_new_era_with_its_own_factions_-_modular|MP Era Article]]<br />
* Unit pack - see the [[BuildingUnits#Distributing_your_unit|Units Article]]<br />
* Map pack - see the<br />
* Others?<br />
<br />
(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 "./wesnoth/userdata" folder, how do I publish my Campaigns?-Drake Raider)<br />
<br />
(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)<br />
<br />
==== License ====<br />
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 "OK" to this statement: "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."<br />
<br />
== See Also ==<br />
<br />
* [[Create]]<br />
* [[BuildingCampaignsDistribution]]<br />
* [[BuildingCampaignsThePBLFile]]<br />
* [[PblWML]]<br />
* [[Wesnoth:Copyrights]]<br />
<br />
[[Category:Create]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=User:Shadowm&diff=25608User:Shadowm2008-05-13T23:35:10Z<p>Suokko: /* My ideas for improving the add-ons client in-game */</p>
<hr />
<div>Hello, I am Ignacio R. Morelle, more known as the Shadow Master, the Lord of the Shikadi. I'm 18 years old as of this writing (2008-05-05), I live in Santiago de Chile, I'm a physics student and I like to do stuff with computers.<br />
<br />
I am currently developer for the Battle for Wesnoth project, by my Gna account name "shadowmaster" and forum account "Shadow Master", and I've been lately rather active adding or seeking to add new features to the game's actual program (C++ part) that have been underestimated for ages.<br />
<br />
== Things I made for Wesnoth (1.3.x/1.4.x) ==<br />
* Implemented random_gender for [SingleUnitWML]. This could be done with more complex WML, but only at event level (i.e. it was impossible to randomize a unit's gender at '''[side]''' level).<br />
* Implemented gender-selection for Multiplayer games' leaders, including the choice of letting the game decide upon a random one when applicable. I received valuable GUI design help from Noyga.<br />
* Extended the '''[store_side]''' and '''[modify_side]''' WML features, including the possibility of quering/setting fog, shroud, user_team_name, recruit lists, controller type and village_gold information.<br />
* Implemented :shroud and :fog debug-mode commands.<br />
* Fixed a portrait advancement bug which was probably as old as female units' implementation, but passed unnoticed until kitty made generic gender-specific portraits for mainline elves.<br />
* Many other bugfixes I don't recall.<br />
* Added Mushroom floor tile with local light (+25%) for consistency with other cave tiles.<br />
<br />
== Things I made for Wesnoth (1.5.x/1.6.x) ==<br />
* Extended '''[modify_side]''' to be possible to override/merge shroud_data. This is still experimental though.<br />
* Made it possible to use '''[variable]''' boolean_not_equals.<br />
* Implemented '''[set_variable]''' string_length to query upon a string's length after doing (complex) variable substitution.<br />
* Many other bugfixes I don't recall.<br />
<br />
== My Website ==<br />
<br />
My website is were you'll learn about my projects and other stuff I do: [http://shadowm2006.sitesled.com Shadow Master's Website at Sitesled.com]. It is kind of abandoned, though, because I'm just too lazy to update it.<br />
<br />
Since most of my programs are open-source, you can find them at [http://shadowm.rewound.net/src my source code repository].<br />
<br />
== My ideas for improving the add-ons client in-game ==<br />
<br />
I'm working on moving the built-in client for downloading user made content to its own area of the source code for later refactoring. This later step involves some extensions both to [CampaignWML] and [PblWML], and possible modifications to the Campaign server (campaignd).<br />
<br />
[publish_information]<br />
multiplayer= yes/no (default: no)<br />
type=scenario/campaign/era/map_pack/other/resources/unclassified (default: unclassified)<br />
[/publish_information]<br />
<br />
One word: Autoupdates in background! Maybe there should be type=multiplayer,campaign,music,era,... instead of multipalyer=yes/no.<br />
[[User:Suokko|coren]]<br />
<br />
=== Content types ===<br />
<br />
* "scenario" type includes multiplayer stand-alone scenarios or single-player campaigns composed of a single scenario.<br />
* The "era" type includes MP eras. SP eras could be possible under this scheme, although that would be... weird to make as UMC developer.<br />
* The "map_pack" type is for that, map packs, often in the multiplayer context. Single player map_packs (multiplayer="" type=map_pack) are of course possible, even if they are useless in gameplay terms.<br />
* The "other" type is for... ???<br />
* The "resources" type would be oriented towards custom unit sets for campaign designers, music/sound packs, or assorted stuff, always in UMC development context.</div>Suokkohttps://wiki.wesnoth.org/index.php?title=SideWML&diff=20473SideWML2008-01-04T08:00:16Z<p>Suokko: /* the [side] tag */</p>
<hr />
<div>{{WML Tags}}<br />
== the [side] tag ==<br />
<br />
The [side] tag is used to describe a side in a particular scenario.<br />
<br />
The following keys are recognized:<br />
<br />
* ''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.<br />
<br />
* ''controller'' how moves for this side should be inputted.<br />
** 'ai' the Wesnoth AI makes this side's moves. This is the default setting.<br />
** 'human' a player controls this side's moves.<br />
** '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.)<br />
<br />
* ''no_leader'' if "no" (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.<br />
<br />
* ''type'' the unit type of the side's leader. This must be present if ''no_leader'' is not set to "yes." ''Description'', ''type'', ''x'', ''y'', ''profile'', and ''hitpoints'' are examples of keys from [[SingleUnitWML]] that will describe the leader if placed within the [side] tag.<br />
<br />
* ''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.<br />
<br />
* ''unrenamable'' if "no" (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.<br />
<br />
* ''recruit'' a list of unit types. At the beginning of the scenario, the side gains recruitment of these units.<br />
<br />
* ''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.)<br />
<br />
* ''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]]).<br />
<br />
* ''fog'' if 'yes', this side cannot see any tiles it is not within vision of, except at the start.<br />
<br />
* ''shroud'' if 'yes', this side cannot see any tiles it has not moved within sight of.<br />
<br />
* ''shroud_data'' describes the area which this team has de-shrouded. An example:<br />
|<br />
|00011111000<br />
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]].<br />
<br />
* ''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'.<br />
<br />
* ''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.<br />
<br />
* ''team_name'' a non translatable string representing the team's description. Sides with the same team_name are allied. Default ''side''.<br />
<br />
* ''user_team_name'' a translatable string representing the team's description. This has no effect on alliances. Default ''team_name''.<br />
<br />
* ''colour'' if you want side 4 to be the same colour as side 2 normally is, put colour=2. <br />
** The default list of numbers and corresponding colours can be found in data/team_colors.cfg.<br />
** Note that in Wesnoth 1.3.4 and later releases, the IDs of the color ranges shipped with Wesnoth are descriptive names (e.g. 'teal', 'orange', etc.), declared in data data/core/team_colors.cfg. Old numeric IDs are kept for backwards compatibility.<br />
<br />
* ''flag'' a custom flag animation to use instead of the default one to mark captured villages. {{DevFeature}} an automatic side-coloring is applied.<br />
** 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''<br />
<br />
* ''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.<br />
<br />
* ''village_gold'' the amount of gold given to this side per village it controls per turn. Default specified in ''village_income'', '''[game_config]''' ([[GameConfigWML]]).<br />
<br />
* ''share_maps'' whether sides allied with this side see all terrains that this side sees, if they are on shroud.<br />
<br />
* ''share_view'' whether sides allied with this side see the units that this side sees, if they are on FoW (fog).<br />
<br />
* ''disallow_observers'' {{DevFeature}} prevents observers from seeing this side turn. (default: no)<br />
<br />
* ''name'', ''id'', ''leader'' not used; see [[EraWML]].<br />
<br />
* ''music'' music to play for this player. Default specified in [scenario] (see [[ScenarioWML]]).<br />
<br />
* '''[ai]''' if '''controller=ai''', gives parameters to the AI. See [[AiWML]].<br />
<br />
* '''[village]''' describes a village the side begins in control of.<br />
** ''x'', ''y'' the location of the village.<br />
<br />
* '''[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]'''.<br />
<br />
<br />
The following keys are multiplayer only:<br />
<br />
* ''allow_player'' if false then this side will not be allowed to be modified and will be hidden during game creation.<br />
<br />
* ''team_lock'' if true then this side's team is not allowed to be modified.<br />
<br />
* ''colour_lock'' if true then this side's color is not allowed to be modified.<br />
<br />
* ''gold_lock'' if true then this side's gold is not allowed to be modified. <br />
<br />
* ''income_lock'' if true then this side's income is not allowed to be modified.<br />
<br />
== See Also ==<br />
* [[EraWML]]<br />
* [[ScenarioWML]]<br />
* [[ReferenceWML]]<br />
<br />
<br />
[[Category: WML Reference]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=InterfaceActionsWML&diff=20310InterfaceActionsWML2007-12-26T08:30:37Z<p>Suokko: /* [message] */</p>
<hr />
<div>{{WML Tags}}<br />
== Interface actions ==<br />
<br />
Interface actions are actions that do not have an effect on gameplay;<br />
instead, they show something to the player. The main interface tags<br />
are '''[message]''' and '''[objectives]''', but several other tags affect<br />
the interface also.<br />
<br />
== [message] ==<br />
The most commonly used interface action is [message], which displays a message to the user in a dialog box. It can also be used to take input from the user.<br />
<br />
The following key/tags are accepted for [message]:<br />
* standard unit filter - the unit whose profile and name are displayed. If no unit matching this filter is found, the message is not displayed (The unit has probably been killed).<br>'''[message]''' elements should be constructed so that it is either guaranteed that a certain unit is alive, or so that dialog flows smoothly even if the message isn't displayed.<br />
<br />
* ''speaker'' an alternative to standard unit filter<br />
** 'narrator' the dialog box is displayed without a caption for the unit speaking or a unit image<br />
** 'unit' the primary unit for the event is speaking<br />
** 'second_unit' the secondary unit for the event is speaking<br />
<br />
* ''message'' (translatable) the text to display to the right of the image. ''message'' is sometimes multiple lines; if it is, be sure to use quotes(''' ' ''' or ''' " ''')<br />
* ''side_for'' (default: all sides) comma seperated list of sides for who message is shown. {{DevFeature}}<br />
* ''image'' (default: profile image of speaker) the image to display next to the message.<br />
* ''caption'' (default: name of speaker) the caption to display under the image. Name to be displayed.<br />
* ''duration'' (default: 10) the minimum number of frames for this message to be displayed. (A frame lasts about 30 milliseconds.) During this time any dialog decisions will be disregarded. {{DevFeature}}<br />
* ''sound'' a sound effect (wav file) to play as the message is displayed. This can be a comma-separated list, from which one will be randomly chosen.<br />
* '''[option]''' zero or more '''[option]''' elements may be present. If '''[option]''' elements are present, then each option will be displayed in a menu for the user to select one option.<br />
** ''message'' (translatable) the text displayed for the option (see [[DescriptionWML]])<br />
** '''[show_if]''' if present then this option will only be displayed if the conditional statement in this tag is passed (see [[InternalActionsWML]]) {{DevFeature}}<br />
** '''[command]''' an element containing actions which are executed if the option is selected.<br />
<br />
Text formatting options for '''[message]'''. These can also be used in unit names (user_description), objectives, and such.<br />
* An asterisk (*) as the first character causes the line to be boldfaced.<br />
* An at symbol (@) as the first character causes the line to be green, as done with victory conditions.<br />
* A pound symbol (#) as the first character causes the line to be red, as done with defeat conditions.<br />
* A backquote (`) as the first character causes the line to be smaller.<br />
* If used, the caption key text is boldfaced.<br />
* An RGB colour code in the beginning causes the line to be the given colour. This can still be preceded by the above characters. Example: ''message=_"<255,0,0>Red!"''<br />
<br />
== [objectives] ==<br />
The other tag used for plot development is '''[objectives]'''.<br />
The '''[objectives]''' tag overwrites any previously set objectives,<br />
and displays text which should describe the objectives of the scenario.<br />
Scenario objectives are displayed on the player's first turn after the tag is used,<br />
or as part of the event if it triggers during that player's turn.<br />
Objectives can also be accessed at any time in a scenario using the<br />
"Scenario Objectives" game menu option, making this tag useful for<br />
scenario-specific information that the player may need to refer to during play.<br />
<br />
This tag renders the ''objectives'' attribute of [scenario] obsolete (see ''objectives'', [[ScenarioWML]]).<br />
Instead of using ''objectives'', use '''[objectives]''' to set scenario objectives inside a prestart event.<br />
It can also be used to overwrite the starting objectives mid-scenario.<br />
<br />
Attributes of '''[objectives]''':<br />
* ''side'' Default '0'. The side to set the objectives for. A value of 0 sets objectives for all sides.<br />
* ''summary'' Displayed first in the objectives text, this should describe the basic objective for the overall scenario. Can be omitted.<br />
* ''note'' Displayed last in the objectives text, this is sometimes used for hints or additional information. Can be omitted.<br />
* ''victory_string'' Default ' _ "Victory:"', this text precedes the victory objectives.<br />
* ''defeat_string'' Default ' _ "Defeat:"', this text precedes the defeat objectives.<br />
* ''silent'' Default: not present. If set to "yes", the objectives are silently changed. Else, they will be shown to the user when appropriate.<br />
<br />
Tags of '''[objectives]''':<br />
* '''[objective]''' describes a win or loss condition. Most scenarios have multiple win or loss conditions, so use a separate [objective] subtag for each line; this helps with translations.<br />
** ''description'' text for the specific win or loss condition.<br />
** ''condition'' The color and placement of the text. Values are 'win'(colored green, placed after ''victory_string'') and 'lose'(colored red, placed after ''defeat_string'')<br />
<br />
== [set_menu_item] {{DevFeature}} ==<br />
This tag is used to add a custom option in the right-click context menu which can then be used to trigger arbitrary WML commands.<br />
<br />
* ''id'' the unique id for this menu item. If a menu item with this id already exists, it allows you to set specific changes to that item.<br />
* ''description'' the in-game text that will appear for this item in the menu.<br />
* ''image'' the image to display next to this item.<br />
* ''needs_select'' if ''yes'' (default ''no''), then the latest select event (see [[EventWML]]) that triggered before this menu item was chosen will be transmitted over the network before this menu item action will be. This only has any effect in networked multiplayer, and is intended to allow more elaborate menu item behaviour there without causing out of sync errors. If you don't know what this means, just leave it false.<br />
* '''[show_if]''' If present, the menu item will only be available if the conditional statement (see [[InternalActionsWML]]) within evaluates to true. When this is evaluated, the WML variables ''$x1'' and ''$y1'' will point to the location on which the context menu was invoked, so it's possible to for example only enable the option on empty hexes or on a particular unit.<br />
* '''[filter_location]''' contains a location filter similar to the one found inside Single Unit Filters (see [[FilterWML]]). The menu item will only be available on matching locations.<br />
* '''[command]''' contains the WML actions to be executed when the menu item is selected. Again, the WML variables ''$x1'' and ''$y1'' will point to the location on which the context menu was invoked on.<br />
<br />
== Other interface tags ==<br />
<br />
The following tags are also action tags:<br />
* '''[item]''' makes a graphical item appear on a certain hex. Note this only places the graphics for an item. It does not make the item do anything. Use a moveto event to make moving onto the item do something.<br />
** ''x'', ''y'' the location to place the item.<br />
** ''image'' the image (in ''images/ ''as .png) to place on the hex.<br />
** ''halo'' an image to place centered on the hex. Use this instead of ''image'' if the image is bigger than the hex.<br />
* '''[removeitem]''' removes any graphical items on a given hex<br />
** ''x'', ''y'' the hex to remove items off<br />
* '''[print]''' displays a message across the screen. The message will disappear after a certain time.<br />
** ''text'' (translatable) the text to display.<br />
** ''size'' (default=12) the pointsize of the font to use<br />
** ''duration'' (default=50) the length of time to display the text for. This is measured in the number of 'frames'. A frame in Wesnoth is usually displayed for around 30ms.<br />
** ''red'', ''green'', ''blue'' (default=0,0,0) the color to display the text in. Values vary from 0-255.<br />
* '''[move_unit_fake]''' moves an image of a unit along a certain path on the map. The path does not need to be a continuous list of adjacent hexes, so for example only the start and end points can be given, in which case the straightest line between those points will be calculated and used.<br />
** ''type'' the type of the unit whose image to use<br />
** ''x'' a comma-seperated list of x locations to move along<br />
** ''y'' a comma-seperated list of y locations to move along (x and y values are matched pairs)<br />
** ''side'' the side of the fake unit, used for team colouring the fake unit<br />
* '''[hide_unit]''' makes the given unit become invisible. Useful in conjunction with '''[move_unit_fake]''' to move a leader unit into position on-screen. Only one unit may be hidden at a time.<br />
** ''x'', ''y'' location of the unit to be hidden. (NOT a standard unit filter! Just x and y.)<br />
* '''[unhide_unit]''' stops the currently hidden unit from being hidden.<br />
* '''[scroll]''' Scroll a certain number of pixels in a given direction. Useful for earthquake/shaking effects.<br />
** ''x'', ''y'' the number of pixels to scroll along the x and y axis<br />
* '''[scroll_to]''' Scroll to a given hex<br />
** ''x'', ''y'' the hex to scroll to<br />
** ''check_fogged'' whether to scroll even to locations covered in fog or shroud. Possible values ''true'' (don't scroll to fog) and ''false'' (scroll even to fog), with ''false'' as the default.<br />
* '''[scroll_to_unit]''' Scroll to a given unit<br />
** standard unit filter<br />
** ''check_fogged'' whether to scroll even to locations covered in fog or shroud. Possible values ''true'' (don't scroll to fog) and ''false'' (scroll even to fog), with ''false'' as the default.<br />
* '''[sound]''' Plays a sound<br />
** ''name'' the filename of the sound to play (in ''sounds/'' as .wav or .ogg)<br />
* '''[music]''' Switches to playing different music<br />
** ''name'' the filename of the music to play (in ''music/'' as .ogg)<br />
** see [[MusicListWML]] for the correct syntax<br />
* '''[colour_adjust]''' tints the colour of the screen.<br />
** ''red'', ''green'', ''blue'' values from -255 to 255, the amount to tint by for each colour<br />
* '''[delay]''' pauses the game<br />
** ''time'' the time to pause in milliseconds<br />
* '''[redraw]''' redraws the screen (this normally isn't done during events, although some of the other interface actions cause the screen or parts of it to be redrawn).<br />
** ''side'' if used, recalculates fog and shroud for that side. Useful if you for example spawn friendly units in the middle of an event and want the shroud to update accordingly (otherwise units that spawn inside fog would remain invisible for the duration of the event, since the fog would not automatically get cleared around them).<br />
* '''[unit_overlay]''' sets an image that will be drawn over a particular unit, and follow it around<br />
** ''x'', ''y'' the location of the unit to overlay on<br />
** ''image'' the image to place on the unit<br />
* '''[remove_unit_overlay]''' removes a particular overlayed image from a unit<br />
** ''x'', ''y'' the location of the unit to remove an overlay from<br />
** ''image'' the image to remove from the unit<br />
* '''[animate_unit]''' uses the custom animation of a unit to animate it on screen (if the unit has the corresponding animation)<br />
** ''flag'' the key to find the good custom animation in the unit description see the '''[extra_anim]''' description in [[AnimationWML]]<br />
** '''[filter]''' a standard unit filter see [[FilterWML]] by default, the unit at the event location will be animated. You can use this tag to choose what unit to animate<br />
* '''[label]''' places a label on the map.<br />
** ''x'', ''y'' the location of the label<br />
** ''text'' what the label should say<br />
** ''team_name'' if specified, the label will only be visible to the given team.<br />
* '''[deprecated_message]''' {{DevFeature}} shows a deprecated message in the message area, this feature is only intended to be used to warn about deprecated macros in mainline. The message is not translatable.<br />
** ''message'' the message to show.<br />
* '''[debug_message]''' {{DevFeature}} outputs a message to Wesnoth's console output. Intended for campaign designers to output silent text to the console, without annoying the player; then, that text might contain information useful for later bug-reporting.<br />
** ''message'' the message to show<br />
** ''logger'' the Wesnoth engine output logger that should catch the text; this might be 'err' (the errors log level), 'warn'/'wrn' (the warnings log level) or anything else (the information log level). Not all information will be displayed depending on the log level chosen when starting Wesnoth.<br />
<br />
== See Also ==<br />
* [[DirectActionsWML]]<br />
* [[InternalActionsWML]]<br />
* [[EventWML]]<br />
* [[ReferenceWML]]<br />
<br />
<br />
[[Category: WML Reference]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=Template:WML_Tags&diff=13242Template:WML Tags2007-01-01T11:51:07Z<p>Suokko: </p>
<hr />
<div>{| class="gallery" style="width:175px;float: right;border: 1px solid #B48648; color:#B48648; font-size: 7pt;margin-left;10px;"<br />
|-<br />
|<br />
<span style="float: right;"><small class="editlink noprint plainlinksneverexpand">[{{SERVER}}{{localurl:Template:WML Tags|action=edit}} edit ]</small></span><br />
'''WML Tags'''<br />
<br />
|-<br />
|''A:'' <br />
[[AbilitiesWMLTechnical1.1.3|abilities]],<br />
[[CampaignWML#The_.5Babout.5D_tag|about]],<br />
[[StatisticalScenarioWML|advances]],<br />
[[UnitWML|advancefrom]],<br />
[[AiWML|ai]],<br />
[[DirectActionsWML|allow_recruit]],<br />
[[VariablesWML|array]],<br />
[[AttackWML|attack]],<br />
[[StatisticalScenarioWML|attacks]],<br />
[[AiWML|avoid]];<br />
|-<br />
|''B:'' <br />
[[CampaignWML#The_.5Bbinary_path.5D_tag|binary_path]],[[HelpWML|bold]];<br />
|-<br />
|''C:'' <br />
[[CampaignWML#The_.5Bcampaign.5D_tag|campaign]], [[DirectActionsWML|capture_village]], [[ReplayWML|choose]],<br />
[[InternalActionsWML|clear_variable]],<br />
[[InterfaceActionsWML|colour_adjust]],<br />
[[ReplayWML|command]];<br />
|-<br />
|''D:'' <br />
[[StatisticalScenarioWML|deaths]],[[UnitWML|defend]],[[StatisticalScenarioWML|defends]],<br />
[[UnitWML|defense]],<br />
[[InterfaceActionsWML|delay]],<br />
[[ReplayWML|destination]],<br />
[[DirectActionsWML|disallow_recruit]],<br />
[[InternalActionsWML|do]];<br />
|-<br />
|''E:'' <br />
[[UnitsWML|effect]],[[InternalActionsWML|else]],[[ReplayWML|end_turn]],<br />
[[DirectActionsWML|endlevel]],<br />
[[EraWML|era]],<br />
[[EventWML|event]],<br />
[[ThemeWML|expenses]];<br />
|-<br />
|''F:'' <br />
[[FilterWML|filter]], [[FilterWML|filter_second]], [[HelpWML|format]], [[AttackWML|frame]];<br />
|-<br />
|''G:'' <br />
[[GameConfigWML|game_config]], [[ScenarioWML|generator]], [[DirectActionsWML|gold]], [[ThemeWML|gold]];<br />
|-<br />
|''H:'' <br />
[[InternalActionsWML|have_unit]], [[HelpWML|header]], [[InterfaceActionsWML|hide_unit]];<br />
|-<br />
|''I:'' <br />
[[InternalActionsWML|if]], [[TimeWML|illuminated_time]], [[TerrainGraphicsWML|image]],<br />
[[HelpWML|img]], [[ThemeWML|income]], [[HelpWML|italic]], [[InterfaceActionsWML|item]];<br />
|-<br />
|''J:''<br />
[[HelpWML|jump]];<br />
|-<br />
|''K:'' <br />
[[DirectActionsWML|kill]], [[StatisticalScenarioWML|killed]];<br />
|-<br />
|''L:'' <br />
[[LabelWML|label]] ([[InterfaceActionsWML|map]], [[ThemeWML|theme]]), [[LanguageWML|language]], [[AiWML|leader_goal]];<br />
|-<br />
|''M:'' <br />
[[ThemeWML|main_map]],[[ThemeWML|menu]], [[InterfaceActionsWML|message]], [[ThemeWML|mini_map]],<br />
[[AttackWML|missile_frame]], [[SingleUnitWML|modifications]], [[DirectActionsWML|modify_side]],<br />
[[DirectActionsWML|modify_turns]], [[ReplayWML|move]], [[InterfaceActionsWML|move_unit_fake]], [[UnitWML|movement costs]],<br />
[[UnitsWML|movetype]], [[ScenarioWML|multiplayer]], [[EraWML|multiplayer_side]], [[InterfaceActionsWML|music]];<br />
|-<br />
|''N:'' <br />
[[FilterWML|not]], [[ThemeWML|num_units]];<br />
|-<br />
|''O:'' <br />
[[DirectActionsWML|object]], [[InterfaceActionsWML|objectives]], [[InterfaceActionsWML|objective]],<br />
[[ThemeWML|observers]], [[InterfaceActionsWML|option]], [[InternalActionsWML|or]];<br />
|-<br />
|''P:'' <br />
[[ThemeWML|panel]], [[IntroWML|part]], [[DirectActionsWML|place_shroud]], [[ThemeWML|position]],<br />
[[InterfaceActionsWML|print]], [[AiWML|protect_location]], [[AiWML|protect_unit]];<br />
|-<br />
|''R:'' <br />
[[UnitsWML|race]], [[ReplayWML|random]], [[ReplayWML|recall]], [[StatisticalScenarioWML|recalls]],<br />
[[ReplayWML|recruit]], [[StatisticalScenarioWML|recruits]], [[InterfaceActionsWML|redraw]],<br />
[[HelpWML|ref]], [[DirectActionsWML|remove_shroud]], [[InterfaceActionsWML|remove_unit_overlay]],<br />
[[InterfaceActionsWML|removeitem]], [[SavefileWML|replay]], [[SavefileWML|replay_start]],<br />
[[UnitWML|resistance]], [[ThemeWML|resolution]], [[ReplayWML|results]], [[InternalActionsWML|role]];<br />
|-<br />
|''S:'' <br />
[[SavefileWML|save]], [[ScenarioWML|scenario]],<br />
[[InterfaceActionsWML|scroll]], [[InterfaceActionsWML|scroll_to]],<br />
[[InterfaceActionsWML|scroll_to_unit]], [[HelpWML|section]], [[DirectActionsWML|set_recruit]],<br />
[[InternalActionsWML|set_variable]], [[SideWML|side]], [[ThemeWML|side_playing]], [[SavefileWML|snapshot]],<br />
[[InterfaceActionsWML|sound]], [[ReplayWML|source]], [[AbilitiesWMLTechnical1.1.3|specials]]<br />
[[StatisticalScenarioWML#The_.5Bstatistics.5D_tag|statistics]],<br />
[[ThemeWML|status]], [[DirectActionsWML|stone]], [[InternalActionsWML|store_gold]], [[InternalActionsWML|store_locations]],<br />
[[InternalActionsWML|store_starting_location]], [[InternalActionsWML|store_unit]], [[IntroWML|story]];<br />
|-<br />
|''T:'' <br />
[[AiWML|target]],<br />
[[StatisticalScenarioWML#The_.5Bteam.5D_tag|team]],<br />
[[DirectActionsWML|teleport]], [[UnitWML|teleport_anim]],<br />
[[TerrainWML|terrain]], [[DirectActionsWML|terrain]], [[TerrainGraphicsWML|terrain_graphics]], [[ScenarioWML#Test_scenario|test]],<br />
[[CampaignWML#The_.5Btextdomain.5D_tag|textdomain]], [[ThemeWML|theme]], [[InternalActionsWML|then]],<br />
[[TerrainGraphicsWML|tile]], [[TimeWML|time]], [[ScenarioWML|time_area]], [[ThemeWML|time_of_day]],<br />
[[HelpWML|topic]], [[HelpWML|toplevel]], [[SingleUnitWML|trait]], [[ThemeWML|turn]], [[ScenarioWML|tutorial]];<br />
|-<br />
|''U:'' <br />
[[InterfaceActionsWML|unhide_unit]], unit&nbsp;([[UnitWML|define]], [[SingleUnitWML|create]]),<br />
[[ThemeWML|unit_abilities]], [[ThemeWML|unit_alignment]], [[ThemeWML|unit_description]],<br />
[[ThemeWML|unit_hp]], [[ThemeWML|unit_image]], [[ThemeWML|unit_level]], [[ThemeWML|unit_moves]],<br />
[[InterfaceActionsWML|unit_overlay]], [[ThemeWML|unit_profile]], [[ThemeWML|unit_status]],<br />
[[ThemeWML|unit_traits]], [[ThemeWML|unit_type]], [[ThemeWML|unit_weapons]], [[ThemeWML|unit_xp]],<br />
[[UnitsWML|units]], [[DirectActionsWML|unstone]], [[DirectActionsWML|unstore_unit]], [[ThemeWML|upkeep]];<br />
|-<br />
| ''V:'' <br />
[[InternalActionsWML|variable]], [[VariablesWML|variables]], [[SideWML|village]], [[ThemeWML|villages]];<br />
|-<br />
| ''W:'' <br />
[[InternalActionsWML|while]]<br />
|}</div>Suokkohttps://wiki.wesnoth.org/index.php?title=LabelWML&diff=13241LabelWML2007-01-01T11:49:08Z<p>Suokko: Label WML tag</p>
<hr />
<div>{{WML Tags}}<br />
== The [label] tag == <br />
<br />
The following keys and tags are recognized in '''[label]''' tag:<br />
<br />
* ''text'' Visible text in label.<br />
<br />
* ''team_name'' Name of the team that can see the label. Label is visible to everyone if this is empty. {{DevFeature}}<br />
<br />
* ''colour'' colour of the label. Format is ''r,g,b'' where r, g and b are number between 0 and 255. {{DevFeature}}<br />
<br />
* ''x'' Location for the label<br />
<br />
* ''y'' Location for the label</div>Suokkohttps://wiki.wesnoth.org/index.php?title=ScenarioWML&diff=13224ScenarioWML2006-12-28T15:02:31Z<p>Suokko: /* The [scenario] tag */</p>
<hr />
<div>{{WML Tags}}<br />
== the toplevel tags [multiplayer], [test], [tutorial], [scenario] ==<br />
<br />
The top level tags '''[multiplayer]''', '''[test]''', '''[tutorial]''' and '''[scenario]''' are all formatted the same way.<br />
The difference between these tags is the way that the scenarios they describe are accessed.<br />
<br />
The keys ''id'' and ''next_scenario'' affect how scenarios can be accessed.<br />
Whenever a scenario is won, the scenario with id=''next_scenario'' of the same tag type will be played.<br />
Units from the first scenario will be available for recall in the second.<br />
<br />
Some scenarios can be played without playing other scenarios first<br />
(in this case there is nothing on the recall list).<br />
These scenarios are called ''initial scenario''s.<br />
<br />
A list of initial scenarios, and how to access them:<br />
<br />
* All '''[multiplayer]''' scenarios are initial scenarios listed in the multiplayer scenario selector screen (accessed by the "multiplayer" button).<br />
<br />
* The '''[test]''' scenario with the attribute '''id=test''' is an initial scenario. This test scenario can be accessed by running the game in test mode. (note: this is NOT the same as debug mode. It can be accessed using -t or --test) You can speed up scenario development a lot by this when used in a clever way: Move a scenario into ~campaigns (so that it will be read even without its campaign being loaded), change it to a [test] scenario, and change the ID to 'test'. Then run Wesnoth in test mode. This saves about a minute for each time you want to test changes to your scenario. However it should not be used for balancing as there will be no recallable units...<br />
<br />
* The '''[tutorial]''' scenario with the attribute '''id=tutorial''' is an initial scenario. The tutorial is accessed by clicking on the "tutorial" button.<br />
<br />
* Any '''[scenario]''' scenario with an id listed in the value of ''first_scenario'' in a campaign tag (see [[CampaignWML]]) is an initial scenario accessed by selecting that campaign after clicking on the "campaign" button.<br />
<br />
== The [scenario] tag ==<br />
<br />
The following keys and tags are recognized in '''[scenario]''' tags:<br />
<br />
* ''id'' A unique identifier for this scenario.<br />
<br />
* ''next_scenario'' The id of the scenario to load when the current one is won. This can be changed dynamically, to build non-linear campaigns.<br />
<br />
* ''description'' (translatable) only for multiplayer maps. Will show up as a tooltip when mousing over the minimap in the multiplayer setup screen.<br />
<br />
* ''name'' (translatable) is shown in several places in the level, including the intro screen. It is also the default name for saves on the level.<br />
<br />
* ''map_data'' inputs valid Wesnoth map data. See [[BuildingMaps]] for a description of the Wesnoth map syntax.<br />
<br />
* ''turns'' sets an event on turn ''turns'' causing the player to lose. Use ''-1'' to have no turn limit. See also [[EventWML]]<br />
<br />
* ''turn_at'' the turn to start on (default=1)<br />
<br />
* ''random_start_time'' controls random starting time of day. Possible values are yes and no or list of possible start times; starting from 1 to number of times. for example ''random_starting_time=2,3,5,6'' (default=no) {{DevFeature}}<br />
<br />
* ''music'' the music file relative to ''./music/'' to play during the scenario<br />
<br />
* '''[music]''' specifies the music tracks to play during this scenario, see [[MusicListWML]].<br />
<br />
* ''theme'' the UI theme that should be used when playing this scenario. See [[Using_custom_themes_in_campaigns]]<br />
<br />
* ''victory_when_enemies_defeated'' when this is set to 'yes'(default), the player wins once all non-allied units with '''canrecruit=1''' (aka leaders) are killed. (Currently this only controls the win condition for when all enemies are defeated; it does not prevent the player from losing if he has no leader.)<br />
<br />
* ''disallow_recall'' when this is set to 'no'(default), the player is allowed to recall units from previous scenarios.<br />
<br />
* ''experience_modifier'' the percentage that required XP to level up (for all units in the scenario) is multiplied by. Default 100. Note that when used in a campaign, weird things (like units being above the required XP to level up) can happen if this value is different for different scenarios.<br />
<br />
* '''[story]''' describes the intro screen. See [[IntroWML]]<br />
<br />
* '''[label]''' sets a label<br />
** ''x'', ''y'' location to set label<br />
** ''text'' the label<br />
<br />
* '''[time]''', '''[illuminated_time]''' how a day should progress. See [[TimeWML]]<br />
<br />
* '''[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<br />
** standard location filter<br />
** '''[time]''', '''[illuminated_time]''' how a day should progress in those locations. See [[TimeWML]]<br />
<br />
* '''[side]''' describes one player. See [[SideWML]]<br />
<br />
* '''[event]''' describes an event that may be triggered at a certain point of the scenario. See [[EventWML]]<br />
<br />
* ''map_generation'' another way to generate a map. The map will be generated randomly<br />
** "default" the default random map generator<br />
<br />
* '''[generator]''' if this is present, the map and scenario will be generated randomly. See [[MapGeneratorWML]]<br />
<br />
the following key is additionnally recognized in '''[multiplayer]''' scenarios:<br />
* ''allow_new_game'' {{DevFeature}} (default=yes) allow/prevent the scenario to be listed in the game creation interface. This is intended for extra scenarios in multiplayer campaigns<br />
<br />
== See Also ==<br />
<br />
* [[EventWML]]<br />
* [[ReferenceWML]]<br />
<br />
<br />
[[Category: WML Reference]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=ScenarioWML&diff=13223ScenarioWML2006-12-28T12:49:12Z<p>Suokko: /* The [scenario] tag */</p>
<hr />
<div>{{WML Tags}}<br />
== the toplevel tags [multiplayer], [test], [tutorial], [scenario] ==<br />
<br />
The top level tags '''[multiplayer]''', '''[test]''', '''[tutorial]''' and '''[scenario]''' are all formatted the same way.<br />
The difference between these tags is the way that the scenarios they describe are accessed.<br />
<br />
The keys ''id'' and ''next_scenario'' affect how scenarios can be accessed.<br />
Whenever a scenario is won, the scenario with id=''next_scenario'' of the same tag type will be played.<br />
Units from the first scenario will be available for recall in the second.<br />
<br />
Some scenarios can be played without playing other scenarios first<br />
(in this case there is nothing on the recall list).<br />
These scenarios are called ''initial scenario''s.<br />
<br />
A list of initial scenarios, and how to access them:<br />
<br />
* All '''[multiplayer]''' scenarios are initial scenarios listed in the multiplayer scenario selector screen (accessed by the "multiplayer" button).<br />
<br />
* The '''[test]''' scenario with the attribute '''id=test''' is an initial scenario. This test scenario can be accessed by running the game in test mode. (note: this is NOT the same as debug mode. It can be accessed using -t or --test) You can speed up scenario development a lot by this when used in a clever way: Move a scenario into ~campaigns (so that it will be read even without its campaign being loaded), change it to a [test] scenario, and change the ID to 'test'. Then run Wesnoth in test mode. This saves about a minute for each time you want to test changes to your scenario. However it should not be used for balancing as there will be no recallable units...<br />
<br />
* The '''[tutorial]''' scenario with the attribute '''id=tutorial''' is an initial scenario. The tutorial is accessed by clicking on the "tutorial" button.<br />
<br />
* Any '''[scenario]''' scenario with an id listed in the value of ''first_scenario'' in a campaign tag (see [[CampaignWML]]) is an initial scenario accessed by selecting that campaign after clicking on the "campaign" button.<br />
<br />
== The [scenario] tag ==<br />
<br />
The following keys and tags are recognized in '''[scenario]''' tags:<br />
<br />
* ''id'' A unique identifier for this scenario.<br />
<br />
* ''next_scenario'' The id of the scenario to load when the current one is won. This can be changed dynamically, to build non-linear campaigns.<br />
<br />
* ''description'' (translatable) only for multiplayer maps. Will show up as a tooltip when mousing over the minimap in the multiplayer setup screen.<br />
<br />
* ''name'' (translatable) is shown in several places in the level, including the intro screen. It is also the default name for saves on the level.<br />
<br />
* ''map_data'' inputs valid Wesnoth map data. See [[BuildingMaps]] for a description of the Wesnoth map syntax.<br />
<br />
* ''turns'' sets an event on turn ''turns'' causing the player to lose. Use ''-1'' to have no turn limit. See also [[EventWML]]<br />
<br />
* ''turn_at'' the turn to start on (default=1)<br />
<br />
* ''random_start_time'' controls random starting time of day. Possible values are yes and no or list of possible start times starting from 1. for example ''random_starting_time=2,3,5,6'' (default=no) {{DevFeature}}<br />
<br />
* ''music'' the music file relative to ''./music/'' to play during the scenario<br />
<br />
* '''[music]''' specifies the music tracks to play during this scenario, see [[MusicListWML]].<br />
<br />
* ''theme'' the UI theme that should be used when playing this scenario. See [[Using_custom_themes_in_campaigns]]<br />
<br />
* ''victory_when_enemies_defeated'' when this is set to 'yes'(default), the player wins once all non-allied units with '''canrecruit=1''' (aka leaders) are killed. (Currently this only controls the win condition for when all enemies are defeated; it does not prevent the player from losing if he has no leader.)<br />
<br />
* ''disallow_recall'' when this is set to 'no'(default), the player is allowed to recall units from previous scenarios.<br />
<br />
* ''experience_modifier'' the percentage that required XP to level up (for all units in the scenario) is multiplied by. Default 100. Note that when used in a campaign, weird things (like units being above the required XP to level up) can happen if this value is different for different scenarios.<br />
<br />
* '''[story]''' describes the intro screen. See [[IntroWML]]<br />
<br />
* '''[label]''' sets a label<br />
** ''x'', ''y'' location to set label<br />
** ''text'' the label<br />
<br />
* '''[time]''', '''[illuminated_time]''' how a day should progress. See [[TimeWML]]<br />
<br />
* '''[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<br />
** standard location filter<br />
** '''[time]''', '''[illuminated_time]''' how a day should progress in those locations. See [[TimeWML]]<br />
<br />
* '''[side]''' describes one player. See [[SideWML]]<br />
<br />
* '''[event]''' describes an event that may be triggered at a certain point of the scenario. See [[EventWML]]<br />
<br />
* ''map_generation'' another way to generate a map. The map will be generated randomly<br />
** "default" the default random map generator<br />
<br />
* '''[generator]''' if this is present, the map and scenario will be generated randomly. See [[MapGeneratorWML]]<br />
<br />
the following key is additionnally recognized in '''[multiplayer]''' scenarios:<br />
* ''allow_new_game'' {{DevFeature}} (default=yes) allow/prevent the scenario to be listed in the game creation interface. This is intended for extra scenarios in multiplayer campaigns<br />
<br />
== See Also ==<br />
<br />
* [[EventWML]]<br />
* [[ReferenceWML]]<br />
<br />
<br />
[[Category: WML Reference]]</div>Suokkohttps://wiki.wesnoth.org/index.php?title=ScenarioWML&diff=13222ScenarioWML2006-12-28T12:42:42Z<p>Suokko: /* The [scenario] tag */</p>
<hr />
<div>{{WML Tags}}<br />
== the toplevel tags [multiplayer], [test], [tutorial], [scenario] ==<br />
<br />
The top level tags '''[multiplayer]''', '''[test]''', '''[tutorial]''' and '''[scenario]''' are all formatted the same way.<br />
The difference between these tags is the way that the scenarios they describe are accessed.<br />
<br />
The keys ''id'' and ''next_scenario'' affect how scenarios can be accessed.<br />
Whenever a scenario is won, the scenario with id=''next_scenario'' of the same tag type will be played.<br />
Units from the first scenario will be available for recall in the second.<br />
<br />
Some scenarios can be played without playing other scenarios first<br />
(in this case there is nothing on the recall list).<br />
These scenarios are called ''initial scenario''s.<br />
<br />
A list of initial scenarios, and how to access them:<br />
<br />
* All '''[multiplayer]''' scenarios are initial scenarios listed in the multiplayer scenario selector screen (accessed by the "multiplayer" button).<br />
<br />
* The '''[test]''' scenario with the attribute '''id=test''' is an initial scenario. This test scenario can be accessed by running the game in test mode. (note: this is NOT the same as debug mode. It can be accessed using -t or --test) You can speed up scenario development a lot by this when used in a clever way: Move a scenario into ~campaigns (so that it will be read even without its campaign being loaded), change it to a [test] scenario, and change the ID to 'test'. Then run Wesnoth in test mode. This saves about a minute for each time you want to test changes to your scenario. However it should not be used for balancing as there will be no recallable units...<br />
<br />
* The '''[tutorial]''' scenario with the attribute '''id=tutorial''' is an initial scenario. The tutorial is accessed by clicking on the "tutorial" button.<br />
<br />
* Any '''[scenario]''' scenario with an id listed in the value of ''first_scenario'' in a campaign tag (see [[CampaignWML]]) is an initial scenario accessed by selecting that campaign after clicking on the "campaign" button.<br />
<br />
== The [scenario] tag ==<br />
<br />
The following keys and tags are recognized in '''[scenario]''' tags:<br />
<br />
* ''id'' A unique identifier for this scenario.<br />
<br />
* ''next_scenario'' The id of the scenario to load when the current one is won. This can be changed dynamically, to build non-linear campaigns.<br />
<br />
* ''description'' (translatable) only for multiplayer maps. Will show up as a tooltip when mousing over the minimap in the multiplayer setup screen.<br />
<br />
* ''name'' (translatable) is shown in several places in the level, including the intro screen. It is also the default name for saves on the level.<br />
<br />
* ''map_data'' inputs valid Wesnoth map data. See [[BuildingMaps]] for a description of the Wesnoth map syntax.<br />
<br />
* ''turns'' sets an event on turn ''turns'' causing the player to lose. Use ''-1'' to have no turn limit. See also [[EventWML]]<br />
<br />
* ''turn_at'' the turn to start on (default=1)<br />
<br />
* ''random_start_time'' controls random starting time of day. Possible values are yes and no or list of possible start times starting from 1. for example ''random_starting_time=2,3,5,6'' (default=no) {{DevFeature}}<br />
<br />
* ''music'' the music file relative to ''./music/'' to play during the scenario<br />
<br />
* '''[music]''' specifies the music tracks to play during this scenario, see [[MusicListWML]].<br />
<br />
* ''theme'' the UI theme that should be used when playing this scenario. See [[Using_custom_themes_in_campaigns]]<br />
<br />
* ''victory_when_enemies_defeated'' when this is set to 'yes'(default), the player wins once all non-allied units with '''canrecruit=1''' (aka leaders) are killed. (Currently this only controls the win condition for when all enemies are defeated; it does not prevent the player from losing if he has no leader.)<br />
<br />
* ''disallow_recall'' when this is set to 'no'(default), the player is allowed to recall units from previous scenarios.<br />
<br />
* ''experience_modifier'' the percentage that required XP to level up (for all units in the scenario) is multiplied by. Default 100. Note that when used in a campaign, weird things (like units being above the required XP to level up) can happen if this value is different for different scenarios.<br />
<br />
* '''[story]''' describes the intro screen. See [[IntroWML]]<br />
<br />
* '''[label]''' sets a label<br />
** ''x'', ''y'' location to set label<br />
** ''text'' the label<br />
<br />
* '''[time]''', '''[illuminated_time]''' how a day should progress. See [[TimeWML]]<br />
<br />
* '''[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<br />
** standard location filter<br />
** '''[time]''', '''[illuminated_time]''' how a day should progress in those locations. See [[TimeWML]]<br />
<br />
* '''[side]''' describes one player. See [[SideWML]]<br />
<br />
* '''[event]''' describes an event that may be triggered at a certain point of the scenario. See [[EventWML]]<br />
<br />
* ''map_generation'' another way to generate a map. The map will be generated randomly<br />
** "default" the default random map generator<br />
<br />
* '''[generator]''' if this is present, the map and scenario will be generated randomly. See [[MapGeneratorWML]]<br />
<br />
the following key is additionnally recognized in '''[multiplayer]''' scenarios:<br />
* ''allow_new_game'' (1.3+ or SVN trunk only) (default=yes) allow/prevent the scenario to be listed in the game creation interface. This is intended for extra scenarios in multiplayer campaigns<br />
<br />
== See Also ==<br />
<br />
* [[EventWML]]<br />
* [[ReferenceWML]]<br />
<br />
<br />
[[Category: WML Reference]]</div>Suokko