Difference between revisions of "AbilitiesWML"

From The Battle for Wesnoth Wiki
(The [specials] tag)
(minor updates)
Line 123: Line 123:
 
* '''id''': this ability will not be cumulative with other specials using this id.
 
* '''id''': this ability will not be cumulative with other specials using this id.
 
* '''active_on''': one of '''defense''' or '''offense'''; if left out, the special is active on both.
 
* '''active_on''': one of '''defense''' or '''offense'''; if left out, the special is active on both.
* '''apply_to''': one of '''self''','''opponent''','''attacker''','''defender''','''both'''. Determines who the effects of this special are applied to.
+
* '''apply_to''': one of '''self''','''opponent''','''attacker' ... \n
* '''[filter_adjacent]''': [[StandardUnitFilter]], which takes an extra key '''adjacent''', which is used to specify which adjacent hexes to filter on. '''adjacent''' is a comma seperated list of any combination of these directions: '''n''','''ne''','''se''','''s''','''sw''','''nw'''.
 
* '''[filter_adjacent_location]''': like [filter_adjacent], except that it filters on the locations rather than the units.
 
* '''[filter_self]''': the special will only be active if the owner matches this filter.
 
** '''[filter_weapon]''': a standard weapon filter.
 
* '''[filter_opponent]''': the special will only be active if the opponent matches this [[StandardUnitFilter]].
 
** '''[filter_weapon]''': a standard weapon filter.
 
* '''[filter_attacker]''': the special will only be active if the attacker matches this filter.
 
** '''[filter_weapon]''': a standard weapon filter.
 
* '''[filter_defender]''' the special will only be active if the defender matches this filter.
 
** '''[filter_weapon]''': a standard weapon filter.
 
* '''[filter_base_value]''': filters on the value before any modifications; uses the keys '''equals''', '''not_equals''', etc.
 
  
=== Macros for common weapon specials ===
+
== Bangladesh rickshaw puller starts clinic for the poor ==
  
* WEAPON_SPECIAL_BACKSTAB
+
Joynal Abedin still remembers the rainy and windy night when he saw his father die because there was no medical treatment. His village in the northern Mymensingh district of Bangladesh did not have any medical facility at that time, and the nearest hospital was about 20km (12 miles) away.
* WEAPON_SPECIAL_BERSERK
 
* WEAPON_SPECIAL_CHARGE
 
* WEAPON_SPECIAL_DRAIN
 
* WEAPON_SPECIAL_FIRSTSTRIKE
 
* WEAPON_SPECIAL_MAGICAL
 
* WEAPON_SPECIAL_MARKSMAN
 
* WEAPON_SPECIAL_PLAGUE
 
* WEAPON_SPECIAL_PLAGUE_TYPE TYPE
 
* WEAPON_SPECIAL_POISON
 
* WEAPON_SPECIAL_SLOW
 
* WEAPON_SPECIAL_STONE
 
* WEAPON_SPECIAL_SWARM
 
  
== See Also ==
+
[[http://goodvillenews.com/Bangladesh-rickshaw-puller-starts-clinic-for-the-poor-0zbEXF.html Bangladesh rickshaw puller starts clinic for the poor]]
  
* [[UnitTypeWML]]
+
[[http://goodvillenews.com/wk.html GoodvilleNews.com - good, positive news, inspirational stories, articles]]
* [[SingleUnitWML]]
 
* [[ReferenceWML]]
 
  
[[Category:WML Reference]]
+
== Teen Told to Clean His Room Finds Winning Lotto Ticket ==
 +
 
 +
A teenager from Midlothian has cleaned up on the National Lottery after finally cleaning up his messy bedroom. Ryan Kitchin scooped more than 50,000 after finding a winning lottery ticket in the room that his mother had been asking him to clean for weeks.
 +
 
 +
[[http://goodvillenews.com/Teen-Told-to-Clean-His-Room-Finds-Winning-Lotto-Ticket-AfWho8.html Teen Told to Clean His Room Finds Winning Lotto Ticket]]
 +
 
 +
[[http://goodvillenews.com/wk.html GoodvilleNews.com - good, positive news, inspirational stories, articles]]
 +
 
 +
== Researchers Nurture Innovative Biofuel Crops in Israels Desert ==
 +
 
 +
Fears of global warming and its impact on our environment have left scientists scrambling to decrease levels of atmospheric carbon we humans produce. Now, Tel Aviv University researchers are doing their part to reduce humanitys carbon footprint by successfully growing forests in the most unlikely place deep in Israels Aravah Desert.
 +
 
 +
[[http://goodvillenews.com/Researchers-Nurture-Innovative-Biofuel-Crops-in-Israels-Dese-DJR.html Researchers Nurture Innovative Biofuel Crops in Israels Desert]]
 +
 
 +
[[http://goodvillenews.com/wk.html GoodvilleNews.com - good, positive news, inspirational stories, articles]]
 +
 
 +
== Starting A Slow Story Movement ==
 +
 
 +
"It is said that we become the stories that we tell among ourselves. This might have been true before we became salespersons. For a few decades now, I think we have become numb to the stories that we tell among ourselves. So stories have become shorter and crisper to the length of a tweet. We are so committed to telling a story to the point that finally what remains is a dimensionless point.
 +
 
 +
[[http://goodvillenews.com/Starting-A-Slow-Story-Movement-V4LmVD.html Starting A Slow Story Movement]]
 +
 
 +
[[http://goodvillenews.com/wk.html GoodvilleNews.com - good, positive news, inspirational stories, articles]]
 +
 
 +
== The Importance of Imagination ==
 +
 
 +
While growing up, Id never really considered how important it is to be imaginative. Its a childhood profession, you could say. It comes naturally. Then we hit an age when were presented with a scantron of bubble-in options, a template for a CV that we need to create, and Excel. At that point, our learning has to fit into certain parameters: within that little bubble, within the one page limit, and within a tiny digital graph. So, what happens to our imagination?It seems to fade.
 +
 
 +
[[http://goodvillenews.com/The-Importance-of-Imagination-BvyL3n.html The Importance of Imagination]]
 +
 
 +
[[http://goodvillenews.com/wk.html GoodvilleNews.com - good, positive news, inspirational stories, articles]]

Revision as of 05:08, 5 August 2012

[edit]WML Tags

A:

abilities, about, achievement, achievement_group, add_ai_behavior, advanced_preference, advancefrom, advancement, advances, affect_adjacent, ai, allied_with, allow_end_turn, allow_extra_recruit, allow_recruit, allow_undo, and, animate, animate_unit, animation, aspect, attack (replay, weapon), attack_anim, attacks (special, stats), avoid;

B:

base_unit, background_layer, berserk, binary_path, break, brush;

C:

campaign, cancel_action, candidate_action, capture_village, case, chance_to_hit, change_theme, chat, checkbox, choice, choose, clear_global_variable, clear_menu_item, clear_variable, color_adjust, color_palette, color_range, command (action, replay), continue, core, credits_group, criteria;

D:

damage, damage_type, death, deaths, default, defend, defends, defense, delay, deprecated_message, destination, difficulty, disable, disallow_end_turn, disallow_extra_recruit, disallow_recruit, do, do_command, drains, draw_weapon_anim;

E:

editor_group, editor_music, editor_times, effect, else (action, animation), elseif, endlevel, end_turn (action, replay), enemy_of, engine, entry (credits, options), era, event, experimental_filter_ability, experimental_filter_ability_active, experimental_filter_specials, extra_anim;

F:

facet, facing, fake_unit, false, feedback, female, filter (concept, event), filter_adjacent, filter_adjacent_location, filter_attack, filter_attacker, filter_base_value, filter_condition, filter_defender, filter_enemy, filter_location, filter_opponent, filter_own, filter_owner, filter_radius, filter_recall, filter_second, filter_second_attack, filter_self, filter_side, filter_student, filter_vision, filter_weapon, filter_wml, find_path, fire_event, firststrike, floating_text, fonts, for, foreach, found_item, frame;

G:

game_config, get_global_variable, goal, gold, gold_carryover;

H:

harm_unit, has_ally, has_attack, has_unit, has_achievement, have_location, have_unit, heal_on_hit, heal_unit, healed_anim, healing_anim, heals, hide_help, hide_unit, hides;

I:

idle_anim, if (action, animation, intro), illuminates, image (intro, terrain), init_side, insert_tag, inspect, item, item_group;

J:

jamming_costs, join;

K:

kill, killed;

L:

label, language, leader, leader_goal, leadership, leading_anim, levelin_anim, levelout_anim, lift_fog, limit, literal, load_resource, locale, lock_view, lua;

M:

male, menu_item, message, micro_ai, missile_frame, modification, modifications, modify_ai, modify_side, modify_turns, modify_unit, modify_unit_type, move, move_unit, move_unit_fake, move_units_fake, movement_anim, movement costs, movetype, multiplayer, multiplayer_side, music;

N:

not, note;

O:

object, objective, objectives, on_undo, open_help, option, options, or;

P:

part, petrifies, petrify, place_shroud, plague, poison, post_movement_anim, pre_movement_anim, primary_attack, primary_unit, print, progress_achievement, put_to_recall_list;

R:

race, random_placement, recall (action, replay), recalls, recruit, recruit_anim, recruiting_anim, recruits, redraw, regenerate, remove_event, remove_item, remove_object, remove_shroud, remove_sound_source, remove_time_area, remove_trait, remove_unit_overlay, repeat, replace_map, replace_schedule, replay, replay_start, reset_fog, resistance (ability, unit), resistance_defaults, resolution, resource, return, role, rule;

S:

save, scenario, screen_fade, scroll, scroll_to, scroll_to_unit, secondary_attack, secondary_unit, section, select_unit, sequence, set_achievement, set_extra_recruit, set_global_variable, set_menu_item, set_recruit, set_specials, set_variable, set_variables, sheath_weapon_anim, show_if (message, objective, set_menu_item), show_objectives, side, skirmisher, slider, slow, snapshot, sound, sound_source, source (replay, teleport), special_note, specials, split, stage, standing_anim, statistics, status, store_gold, store_items, store_locations, store_map_dimensions, store_reachable_locations, store_relative_direction, store_side, store_starting_location, store_time_of_day, store_turns, store_unit, store_unit_defense, store_unit_defense_on, store_unit_type, store_unit_type_ids, store_villages, story, swarm, sub_achievement, switch, sync_variable;

T:

target, team, teleport (ability, action), teleport_anim, terrain, terrain_defaults, terrain_graphics, terrain_mask, terrain_type, test, test_condition, test_do_attack_by_id, text_input, textdomain, theme, then, tile, time, time_area, topic, toplevel, trait, transform_unit, traveler, true, tunnel;

U:

unhide_unit, unit (action, scenario), unit_overlay, unit_type, unit_worth, units, unlock_view, unpetrify, unstore_unit, unsynced;

V:

value, variable, variables, variant, variation, victory_anim, village, vision_costs, volume;

W:

while, wml_message, wml_schema;

Z:

zoom;

Abilities and their effects

There are two types of abilities: ones that apply to units (called abilities) and ones that only apply when using a particular attack (called specials or weapon specials). A unit may have multiple abilities and an attack can have multiple specials, but by convention only one weapon special should be assigned to any given attack.

The [abilities] tag

The following tags are used to describe an ability in WML:

  • [heals]: modifies the hitpoints of a unit at the beginning of the healer's turn
  • [regenerate]: modifies the hitpoints of a unit at the beginning of the unit's turn
  • [resistance]: modifies the resistance of a unit to damage
  • [leadership]: modifies the damage of a unit
  • [skirmisher]: negates enemy zones of control
  • [illuminates]: modifies the time of day adjacent to the affected units
  • [teleport]: allows the unit to teleport
  • [hides]: renders the unit invisible to enemies

Any other name is valid (for example [dummy]), but will result in an ability that does nothing but report it's there. These tags still use the same common keys and tags as every other ability. Note: a dummy ability must have an id for the name and description to display.

Common keys and tags for every ability

  • name: the name of the ability.
  • name_inactive: the name of the ability when inactive.
  • description: the description of the ability.
  • description_inactive: the description of the ability when inactive.
  • affect_self: if equal to 'yes', the ability will affect the unit that has it.
  • affect_allies: if equal to 'yes', the ability will affect allies in the specified adjacent hexes.
  • affect_enemies: if equal to 'yes', the ability will affect enemies in the specified adjacent hexes.
  • cumulative: if set to 'yes', this ability will be cumulative with the base value for this ability.
  • id: this ability will not be cumulative with other abilities using this id. Must be present if cumulative is anything other than 'yes'.
  • [adjacent_description]: contains all four of the above keys, which are used when an adjacent unit receives the ability.
  • [filter]: StandardUnitFilter If the unit owning the ability does not match this filter, the ability will be inactive.
  • [affect_adjacent]: each adjacent unit that does not match this filter will not receive its effects.
    • adjacent: a comma seperated list of any combination of these directions: n,ne,se,s,sw,nw.
    • [filter]: a StandardUnitFilter.
  • [filter_self]: if the owner of the ability does not match this filter, it will not receive the effects of the ability. [filter_self] takes a StandardUnitFilter as argument.
  • [filter_base_value]: filters on the value before any modifications; uses the keys equals, not_equals, etc. If several keys are used all have to match.

Extra keys used by the [heals] ability

  • value: the amount healed.
  • poison: can be one of slowed,cured.

Extra keys used by the [regenerate] ability

  • value: the amount healed.
  • poison: can be one of slowed,cured.

Extra keys and tags used by the [resistance] ability

  • value: set resistance to this value.
  • max_value: maximum resistance value. This value must be set in order for [resistance] to function.
  • add: adds to resistance.
  • sub: subtracts from resistance.
  • multiply: multiplies resistance value.
  • divide: divides resistance value.
  • apply_to: a list of damage types; if left out, the ability applies to all types.
  • active_on: one of 'defense' or 'offense'; if left out, the ability is active on both.

Extra keys used by the [leadership] ability

  • value: the percentage bonus to damage.

Extra keys used by the [illuminates] ability

  • value: the percentage bonus to lawful units.
  • max_value: the maximum percentage bonus given.
  • min_value: the minimum percentage bonus given.

Extra keys used by the [hides] ability

  • alert: the displayed text when the unit is discovered. Default "Ambushed!".

Extra tags used by the [teleport] ability

  • [tunnel] - a tunnel tag (see DirectActionsWML) (without the remove key) defining the tunneling source and target hexes, and maybe other conditions. (It automatically applies only to the unit with the ability.) You may use $teleport_unit inside the tunnel tag for filtering purposes.

Macros for common abilities

  • ABILITY_AMBUSH
  • ABILITY_CURES
  • ABILITY_HEALS
  • ABILITY_ILLUMINATES
  • ABILITY_LEADERSHIP_LEVEL_1 to ABILITY_LEADERSHIP_LEVEL_5
  • ABILITY_NIGHTSTALK
  • ABILITY_REGENERATES
  • ABILITY_SKIRMISHER
  • ABILITY_STEADFAST
  • ABILITY_SUBMERGE
  • ABILITY_TELEPORT

The [specials] tag

The [specials] tag goes inside the [attack] tag. It can contain the following tags:

  • [damage]: modifies the damage of a weapon
  • [attacks]: modifies the number of attacks of a weapon
  • [chance_to_hit]: modifies the chance to hit of a weapon
  • [slow]
  • [poison]
  • [stones] ([petrifies] in recent versions.)
  • [berserk]
  • [firststrike]
  • [drains]: heals the attacker half of the damage dealt
  • [heal_on_hit]: heals the attacker when an attack connects Template:DevFeature1.11
  • [plague]

Any other name is valid, but will result in an special that does nothing but report it's there.

Common keys and tags for every weapon special

  • name: the name of the special.
  • name_inactive: the name of the special when inactive.
  • description: the description of the special.
  • description_inactive: the description of the special when inactive.
  • value: the value to be used. Applies to [damage], [attacks], [chance_to_hit] and [berserk] (the maximum number of combat rounds).
    • Template:DevFeature1.11 Also applies to [drains] (percentage of damage drained) and [heal_on_hit] - negative values will harm the attacker, but not kill
  • add the number to add to the base value.
  • sub the number to subtract from the base value.
  • multiply: same as value, except that this multiplies the base value.
  • divide: same as value, except that this divides the base value.
  • cumulative: if set to 'yes', this special will be cumulative with the base value.
  • type: only usable in [plague], where it defines the unit type to be spawned on kill.
  • id: this ability will not be cumulative with other specials using this id.
  • active_on: one of defense or offense; if left out, the special is active on both.
  • apply_to: one of self,opponent,attacker' ... \n

Bangladesh rickshaw puller starts clinic for the poor

Joynal Abedin still remembers the rainy and windy night when he saw his father die because there was no medical treatment. His village in the northern Mymensingh district of Bangladesh did not have any medical facility at that time, and the nearest hospital was about 20km (12 miles) away.

[Bangladesh rickshaw puller starts clinic for the poor]

[GoodvilleNews.com - good, positive news, inspirational stories, articles]

Teen Told to Clean His Room Finds Winning Lotto Ticket

A teenager from Midlothian has cleaned up on the National Lottery after finally cleaning up his messy bedroom. Ryan Kitchin scooped more than 50,000 after finding a winning lottery ticket in the room that his mother had been asking him to clean for weeks.

[Teen Told to Clean His Room Finds Winning Lotto Ticket]

[GoodvilleNews.com - good, positive news, inspirational stories, articles]

Researchers Nurture Innovative Biofuel Crops in Israels Desert

Fears of global warming and its impact on our environment have left scientists scrambling to decrease levels of atmospheric carbon we humans produce. Now, Tel Aviv University researchers are doing their part to reduce humanitys carbon footprint by successfully growing forests in the most unlikely place deep in Israels Aravah Desert.

[Researchers Nurture Innovative Biofuel Crops in Israels Desert]

[GoodvilleNews.com - good, positive news, inspirational stories, articles]

Starting A Slow Story Movement

"It is said that we become the stories that we tell among ourselves. This might have been true before we became salespersons. For a few decades now, I think we have become numb to the stories that we tell among ourselves. So stories have become shorter and crisper to the length of a tweet. We are so committed to telling a story to the point that finally what remains is a dimensionless point.

[Starting A Slow Story Movement]

[GoodvilleNews.com - good, positive news, inspirational stories, articles]

The Importance of Imagination

While growing up, Id never really considered how important it is to be imaginative. Its a childhood profession, you could say. It comes naturally. Then we hit an age when were presented with a scantron of bubble-in options, a template for a CV that we need to create, and Excel. At that point, our learning has to fit into certain parameters: within that little bubble, within the one page limit, and within a tiny digital graph. So, what happens to our imagination?It seems to fade.

[The Importance of Imagination]

[GoodvilleNews.com - good, positive news, inspirational stories, articles]