<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Meowreka</id>
	<title>The Battle for Wesnoth Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Meowreka"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Meowreka"/>
	<updated>2026-06-09T17:00:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32603</id>
		<title>WML Abilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32603"/>
		<updated>2009-10-07T22:14:37Z</updated>

		<summary type="html">&lt;p&gt;Meowreka: /* Ripped Pocket */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Remember that you must include the WML ability code in every scenario where you intend them to work. Or include them in the unit file inside the [unit_type] tag.&lt;br /&gt;
&lt;br /&gt;
Some abilities require macros from [[WML_Utilities|Utilities]]. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Knockback  ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''knockback'' attack, it is immediately pushed one hex away from the attacker, at which point the combat ends. Exception: units in villages can't be knocked out of them.&lt;br /&gt;
&lt;br /&gt;
Examples that give ''knockback'' for every Drake Glider on their slam attack, and for the Shock Trooper named Jane:&lt;br /&gt;
 {KNOCKBACK (type=Drake Glider) slam}&lt;br /&gt;
 {KNOCKBACK description=Jane mace}&lt;br /&gt;
&lt;br /&gt;
Requires the macro ''OPPOSITE_SIDE''.&lt;br /&gt;
&lt;br /&gt;
 #define KNOCKBACK FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         [sound]&lt;br /&gt;
             name=ghoul-hit.wav&lt;br /&gt;
         [/sound]&lt;br /&gt;
 &lt;br /&gt;
         {OPPOSITE_SIDE $x2 $y2 $x1 $y1 target_hex}&lt;br /&gt;
 &lt;br /&gt;
         [store_locations]&lt;br /&gt;
             x,y=$x2,$y2&lt;br /&gt;
             terrain=AaBbDeLptUVvYZ&lt;br /&gt;
             variable=defender_in_village&lt;br /&gt;
         [/store_locations]&lt;br /&gt;
         [if]&lt;br /&gt;
             [have_unit]&lt;br /&gt;
                x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
             [/have_unit]&lt;br /&gt;
             [else]&lt;br /&gt;
                 {IF_VAR defender_in_village.length not_equals 1 (&lt;br /&gt;
                     [then]&lt;br /&gt;
                         {STORE_UNIT_VAR x,y=$x2,$y2 side side_of_defender}&lt;br /&gt;
 &lt;br /&gt;
                         [teleport]&lt;br /&gt;
                             [filter]&lt;br /&gt;
                                 x,y=$x2,$y2&lt;br /&gt;
                             [/filter]&lt;br /&gt;
 &lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/teleport]&lt;br /&gt;
 &lt;br /&gt;
                         [capture_village]&lt;br /&gt;
                             side=$side_of_defender&lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/capture_village]&lt;br /&gt;
 &lt;br /&gt;
                         {CLEAR_VARIABLE side_of_defender}&lt;br /&gt;
                     [/then]&lt;br /&gt;
                 )}&lt;br /&gt;
             [/else]&lt;br /&gt;
         [/if]&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE target_hex}&lt;br /&gt;
         {CLEAR_VARIABLE defender_in_village}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Charm ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''charm'' attack, it instantly jumps to the attacker's side, and returns to it's original side at the beginning of that side's turn. A charmed unit has 1 movement point and can attack.&lt;br /&gt;
&lt;br /&gt;
Example that makes all Troll Whelps have charm on their attack:&lt;br /&gt;
&lt;br /&gt;
 {CHARM (type=Troll Whelp) fist}&lt;br /&gt;
&lt;br /&gt;
 #define CHARM FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x1,$y1 side charmer_side}&lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x2,$y2 side charmed_side}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR charmer_side not_equals $charmed_side (&lt;br /&gt;
             [then]&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 variables.real_side $charmed_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 side $charmer_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 moves 1}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
 &lt;br /&gt;
                 {VARIABLE_OP varname format &amp;quot;side_$charmed_side|_units_charmed&amp;quot;}&lt;br /&gt;
                 {VARIABLE $varname yes}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE varname}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE charmer_side}&lt;br /&gt;
         {CLEAR_VARIABLE charmed_side}&lt;br /&gt;
     [/event]&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=side turn&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         {VARIABLE_OP this_side_charmed to_variable &amp;quot;side_$side_number|_units_charmed&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR this_side_charmed equals yes (&lt;br /&gt;
             [then]&lt;br /&gt;
                 [store_unit]&lt;br /&gt;
                     [filter]&lt;br /&gt;
                         [not]&lt;br /&gt;
                             side=$side_number&lt;br /&gt;
                         [/not]&lt;br /&gt;
                     [/filter]&lt;br /&gt;
 &lt;br /&gt;
                     variable=possibly_charmed&lt;br /&gt;
                     kill=no&lt;br /&gt;
                 [/store_unit]&lt;br /&gt;
 &lt;br /&gt;
                 {FOREACH possibly_charmed i}&lt;br /&gt;
                     {VARIABLE_OP real_side format &amp;quot;0$possibly_charmed[$i].variables.real_side&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
                     {IF_VAR real_side not_equals &amp;quot;0&amp;quot; (&lt;br /&gt;
                         [then]&lt;br /&gt;
                             {IF_VAR side_number equals $possibly_charmed[$i].variables.real_side (&lt;br /&gt;
                                 [then]&lt;br /&gt;
                                     {CLEAR_VARIABLE possibly_charmed[$i].variables.real_side}&lt;br /&gt;
                                     {VARIABLE possibly_charmed[$i].side $side_number}&lt;br /&gt;
 &lt;br /&gt;
                                     [unstore_unit]&lt;br /&gt;
                                         variable=possibly_charmed[$i]&lt;br /&gt;
                                         find_vacant=no&lt;br /&gt;
                                     [/unstore_unit]&lt;br /&gt;
                                 [/then]&lt;br /&gt;
                             )}&lt;br /&gt;
                         [/then]&lt;br /&gt;
                     )}&lt;br /&gt;
                 {NEXT i}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE possibly_charmed}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Bloodlust ===&lt;br /&gt;
&lt;br /&gt;
Bloodlust is a very simple ability. If a unit that has bloodlust kills an enemy unit when attacking, it may attack again, provided that there are more enemy units adjacent to it.&lt;br /&gt;
&lt;br /&gt;
This would give the bloodlust ability to all Dwarvish Ulfserkers (making them insanely powerful):&lt;br /&gt;
&lt;br /&gt;
 {BLOODLUST (type=Dwarvish Ulfserker)}&lt;br /&gt;
&lt;br /&gt;
 #define BLOODLUST FILTER&lt;br /&gt;
     [event]&lt;br /&gt;
         name=die&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter_second]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter_second]&lt;br /&gt;
 &lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 moves 0}&lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Pickpocket ===&lt;br /&gt;
&lt;br /&gt;
This special could also be called loot. When a unit with this attack special sucessfully hits an enemy unit, it gains a certain amount of gold.&lt;br /&gt;
&lt;br /&gt;
To do this, use this code:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;#define WEAPON_SPECIAL_PICKPOCKET&amp;lt;br /&amp;gt;&lt;br /&gt;
 # Canned definition of the pickpocket ability to be included in a&amp;lt;br /&amp;gt;&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
   id=weapon_pickpocket&lt;br /&gt;
   name= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   name_inactive= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   description= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   description_inactive= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 # event that creates a &amp;quot;pickpocket has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no   &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]&lt;br /&gt;
   [set_variable]&lt;br /&gt;
      name=unit_att_with_pickpocket.variables.pickpocket_has_worked&lt;br /&gt;
      value=yes&lt;br /&gt;
   [/set_variable]&lt;br /&gt;
   [unstore_unit]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
   [/unstore_unit]   &lt;br /&gt;
   {CLEAR_VARIABLE unit_att_with_pickpocket}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no  &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketer&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x2,$y2&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketed&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [if]&lt;br /&gt;
      [variable]&lt;br /&gt;
         name=pickpocketer.variables.pickpocket_has_worked&lt;br /&gt;
         equals=yes&lt;br /&gt;
      [/variable]&lt;br /&gt;
      [then]&lt;br /&gt;
    [gold]&lt;br /&gt;
     side=$side_number&lt;br /&gt;
     amount=2&lt;br /&gt;
    [/gold]&lt;br /&gt;
         [unstore_unit]&lt;br /&gt;
            variable=pickpocketed&lt;br /&gt;
            text=&amp;quot;!&amp;quot;&lt;br /&gt;
            {COLOR_HEAL}&lt;br /&gt;
         [/unstore_unit]&lt;br /&gt;
      [/then]&lt;br /&gt;
   [/if]   &lt;br /&gt;
   {CLEAR_VARIABLE pickpocketer}&lt;br /&gt;
   {CLEAR_VARIABLE pickpocketed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 #enddef&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be placed after the [unit_type] tag, or in its own .cfg file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To change the amount of gold given per hit, change&lt;br /&gt;
    &amp;lt;code&amp;gt;[gold]&lt;br /&gt;
    side=$side_number&lt;br /&gt;
    amount='''X'''&lt;br /&gt;
    [/gold]&amp;lt;/code&amp;gt;&lt;br /&gt;
Where '''X''' is the amount of gold you want.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want the gold to be constant, given at the end of the turn if at least one of the attack hits, instead of '''X''' amount of gold per hit, change&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attacker_hits'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attack_end'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soultaker===&lt;br /&gt;
&lt;br /&gt;
Any unit with this ability will gain an additional point of damage per strike every time it kills an enemy. Coder(s) unknown, made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=19&amp;amp;t=20100).&lt;br /&gt;
&lt;br /&gt;
To give a unit the ability, place the following in any .cfg file loaded by the campaign or era:&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_SOULTAKER&lt;br /&gt;
 	[dummy]&lt;br /&gt;
 		id=soultaker&lt;br /&gt;
 		name= _ &amp;quot;soultaker&amp;quot;&lt;br /&gt;
 		description=_ &amp;quot;Soultaker:&lt;br /&gt;
 This unit gains an additional point added to its maximum damage whenever it kills a living unit.&amp;quot;&lt;br /&gt;
 	[/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/abilities]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=die&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[filter]&lt;br /&gt;
 		[not]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=&amp;quot;yes&amp;quot;&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/not]&lt;br /&gt;
 	[/filter]&lt;br /&gt;
 &lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		ability=soultaker&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 &lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		{COLOR_HEAL}&lt;br /&gt;
 		text= _ &amp;quot;+1 damage&amp;quot;&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 &lt;br /&gt;
 	[object]&lt;br /&gt;
 		silent=yes&lt;br /&gt;
 		duration=forever&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 &lt;br /&gt;
 		[effect]&lt;br /&gt;
 			apply_to=attack&lt;br /&gt;
 			range=melee&lt;br /&gt;
 			increase_damage=1&lt;br /&gt;
 			increase=1&lt;br /&gt;
 		[/effect]&lt;br /&gt;
 	[/object]&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
And the following in the unit's [abilities] tag:&lt;br /&gt;
&lt;br /&gt;
 	{ABILITY_SOULTAKER}&lt;br /&gt;
&lt;br /&gt;
===Charm (Type 2)===&lt;br /&gt;
&lt;br /&gt;
An attack special. If the attack hits, and the target is level 0 or 1, the target is converted to the attacker's side. However, if it misses, the attacker is converted to the defender's side. Maintainer is krotop, using 1.6.x syntax (and compatible with 1.7.x], made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=21&amp;amp;t=22539)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define WEAPON_SPECIAL_CHARM&lt;br /&gt;
 # Canned definition of the Charm ability to be included in a&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=weapon_charm&lt;br /&gt;
 	name= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	name_inactive= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	description_inactive= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 &lt;br /&gt;
 # event that creates a variable at the beginning of the fight to check if the attacker hit at least once by the end.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]	&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=no&lt;br /&gt;
 	[/set_variable]	&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that creates a &amp;quot;charm has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=yes&lt;br /&gt;
 	[/set_variable]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that shifts a unit to the other side&lt;br /&gt;
 # if the defending unit&lt;br /&gt;
 #       - was not lvl1 or lvl0 &lt;br /&gt;
 #       - and was not a recruiting unit &lt;br /&gt;
 #       - and was a not a &amp;quot;non-living&amp;quot; creature&lt;br /&gt;
 # then :&lt;br /&gt;
 # -&amp;gt; if the attacker missed all attacks, it goes to the defender side.&lt;br /&gt;
 # -&amp;gt; if the attacker hit once at least, the defender goes to the attacker side.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		canrecruit=no&lt;br /&gt;
 		[and]&lt;br /&gt;
 			level=0&lt;br /&gt;
 			[or]&lt;br /&gt;
 			level=1&lt;br /&gt;
 			[/or]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 		[and]&lt;br /&gt;
 			[not]&lt;br /&gt;
 			[filter_wml]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=yes&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/filter_wml]&lt;br /&gt;
 			[/not]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmer&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmed&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=charmer.variables.charm_has_worked&lt;br /&gt;
 			equals=no&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmer.side&lt;br /&gt;
 				value=$charmed.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmer&lt;br /&gt;
 				text=&amp;quot;Charm failed!&amp;quot;&lt;br /&gt;
 				{COLOR_HARM}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/then]&lt;br /&gt;
 		[else]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmed.side&lt;br /&gt;
 				value=$charmer.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmed&lt;br /&gt;
 				text=&amp;quot;Charmed!&amp;quot;&lt;br /&gt;
  				{COLOR_HEAL}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/else]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 &lt;br /&gt;
 	{CLEAR_VARIABLE charmer}&lt;br /&gt;
 	{CLEAR_VARIABLE charmed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 &lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
== Works ==&lt;br /&gt;
&lt;br /&gt;
Unit with ability ''works'' will produce 1 gold per turn.&lt;br /&gt;
&lt;br /&gt;
Put this macro into you code before the last piece of code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define ABILITY_WORKS&lt;br /&gt;
     [leadership]&lt;br /&gt;
          value=0&lt;br /&gt;
          id=peasant_works&lt;br /&gt;
          cumulative=no&lt;br /&gt;
          name=&amp;quot;works&amp;quot;&lt;br /&gt;
          description= _ &amp;quot;Works:&lt;br /&gt;
This unit produces 1 gold per turn.&amp;quot;&lt;br /&gt;
    [/leadership]&lt;br /&gt;
 #enddef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Put this event into your code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
	name=side turn&lt;br /&gt;
	first_time_only=no&lt;br /&gt;
	[store_unit]&lt;br /&gt;
		[filter]&lt;br /&gt;
	            #your filter here... for example type=Peasant&lt;br /&gt;
		[/filter]&lt;br /&gt;
		variable=worker&lt;br /&gt;
		kill=no&lt;br /&gt;
	[/store_unit]&lt;br /&gt;
&lt;br /&gt;
		{FOREACH worker i}&lt;br /&gt;
	&lt;br /&gt;
			 [gold]&lt;br /&gt;
                            side=$side_number &lt;br /&gt;
                            amount=1&lt;br /&gt;
                         [/gold] &lt;br /&gt;
			[unstore_unit]&lt;br /&gt;
				variable=worker[$i]&lt;br /&gt;
				text=&amp;quot;1&amp;quot;&lt;br /&gt;
			        red,green,blue=255,255,0 &lt;br /&gt;
			[/unstore_unit]&lt;br /&gt;
				&lt;br /&gt;
		{NEXT i}&lt;br /&gt;
	&lt;br /&gt;
	{CLEAR_VARIABLE worker}&lt;br /&gt;
 [/event]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And give the unit the ability like this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [object]&lt;br /&gt;
     silent=yes&lt;br /&gt;
     [effect]&lt;br /&gt;
	apply_to=new_ability&lt;br /&gt;
           [abilities]&lt;br /&gt;
             {ABILITY_WORKS}&lt;br /&gt;
           [/abilities]&lt;br /&gt;
     [/effect]&lt;br /&gt;
 [/object]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mind Flay  ==&lt;br /&gt;
&lt;br /&gt;
The weapon special gives an attacker 1 point of exp taken from a defender for each hit. This will violate minimum experience (i.e. defender can go below 0). &lt;br /&gt;
&lt;br /&gt;
Give this special to the attack(s) you want it to have. &lt;br /&gt;
 #define WEAPON_SPECIAL_MIND_FLAY&lt;br /&gt;
    [damage]&lt;br /&gt;
        id=mind_flay&lt;br /&gt;
        name=&amp;quot;Mind Flay&amp;quot;&lt;br /&gt;
        description=&amp;quot;When used offensively, each hit of the mind flay attack takes 1 point of experience from the defender and gives it to the attacker.&amp;quot; &lt;br /&gt;
        multiply=1&lt;br /&gt;
    [/damage]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
Include these events into your scenario.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE hit_number 0}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP hit_number add 1}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP second_unit.experience add -$hit_number}&lt;br /&gt;
 	{VARIABLE_OP unit.experience add $hit_number}&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 		text=$hit_number&lt;br /&gt;
 		blue=255&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	{CLEAR_VARIABLE hit_number}&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
Note: In dev version substitute &amp;quot;name=&amp;quot; instead of &amp;quot;weapon=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Initiative  ==&lt;br /&gt;
&lt;br /&gt;
Initiative is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_INITIATIVE TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=initiative&lt;br /&gt;
 	name= _ &amp;quot;initiative&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Initiative:&lt;br /&gt;
 Adjacent allies are granted Firststrike with all weapons.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{VARIABLE unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{VARIABLE second_unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE second_unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== Blitz ==&lt;br /&gt;
&lt;br /&gt;
Blitz is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_BLITZ TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=blitz	&lt;br /&gt;
 	name= _ &amp;quot;blitz&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Blitz:&lt;br /&gt;
 Allies that start their turn adjacent to this unit are granted Skirmisher for that turn.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=side turn&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 		&lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				&lt;br /&gt;
 				[wml_filter]&lt;br /&gt;
 					blitzed=1&lt;br /&gt;
 				[/wml_filter]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitz_refresh&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitz_refresh i}&lt;br /&gt;
 			{CLEAR_VARIABLE blitz_refresh[$i].abilities.skirmisher}&lt;br /&gt;
 			{VARIABLE blitz_refresh[$i].blitzed 0}&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=blitz_refresh[$i]&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 &lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				side=$side_number&lt;br /&gt;
 				[filter_adjacent]&lt;br /&gt;
 					type={TYPE}&lt;br /&gt;
 					is_enemy=no&lt;br /&gt;
 				[/filter_adjacent]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitzed&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitzed i}&lt;br /&gt;
 			[if]&lt;br /&gt;
 				[variable]&lt;br /&gt;
 					name=blitzed[$i].abilities.skirmisher.id&lt;br /&gt;
 					not_equals=&amp;quot;skirmisher&amp;quot;&lt;br /&gt;
 				[/variable]&lt;br /&gt;
 				[then]&lt;br /&gt;
 					{VARIABLE blitzed[$i].blitzed 1}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.id skirmisher}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.name &amp;quot;skirmisher&amp;quot;}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.description  &amp;quot;Skirmisher:&lt;br /&gt;
 This unit is skilled in moving past enemies quickly, and ignores all enemy Zones of Control.&amp;quot;}&lt;br /&gt;
 					[unstore_unit]&lt;br /&gt;
 						variable=blitzed[$i]&lt;br /&gt;
 					[/unstore_unit]&lt;br /&gt;
 				[/then]&lt;br /&gt;
 			[/if]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UsefulWMLFragments]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: UsefulWMLFragments]]&lt;/div&gt;</summary>
		<author><name>Meowreka</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32602</id>
		<title>WML Abilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32602"/>
		<updated>2009-10-07T20:33:48Z</updated>

		<summary type="html">&lt;p&gt;Meowreka: /* Ripped Pocket */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Remember that you must include the WML ability code in every scenario where you intend them to work. Or include them in the unit file inside the [unit_type] tag.&lt;br /&gt;
&lt;br /&gt;
Some abilities require macros from [[WML_Utilities|Utilities]]. &lt;br /&gt;
&lt;br /&gt;
=== Ripped Pocket ===&lt;br /&gt;
Causes a unit to lose 2 gold at the end of every move, regardless of how many spaces the unit moves or how many times that unit has already moved that turn.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_RIPPED_POCKET&lt;br /&gt;
 # Canned definition of the charm ability to be included in a&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
 id=unit_ripped_pocket&lt;br /&gt;
 name= _ &amp;quot;ripped pocket&amp;quot;&lt;br /&gt;
 name_inactive= _ &amp;quot;ripped pocket&amp;quot;&lt;br /&gt;
 description= _ &amp;quot;ripped pocket : &lt;br /&gt;
 Unit loses two gold at the end of every movement. This is regardless of how many spaces &lt;br /&gt;
 the unit moves, and happens every time they move, even in the same turn.&amp;quot;&lt;br /&gt;
 description_inactive= _ &amp;quot;ripped pocket : &lt;br /&gt;
 Unit loses two gold at the end of every movement. This is regardless of how many spaces &lt;br /&gt;
 the unit moves, and happens every time they move, even in the same turn.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 [event]&lt;br /&gt;
 name=moveto&lt;br /&gt;
 first_time_only=no	&lt;br /&gt;
 [store_unit]&lt;br /&gt;
 [filter]&lt;br /&gt;
 x,y=$x1,$y1&lt;br /&gt;
 [/filter]&lt;br /&gt;
 variable=rippedpocket&lt;br /&gt;
 mode=append&lt;br /&gt;
 [/store_unit]&lt;br /&gt;
 [gold]&lt;br /&gt;
 side=$side_number &lt;br /&gt;
 amount=-2&lt;br /&gt;
 [/gold] &lt;br /&gt;
 [unstore_unit]&lt;br /&gt;
 variable=rippedpocket&lt;br /&gt;
 text=&amp;quot;-2 gold&amp;quot;&lt;br /&gt;
 {COLOR_HARM}&lt;br /&gt;
 [/unstore_unit]&lt;br /&gt;
 {CLEAR_VARIABLE rippedpocket}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Knockback  ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''knockback'' attack, it is immediately pushed one hex away from the attacker, at which point the combat ends. Exception: units in villages can't be knocked out of them.&lt;br /&gt;
&lt;br /&gt;
Examples that give ''knockback'' for every Drake Glider on their slam attack, and for the Shock Trooper named Jane:&lt;br /&gt;
 {KNOCKBACK (type=Drake Glider) slam}&lt;br /&gt;
 {KNOCKBACK description=Jane mace}&lt;br /&gt;
&lt;br /&gt;
Requires the macro ''OPPOSITE_SIDE''.&lt;br /&gt;
&lt;br /&gt;
 #define KNOCKBACK FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         [sound]&lt;br /&gt;
             name=ghoul-hit.wav&lt;br /&gt;
         [/sound]&lt;br /&gt;
 &lt;br /&gt;
         {OPPOSITE_SIDE $x2 $y2 $x1 $y1 target_hex}&lt;br /&gt;
 &lt;br /&gt;
         [store_locations]&lt;br /&gt;
             x,y=$x2,$y2&lt;br /&gt;
             terrain=AaBbDeLptUVvYZ&lt;br /&gt;
             variable=defender_in_village&lt;br /&gt;
         [/store_locations]&lt;br /&gt;
         [if]&lt;br /&gt;
             [have_unit]&lt;br /&gt;
                x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
             [/have_unit]&lt;br /&gt;
             [else]&lt;br /&gt;
                 {IF_VAR defender_in_village.length not_equals 1 (&lt;br /&gt;
                     [then]&lt;br /&gt;
                         {STORE_UNIT_VAR x,y=$x2,$y2 side side_of_defender}&lt;br /&gt;
 &lt;br /&gt;
                         [teleport]&lt;br /&gt;
                             [filter]&lt;br /&gt;
                                 x,y=$x2,$y2&lt;br /&gt;
                             [/filter]&lt;br /&gt;
 &lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/teleport]&lt;br /&gt;
 &lt;br /&gt;
                         [capture_village]&lt;br /&gt;
                             side=$side_of_defender&lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/capture_village]&lt;br /&gt;
 &lt;br /&gt;
                         {CLEAR_VARIABLE side_of_defender}&lt;br /&gt;
                     [/then]&lt;br /&gt;
                 )}&lt;br /&gt;
             [/else]&lt;br /&gt;
         [/if]&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE target_hex}&lt;br /&gt;
         {CLEAR_VARIABLE defender_in_village}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Charm ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''charm'' attack, it instantly jumps to the attacker's side, and returns to it's original side at the beginning of that side's turn. A charmed unit has 1 movement point and can attack.&lt;br /&gt;
&lt;br /&gt;
Example that makes all Troll Whelps have charm on their attack:&lt;br /&gt;
&lt;br /&gt;
 {CHARM (type=Troll Whelp) fist}&lt;br /&gt;
&lt;br /&gt;
 #define CHARM FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x1,$y1 side charmer_side}&lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x2,$y2 side charmed_side}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR charmer_side not_equals $charmed_side (&lt;br /&gt;
             [then]&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 variables.real_side $charmed_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 side $charmer_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 moves 1}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
 &lt;br /&gt;
                 {VARIABLE_OP varname format &amp;quot;side_$charmed_side|_units_charmed&amp;quot;}&lt;br /&gt;
                 {VARIABLE $varname yes}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE varname}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE charmer_side}&lt;br /&gt;
         {CLEAR_VARIABLE charmed_side}&lt;br /&gt;
     [/event]&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=side turn&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         {VARIABLE_OP this_side_charmed to_variable &amp;quot;side_$side_number|_units_charmed&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR this_side_charmed equals yes (&lt;br /&gt;
             [then]&lt;br /&gt;
                 [store_unit]&lt;br /&gt;
                     [filter]&lt;br /&gt;
                         [not]&lt;br /&gt;
                             side=$side_number&lt;br /&gt;
                         [/not]&lt;br /&gt;
                     [/filter]&lt;br /&gt;
 &lt;br /&gt;
                     variable=possibly_charmed&lt;br /&gt;
                     kill=no&lt;br /&gt;
                 [/store_unit]&lt;br /&gt;
 &lt;br /&gt;
                 {FOREACH possibly_charmed i}&lt;br /&gt;
                     {VARIABLE_OP real_side format &amp;quot;0$possibly_charmed[$i].variables.real_side&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
                     {IF_VAR real_side not_equals &amp;quot;0&amp;quot; (&lt;br /&gt;
                         [then]&lt;br /&gt;
                             {IF_VAR side_number equals $possibly_charmed[$i].variables.real_side (&lt;br /&gt;
                                 [then]&lt;br /&gt;
                                     {CLEAR_VARIABLE possibly_charmed[$i].variables.real_side}&lt;br /&gt;
                                     {VARIABLE possibly_charmed[$i].side $side_number}&lt;br /&gt;
 &lt;br /&gt;
                                     [unstore_unit]&lt;br /&gt;
                                         variable=possibly_charmed[$i]&lt;br /&gt;
                                         find_vacant=no&lt;br /&gt;
                                     [/unstore_unit]&lt;br /&gt;
                                 [/then]&lt;br /&gt;
                             )}&lt;br /&gt;
                         [/then]&lt;br /&gt;
                     )}&lt;br /&gt;
                 {NEXT i}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE possibly_charmed}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Bloodlust ===&lt;br /&gt;
&lt;br /&gt;
Bloodlust is a very simple ability. If a unit that has bloodlust kills an enemy unit when attacking, it may attack again, provided that there are more enemy units adjacent to it.&lt;br /&gt;
&lt;br /&gt;
This would give the bloodlust ability to all Dwarvish Ulfserkers (making them insanely powerful):&lt;br /&gt;
&lt;br /&gt;
 {BLOODLUST (type=Dwarvish Ulfserker)}&lt;br /&gt;
&lt;br /&gt;
 #define BLOODLUST FILTER&lt;br /&gt;
     [event]&lt;br /&gt;
         name=die&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter_second]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter_second]&lt;br /&gt;
 &lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 moves 0}&lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Pickpocket ===&lt;br /&gt;
&lt;br /&gt;
This special could also be called loot. When a unit with this attack special sucessfully hits an enemy unit, it gains a certain amount of gold.&lt;br /&gt;
&lt;br /&gt;
To do this, use this code:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;#define WEAPON_SPECIAL_PICKPOCKET&amp;lt;br /&amp;gt;&lt;br /&gt;
 # Canned definition of the pickpocket ability to be included in a&amp;lt;br /&amp;gt;&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
   id=weapon_pickpocket&lt;br /&gt;
   name= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   name_inactive= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   description= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   description_inactive= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 # event that creates a &amp;quot;pickpocket has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no   &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]&lt;br /&gt;
   [set_variable]&lt;br /&gt;
      name=unit_att_with_pickpocket.variables.pickpocket_has_worked&lt;br /&gt;
      value=yes&lt;br /&gt;
   [/set_variable]&lt;br /&gt;
   [unstore_unit]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
   [/unstore_unit]   &lt;br /&gt;
   {CLEAR_VARIABLE unit_att_with_pickpocket}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no  &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketer&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x2,$y2&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketed&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [if]&lt;br /&gt;
      [variable]&lt;br /&gt;
         name=pickpocketer.variables.pickpocket_has_worked&lt;br /&gt;
         equals=yes&lt;br /&gt;
      [/variable]&lt;br /&gt;
      [then]&lt;br /&gt;
    [gold]&lt;br /&gt;
     side=$side_number&lt;br /&gt;
     amount=2&lt;br /&gt;
    [/gold]&lt;br /&gt;
         [unstore_unit]&lt;br /&gt;
            variable=pickpocketed&lt;br /&gt;
            text=&amp;quot;!&amp;quot;&lt;br /&gt;
            {COLOR_HEAL}&lt;br /&gt;
         [/unstore_unit]&lt;br /&gt;
      [/then]&lt;br /&gt;
   [/if]   &lt;br /&gt;
   {CLEAR_VARIABLE pickpocketer}&lt;br /&gt;
   {CLEAR_VARIABLE pickpocketed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 #enddef&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be placed after the [unit_type] tag, or in its own .cfg file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To change the amount of gold given per hit, change&lt;br /&gt;
    &amp;lt;code&amp;gt;[gold]&lt;br /&gt;
    side=$side_number&lt;br /&gt;
    amount='''X'''&lt;br /&gt;
    [/gold]&amp;lt;/code&amp;gt;&lt;br /&gt;
Where '''X''' is the amount of gold you want.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want the gold to be constant, given at the end of the turn if at least one of the attack hits, instead of '''X''' amount of gold per hit, change&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attacker_hits'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attack_end'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soultaker===&lt;br /&gt;
&lt;br /&gt;
Any unit with this ability will gain an additional point of damage per strike every time it kills an enemy. Coder(s) unknown, made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=19&amp;amp;t=20100).&lt;br /&gt;
&lt;br /&gt;
To give a unit the ability, place the following in any .cfg file loaded by the campaign or era:&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_SOULTAKER&lt;br /&gt;
 	[dummy]&lt;br /&gt;
 		id=soultaker&lt;br /&gt;
 		name= _ &amp;quot;soultaker&amp;quot;&lt;br /&gt;
 		description=_ &amp;quot;Soultaker:&lt;br /&gt;
 This unit gains an additional point added to its maximum damage whenever it kills a living unit.&amp;quot;&lt;br /&gt;
 	[/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/abilities]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=die&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[filter]&lt;br /&gt;
 		[not]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=&amp;quot;yes&amp;quot;&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/not]&lt;br /&gt;
 	[/filter]&lt;br /&gt;
 &lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		ability=soultaker&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 &lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		{COLOR_HEAL}&lt;br /&gt;
 		text= _ &amp;quot;+1 damage&amp;quot;&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 &lt;br /&gt;
 	[object]&lt;br /&gt;
 		silent=yes&lt;br /&gt;
 		duration=forever&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 &lt;br /&gt;
 		[effect]&lt;br /&gt;
 			apply_to=attack&lt;br /&gt;
 			range=melee&lt;br /&gt;
 			increase_damage=1&lt;br /&gt;
 			increase=1&lt;br /&gt;
 		[/effect]&lt;br /&gt;
 	[/object]&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
And the following in the unit's [abilities] tag:&lt;br /&gt;
&lt;br /&gt;
 	{ABILITY_SOULTAKER}&lt;br /&gt;
&lt;br /&gt;
===Charm (Type 2)===&lt;br /&gt;
&lt;br /&gt;
An attack special. If the attack hits, and the target is level 0 or 1, the target is converted to the attacker's side. However, if it misses, the attacker is converted to the defender's side. Maintainer is krotop, using 1.6.x syntax (and compatible with 1.7.x], made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=21&amp;amp;t=22539)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define WEAPON_SPECIAL_CHARM&lt;br /&gt;
 # Canned definition of the Charm ability to be included in a&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=weapon_charm&lt;br /&gt;
 	name= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	name_inactive= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	description_inactive= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 &lt;br /&gt;
 # event that creates a variable at the beginning of the fight to check if the attacker hit at least once by the end.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]	&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=no&lt;br /&gt;
 	[/set_variable]	&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that creates a &amp;quot;charm has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=yes&lt;br /&gt;
 	[/set_variable]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that shifts a unit to the other side&lt;br /&gt;
 # if the defending unit&lt;br /&gt;
 #       - was not lvl1 or lvl0 &lt;br /&gt;
 #       - and was not a recruiting unit &lt;br /&gt;
 #       - and was a not a &amp;quot;non-living&amp;quot; creature&lt;br /&gt;
 # then :&lt;br /&gt;
 # -&amp;gt; if the attacker missed all attacks, it goes to the defender side.&lt;br /&gt;
 # -&amp;gt; if the attacker hit once at least, the defender goes to the attacker side.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		canrecruit=no&lt;br /&gt;
 		[and]&lt;br /&gt;
 			level=0&lt;br /&gt;
 			[or]&lt;br /&gt;
 			level=1&lt;br /&gt;
 			[/or]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 		[and]&lt;br /&gt;
 			[not]&lt;br /&gt;
 			[filter_wml]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=yes&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/filter_wml]&lt;br /&gt;
 			[/not]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmer&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmed&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=charmer.variables.charm_has_worked&lt;br /&gt;
 			equals=no&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmer.side&lt;br /&gt;
 				value=$charmed.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmer&lt;br /&gt;
 				text=&amp;quot;Charm failed!&amp;quot;&lt;br /&gt;
 				{COLOR_HARM}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/then]&lt;br /&gt;
 		[else]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmed.side&lt;br /&gt;
 				value=$charmer.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmed&lt;br /&gt;
 				text=&amp;quot;Charmed!&amp;quot;&lt;br /&gt;
  				{COLOR_HEAL}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/else]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 &lt;br /&gt;
 	{CLEAR_VARIABLE charmer}&lt;br /&gt;
 	{CLEAR_VARIABLE charmed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 &lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
== Works ==&lt;br /&gt;
&lt;br /&gt;
Unit with ability ''works'' will produce 1 gold per turn.&lt;br /&gt;
&lt;br /&gt;
Put this macro into you code before the last piece of code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define ABILITY_WORKS&lt;br /&gt;
     [leadership]&lt;br /&gt;
          value=0&lt;br /&gt;
          id=peasant_works&lt;br /&gt;
          cumulative=no&lt;br /&gt;
          name=&amp;quot;works&amp;quot;&lt;br /&gt;
          description= _ &amp;quot;Works:&lt;br /&gt;
This unit produces 1 gold per turn.&amp;quot;&lt;br /&gt;
    [/leadership]&lt;br /&gt;
 #enddef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Put this event into your code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
	name=side turn&lt;br /&gt;
	first_time_only=no&lt;br /&gt;
	[store_unit]&lt;br /&gt;
		[filter]&lt;br /&gt;
	            #your filter here... for example type=Peasant&lt;br /&gt;
		[/filter]&lt;br /&gt;
		variable=worker&lt;br /&gt;
		kill=no&lt;br /&gt;
	[/store_unit]&lt;br /&gt;
&lt;br /&gt;
		{FOREACH worker i}&lt;br /&gt;
	&lt;br /&gt;
			 [gold]&lt;br /&gt;
                            side=$side_number &lt;br /&gt;
                            amount=1&lt;br /&gt;
                         [/gold] &lt;br /&gt;
			[unstore_unit]&lt;br /&gt;
				variable=worker[$i]&lt;br /&gt;
				text=&amp;quot;1&amp;quot;&lt;br /&gt;
			        red,green,blue=255,255,0 &lt;br /&gt;
			[/unstore_unit]&lt;br /&gt;
				&lt;br /&gt;
		{NEXT i}&lt;br /&gt;
	&lt;br /&gt;
	{CLEAR_VARIABLE worker}&lt;br /&gt;
 [/event]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And give the unit the ability like this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [object]&lt;br /&gt;
     silent=yes&lt;br /&gt;
     [effect]&lt;br /&gt;
	apply_to=new_ability&lt;br /&gt;
           [abilities]&lt;br /&gt;
             {ABILITY_WORKS}&lt;br /&gt;
           [/abilities]&lt;br /&gt;
     [/effect]&lt;br /&gt;
 [/object]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mind Flay  ==&lt;br /&gt;
&lt;br /&gt;
The weapon special gives an attacker 1 point of exp taken from a defender for each hit. This will violate minimum experience (i.e. defender can go below 0). &lt;br /&gt;
&lt;br /&gt;
Give this special to the attack(s) you want it to have. &lt;br /&gt;
 #define WEAPON_SPECIAL_MIND_FLAY&lt;br /&gt;
    [damage]&lt;br /&gt;
        id=mind_flay&lt;br /&gt;
        name=&amp;quot;Mind Flay&amp;quot;&lt;br /&gt;
        description=&amp;quot;When used offensively, each hit of the mind flay attack takes 1 point of experience from the defender and gives it to the attacker.&amp;quot; &lt;br /&gt;
        multiply=1&lt;br /&gt;
    [/damage]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
Include these events into your scenario.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE hit_number 0}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP hit_number add 1}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP second_unit.experience add -$hit_number}&lt;br /&gt;
 	{VARIABLE_OP unit.experience add $hit_number}&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 		text=$hit_number&lt;br /&gt;
 		blue=255&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	{CLEAR_VARIABLE hit_number}&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
Note: In dev version substitute &amp;quot;name=&amp;quot; instead of &amp;quot;weapon=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Initiative  ==&lt;br /&gt;
&lt;br /&gt;
Initiative is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_INITIATIVE TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=initiative&lt;br /&gt;
 	name= _ &amp;quot;initiative&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Initiative:&lt;br /&gt;
 Adjacent allies are granted Firststrike with all weapons.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{VARIABLE unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{VARIABLE second_unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE second_unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== Blitz ==&lt;br /&gt;
&lt;br /&gt;
Blitz is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_BLITZ TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=blitz	&lt;br /&gt;
 	name= _ &amp;quot;blitz&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Blitz:&lt;br /&gt;
 Allies that start their turn adjacent to this unit are granted Skirmisher for that turn.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=side turn&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 		&lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				&lt;br /&gt;
 				[wml_filter]&lt;br /&gt;
 					blitzed=1&lt;br /&gt;
 				[/wml_filter]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitz_refresh&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitz_refresh i}&lt;br /&gt;
 			{CLEAR_VARIABLE blitz_refresh[$i].abilities.skirmisher}&lt;br /&gt;
 			{VARIABLE blitz_refresh[$i].blitzed 0}&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=blitz_refresh[$i]&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 &lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				side=$side_number&lt;br /&gt;
 				[filter_adjacent]&lt;br /&gt;
 					type={TYPE}&lt;br /&gt;
 					is_enemy=no&lt;br /&gt;
 				[/filter_adjacent]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitzed&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitzed i}&lt;br /&gt;
 			[if]&lt;br /&gt;
 				[variable]&lt;br /&gt;
 					name=blitzed[$i].abilities.skirmisher.id&lt;br /&gt;
 					not_equals=&amp;quot;skirmisher&amp;quot;&lt;br /&gt;
 				[/variable]&lt;br /&gt;
 				[then]&lt;br /&gt;
 					{VARIABLE blitzed[$i].blitzed 1}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.id skirmisher}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.name &amp;quot;skirmisher&amp;quot;}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.description  &amp;quot;Skirmisher:&lt;br /&gt;
 This unit is skilled in moving past enemies quickly, and ignores all enemy Zones of Control.&amp;quot;}&lt;br /&gt;
 					[unstore_unit]&lt;br /&gt;
 						variable=blitzed[$i]&lt;br /&gt;
 					[/unstore_unit]&lt;br /&gt;
 				[/then]&lt;br /&gt;
 			[/if]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UsefulWMLFragments]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: UsefulWMLFragments]]&lt;/div&gt;</summary>
		<author><name>Meowreka</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32601</id>
		<title>WML Abilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32601"/>
		<updated>2009-10-07T20:33:14Z</updated>

		<summary type="html">&lt;p&gt;Meowreka: /* Ripped Pocket */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Remember that you must include the WML ability code in every scenario where you intend them to work. Or include them in the unit file inside the [unit_type] tag.&lt;br /&gt;
&lt;br /&gt;
Some abilities require macros from [[WML_Utilities|Utilities]]. &lt;br /&gt;
&lt;br /&gt;
=== Ripped Pocket ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_RIPPED_POCKET&lt;br /&gt;
 # Canned definition of the charm ability to be included in a&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
 id=unit_ripped_pocket&lt;br /&gt;
 name= _ &amp;quot;ripped pocket&amp;quot;&lt;br /&gt;
 name_inactive= _ &amp;quot;ripped pocket&amp;quot;&lt;br /&gt;
 description= _ &amp;quot;ripped pocket : &lt;br /&gt;
 Unit loses two gold at the end of every movement. This is regardless of how many spaces &lt;br /&gt;
 the unit moves, and happens every time they move, even in the same turn.&amp;quot;&lt;br /&gt;
 description_inactive= _ &amp;quot;ripped pocket : &lt;br /&gt;
 Unit loses two gold at the end of every movement. This is regardless of how many spaces &lt;br /&gt;
 the unit moves, and happens every time they move, even in the same turn.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 [event]&lt;br /&gt;
 name=moveto&lt;br /&gt;
 first_time_only=no	&lt;br /&gt;
 [store_unit]&lt;br /&gt;
 [filter]&lt;br /&gt;
 x,y=$x1,$y1&lt;br /&gt;
 [/filter]&lt;br /&gt;
 variable=rippedpocket&lt;br /&gt;
 mode=append&lt;br /&gt;
 [/store_unit]&lt;br /&gt;
 [gold]&lt;br /&gt;
 side=$side_number &lt;br /&gt;
 amount=-2&lt;br /&gt;
 [/gold] &lt;br /&gt;
 [unstore_unit]&lt;br /&gt;
 variable=rippedpocket&lt;br /&gt;
 text=&amp;quot;-2 gold&amp;quot;&lt;br /&gt;
 {COLOR_HARM}&lt;br /&gt;
 [/unstore_unit]&lt;br /&gt;
 {CLEAR_VARIABLE rippedpocket}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Knockback  ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''knockback'' attack, it is immediately pushed one hex away from the attacker, at which point the combat ends. Exception: units in villages can't be knocked out of them.&lt;br /&gt;
&lt;br /&gt;
Examples that give ''knockback'' for every Drake Glider on their slam attack, and for the Shock Trooper named Jane:&lt;br /&gt;
 {KNOCKBACK (type=Drake Glider) slam}&lt;br /&gt;
 {KNOCKBACK description=Jane mace}&lt;br /&gt;
&lt;br /&gt;
Requires the macro ''OPPOSITE_SIDE''.&lt;br /&gt;
&lt;br /&gt;
 #define KNOCKBACK FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         [sound]&lt;br /&gt;
             name=ghoul-hit.wav&lt;br /&gt;
         [/sound]&lt;br /&gt;
 &lt;br /&gt;
         {OPPOSITE_SIDE $x2 $y2 $x1 $y1 target_hex}&lt;br /&gt;
 &lt;br /&gt;
         [store_locations]&lt;br /&gt;
             x,y=$x2,$y2&lt;br /&gt;
             terrain=AaBbDeLptUVvYZ&lt;br /&gt;
             variable=defender_in_village&lt;br /&gt;
         [/store_locations]&lt;br /&gt;
         [if]&lt;br /&gt;
             [have_unit]&lt;br /&gt;
                x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
             [/have_unit]&lt;br /&gt;
             [else]&lt;br /&gt;
                 {IF_VAR defender_in_village.length not_equals 1 (&lt;br /&gt;
                     [then]&lt;br /&gt;
                         {STORE_UNIT_VAR x,y=$x2,$y2 side side_of_defender}&lt;br /&gt;
 &lt;br /&gt;
                         [teleport]&lt;br /&gt;
                             [filter]&lt;br /&gt;
                                 x,y=$x2,$y2&lt;br /&gt;
                             [/filter]&lt;br /&gt;
 &lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/teleport]&lt;br /&gt;
 &lt;br /&gt;
                         [capture_village]&lt;br /&gt;
                             side=$side_of_defender&lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/capture_village]&lt;br /&gt;
 &lt;br /&gt;
                         {CLEAR_VARIABLE side_of_defender}&lt;br /&gt;
                     [/then]&lt;br /&gt;
                 )}&lt;br /&gt;
             [/else]&lt;br /&gt;
         [/if]&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE target_hex}&lt;br /&gt;
         {CLEAR_VARIABLE defender_in_village}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Charm ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''charm'' attack, it instantly jumps to the attacker's side, and returns to it's original side at the beginning of that side's turn. A charmed unit has 1 movement point and can attack.&lt;br /&gt;
&lt;br /&gt;
Example that makes all Troll Whelps have charm on their attack:&lt;br /&gt;
&lt;br /&gt;
 {CHARM (type=Troll Whelp) fist}&lt;br /&gt;
&lt;br /&gt;
 #define CHARM FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x1,$y1 side charmer_side}&lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x2,$y2 side charmed_side}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR charmer_side not_equals $charmed_side (&lt;br /&gt;
             [then]&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 variables.real_side $charmed_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 side $charmer_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 moves 1}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
 &lt;br /&gt;
                 {VARIABLE_OP varname format &amp;quot;side_$charmed_side|_units_charmed&amp;quot;}&lt;br /&gt;
                 {VARIABLE $varname yes}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE varname}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE charmer_side}&lt;br /&gt;
         {CLEAR_VARIABLE charmed_side}&lt;br /&gt;
     [/event]&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=side turn&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         {VARIABLE_OP this_side_charmed to_variable &amp;quot;side_$side_number|_units_charmed&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR this_side_charmed equals yes (&lt;br /&gt;
             [then]&lt;br /&gt;
                 [store_unit]&lt;br /&gt;
                     [filter]&lt;br /&gt;
                         [not]&lt;br /&gt;
                             side=$side_number&lt;br /&gt;
                         [/not]&lt;br /&gt;
                     [/filter]&lt;br /&gt;
 &lt;br /&gt;
                     variable=possibly_charmed&lt;br /&gt;
                     kill=no&lt;br /&gt;
                 [/store_unit]&lt;br /&gt;
 &lt;br /&gt;
                 {FOREACH possibly_charmed i}&lt;br /&gt;
                     {VARIABLE_OP real_side format &amp;quot;0$possibly_charmed[$i].variables.real_side&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
                     {IF_VAR real_side not_equals &amp;quot;0&amp;quot; (&lt;br /&gt;
                         [then]&lt;br /&gt;
                             {IF_VAR side_number equals $possibly_charmed[$i].variables.real_side (&lt;br /&gt;
                                 [then]&lt;br /&gt;
                                     {CLEAR_VARIABLE possibly_charmed[$i].variables.real_side}&lt;br /&gt;
                                     {VARIABLE possibly_charmed[$i].side $side_number}&lt;br /&gt;
 &lt;br /&gt;
                                     [unstore_unit]&lt;br /&gt;
                                         variable=possibly_charmed[$i]&lt;br /&gt;
                                         find_vacant=no&lt;br /&gt;
                                     [/unstore_unit]&lt;br /&gt;
                                 [/then]&lt;br /&gt;
                             )}&lt;br /&gt;
                         [/then]&lt;br /&gt;
                     )}&lt;br /&gt;
                 {NEXT i}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE possibly_charmed}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Bloodlust ===&lt;br /&gt;
&lt;br /&gt;
Bloodlust is a very simple ability. If a unit that has bloodlust kills an enemy unit when attacking, it may attack again, provided that there are more enemy units adjacent to it.&lt;br /&gt;
&lt;br /&gt;
This would give the bloodlust ability to all Dwarvish Ulfserkers (making them insanely powerful):&lt;br /&gt;
&lt;br /&gt;
 {BLOODLUST (type=Dwarvish Ulfserker)}&lt;br /&gt;
&lt;br /&gt;
 #define BLOODLUST FILTER&lt;br /&gt;
     [event]&lt;br /&gt;
         name=die&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter_second]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter_second]&lt;br /&gt;
 &lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 moves 0}&lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Pickpocket ===&lt;br /&gt;
&lt;br /&gt;
This special could also be called loot. When a unit with this attack special sucessfully hits an enemy unit, it gains a certain amount of gold.&lt;br /&gt;
&lt;br /&gt;
To do this, use this code:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;#define WEAPON_SPECIAL_PICKPOCKET&amp;lt;br /&amp;gt;&lt;br /&gt;
 # Canned definition of the pickpocket ability to be included in a&amp;lt;br /&amp;gt;&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
   id=weapon_pickpocket&lt;br /&gt;
   name= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   name_inactive= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   description= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   description_inactive= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 # event that creates a &amp;quot;pickpocket has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no   &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]&lt;br /&gt;
   [set_variable]&lt;br /&gt;
      name=unit_att_with_pickpocket.variables.pickpocket_has_worked&lt;br /&gt;
      value=yes&lt;br /&gt;
   [/set_variable]&lt;br /&gt;
   [unstore_unit]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
   [/unstore_unit]   &lt;br /&gt;
   {CLEAR_VARIABLE unit_att_with_pickpocket}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no  &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketer&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x2,$y2&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketed&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [if]&lt;br /&gt;
      [variable]&lt;br /&gt;
         name=pickpocketer.variables.pickpocket_has_worked&lt;br /&gt;
         equals=yes&lt;br /&gt;
      [/variable]&lt;br /&gt;
      [then]&lt;br /&gt;
    [gold]&lt;br /&gt;
     side=$side_number&lt;br /&gt;
     amount=2&lt;br /&gt;
    [/gold]&lt;br /&gt;
         [unstore_unit]&lt;br /&gt;
            variable=pickpocketed&lt;br /&gt;
            text=&amp;quot;!&amp;quot;&lt;br /&gt;
            {COLOR_HEAL}&lt;br /&gt;
         [/unstore_unit]&lt;br /&gt;
      [/then]&lt;br /&gt;
   [/if]   &lt;br /&gt;
   {CLEAR_VARIABLE pickpocketer}&lt;br /&gt;
   {CLEAR_VARIABLE pickpocketed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 #enddef&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be placed after the [unit_type] tag, or in its own .cfg file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To change the amount of gold given per hit, change&lt;br /&gt;
    &amp;lt;code&amp;gt;[gold]&lt;br /&gt;
    side=$side_number&lt;br /&gt;
    amount='''X'''&lt;br /&gt;
    [/gold]&amp;lt;/code&amp;gt;&lt;br /&gt;
Where '''X''' is the amount of gold you want.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want the gold to be constant, given at the end of the turn if at least one of the attack hits, instead of '''X''' amount of gold per hit, change&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attacker_hits'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attack_end'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soultaker===&lt;br /&gt;
&lt;br /&gt;
Any unit with this ability will gain an additional point of damage per strike every time it kills an enemy. Coder(s) unknown, made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=19&amp;amp;t=20100).&lt;br /&gt;
&lt;br /&gt;
To give a unit the ability, place the following in any .cfg file loaded by the campaign or era:&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_SOULTAKER&lt;br /&gt;
 	[dummy]&lt;br /&gt;
 		id=soultaker&lt;br /&gt;
 		name= _ &amp;quot;soultaker&amp;quot;&lt;br /&gt;
 		description=_ &amp;quot;Soultaker:&lt;br /&gt;
 This unit gains an additional point added to its maximum damage whenever it kills a living unit.&amp;quot;&lt;br /&gt;
 	[/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/abilities]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=die&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[filter]&lt;br /&gt;
 		[not]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=&amp;quot;yes&amp;quot;&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/not]&lt;br /&gt;
 	[/filter]&lt;br /&gt;
 &lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		ability=soultaker&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 &lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		{COLOR_HEAL}&lt;br /&gt;
 		text= _ &amp;quot;+1 damage&amp;quot;&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 &lt;br /&gt;
 	[object]&lt;br /&gt;
 		silent=yes&lt;br /&gt;
 		duration=forever&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 &lt;br /&gt;
 		[effect]&lt;br /&gt;
 			apply_to=attack&lt;br /&gt;
 			range=melee&lt;br /&gt;
 			increase_damage=1&lt;br /&gt;
 			increase=1&lt;br /&gt;
 		[/effect]&lt;br /&gt;
 	[/object]&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
And the following in the unit's [abilities] tag:&lt;br /&gt;
&lt;br /&gt;
 	{ABILITY_SOULTAKER}&lt;br /&gt;
&lt;br /&gt;
===Charm (Type 2)===&lt;br /&gt;
&lt;br /&gt;
An attack special. If the attack hits, and the target is level 0 or 1, the target is converted to the attacker's side. However, if it misses, the attacker is converted to the defender's side. Maintainer is krotop, using 1.6.x syntax (and compatible with 1.7.x], made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=21&amp;amp;t=22539)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define WEAPON_SPECIAL_CHARM&lt;br /&gt;
 # Canned definition of the Charm ability to be included in a&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=weapon_charm&lt;br /&gt;
 	name= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	name_inactive= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	description_inactive= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 &lt;br /&gt;
 # event that creates a variable at the beginning of the fight to check if the attacker hit at least once by the end.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]	&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=no&lt;br /&gt;
 	[/set_variable]	&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that creates a &amp;quot;charm has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=yes&lt;br /&gt;
 	[/set_variable]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that shifts a unit to the other side&lt;br /&gt;
 # if the defending unit&lt;br /&gt;
 #       - was not lvl1 or lvl0 &lt;br /&gt;
 #       - and was not a recruiting unit &lt;br /&gt;
 #       - and was a not a &amp;quot;non-living&amp;quot; creature&lt;br /&gt;
 # then :&lt;br /&gt;
 # -&amp;gt; if the attacker missed all attacks, it goes to the defender side.&lt;br /&gt;
 # -&amp;gt; if the attacker hit once at least, the defender goes to the attacker side.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		canrecruit=no&lt;br /&gt;
 		[and]&lt;br /&gt;
 			level=0&lt;br /&gt;
 			[or]&lt;br /&gt;
 			level=1&lt;br /&gt;
 			[/or]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 		[and]&lt;br /&gt;
 			[not]&lt;br /&gt;
 			[filter_wml]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=yes&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/filter_wml]&lt;br /&gt;
 			[/not]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmer&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmed&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=charmer.variables.charm_has_worked&lt;br /&gt;
 			equals=no&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmer.side&lt;br /&gt;
 				value=$charmed.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmer&lt;br /&gt;
 				text=&amp;quot;Charm failed!&amp;quot;&lt;br /&gt;
 				{COLOR_HARM}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/then]&lt;br /&gt;
 		[else]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmed.side&lt;br /&gt;
 				value=$charmer.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmed&lt;br /&gt;
 				text=&amp;quot;Charmed!&amp;quot;&lt;br /&gt;
  				{COLOR_HEAL}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/else]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 &lt;br /&gt;
 	{CLEAR_VARIABLE charmer}&lt;br /&gt;
 	{CLEAR_VARIABLE charmed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 &lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
== Works ==&lt;br /&gt;
&lt;br /&gt;
Unit with ability ''works'' will produce 1 gold per turn.&lt;br /&gt;
&lt;br /&gt;
Put this macro into you code before the last piece of code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define ABILITY_WORKS&lt;br /&gt;
     [leadership]&lt;br /&gt;
          value=0&lt;br /&gt;
          id=peasant_works&lt;br /&gt;
          cumulative=no&lt;br /&gt;
          name=&amp;quot;works&amp;quot;&lt;br /&gt;
          description= _ &amp;quot;Works:&lt;br /&gt;
This unit produces 1 gold per turn.&amp;quot;&lt;br /&gt;
    [/leadership]&lt;br /&gt;
 #enddef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Put this event into your code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
	name=side turn&lt;br /&gt;
	first_time_only=no&lt;br /&gt;
	[store_unit]&lt;br /&gt;
		[filter]&lt;br /&gt;
	            #your filter here... for example type=Peasant&lt;br /&gt;
		[/filter]&lt;br /&gt;
		variable=worker&lt;br /&gt;
		kill=no&lt;br /&gt;
	[/store_unit]&lt;br /&gt;
&lt;br /&gt;
		{FOREACH worker i}&lt;br /&gt;
	&lt;br /&gt;
			 [gold]&lt;br /&gt;
                            side=$side_number &lt;br /&gt;
                            amount=1&lt;br /&gt;
                         [/gold] &lt;br /&gt;
			[unstore_unit]&lt;br /&gt;
				variable=worker[$i]&lt;br /&gt;
				text=&amp;quot;1&amp;quot;&lt;br /&gt;
			        red,green,blue=255,255,0 &lt;br /&gt;
			[/unstore_unit]&lt;br /&gt;
				&lt;br /&gt;
		{NEXT i}&lt;br /&gt;
	&lt;br /&gt;
	{CLEAR_VARIABLE worker}&lt;br /&gt;
 [/event]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And give the unit the ability like this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [object]&lt;br /&gt;
     silent=yes&lt;br /&gt;
     [effect]&lt;br /&gt;
	apply_to=new_ability&lt;br /&gt;
           [abilities]&lt;br /&gt;
             {ABILITY_WORKS}&lt;br /&gt;
           [/abilities]&lt;br /&gt;
     [/effect]&lt;br /&gt;
 [/object]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mind Flay  ==&lt;br /&gt;
&lt;br /&gt;
The weapon special gives an attacker 1 point of exp taken from a defender for each hit. This will violate minimum experience (i.e. defender can go below 0). &lt;br /&gt;
&lt;br /&gt;
Give this special to the attack(s) you want it to have. &lt;br /&gt;
 #define WEAPON_SPECIAL_MIND_FLAY&lt;br /&gt;
    [damage]&lt;br /&gt;
        id=mind_flay&lt;br /&gt;
        name=&amp;quot;Mind Flay&amp;quot;&lt;br /&gt;
        description=&amp;quot;When used offensively, each hit of the mind flay attack takes 1 point of experience from the defender and gives it to the attacker.&amp;quot; &lt;br /&gt;
        multiply=1&lt;br /&gt;
    [/damage]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
Include these events into your scenario.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE hit_number 0}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP hit_number add 1}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP second_unit.experience add -$hit_number}&lt;br /&gt;
 	{VARIABLE_OP unit.experience add $hit_number}&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 		text=$hit_number&lt;br /&gt;
 		blue=255&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	{CLEAR_VARIABLE hit_number}&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
Note: In dev version substitute &amp;quot;name=&amp;quot; instead of &amp;quot;weapon=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Initiative  ==&lt;br /&gt;
&lt;br /&gt;
Initiative is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_INITIATIVE TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=initiative&lt;br /&gt;
 	name= _ &amp;quot;initiative&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Initiative:&lt;br /&gt;
 Adjacent allies are granted Firststrike with all weapons.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{VARIABLE unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{VARIABLE second_unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE second_unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== Blitz ==&lt;br /&gt;
&lt;br /&gt;
Blitz is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_BLITZ TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=blitz	&lt;br /&gt;
 	name= _ &amp;quot;blitz&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Blitz:&lt;br /&gt;
 Allies that start their turn adjacent to this unit are granted Skirmisher for that turn.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=side turn&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 		&lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				&lt;br /&gt;
 				[wml_filter]&lt;br /&gt;
 					blitzed=1&lt;br /&gt;
 				[/wml_filter]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitz_refresh&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitz_refresh i}&lt;br /&gt;
 			{CLEAR_VARIABLE blitz_refresh[$i].abilities.skirmisher}&lt;br /&gt;
 			{VARIABLE blitz_refresh[$i].blitzed 0}&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=blitz_refresh[$i]&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 &lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				side=$side_number&lt;br /&gt;
 				[filter_adjacent]&lt;br /&gt;
 					type={TYPE}&lt;br /&gt;
 					is_enemy=no&lt;br /&gt;
 				[/filter_adjacent]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitzed&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitzed i}&lt;br /&gt;
 			[if]&lt;br /&gt;
 				[variable]&lt;br /&gt;
 					name=blitzed[$i].abilities.skirmisher.id&lt;br /&gt;
 					not_equals=&amp;quot;skirmisher&amp;quot;&lt;br /&gt;
 				[/variable]&lt;br /&gt;
 				[then]&lt;br /&gt;
 					{VARIABLE blitzed[$i].blitzed 1}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.id skirmisher}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.name &amp;quot;skirmisher&amp;quot;}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.description  &amp;quot;Skirmisher:&lt;br /&gt;
 This unit is skilled in moving past enemies quickly, and ignores all enemy Zones of Control.&amp;quot;}&lt;br /&gt;
 					[unstore_unit]&lt;br /&gt;
 						variable=blitzed[$i]&lt;br /&gt;
 					[/unstore_unit]&lt;br /&gt;
 				[/then]&lt;br /&gt;
 			[/if]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UsefulWMLFragments]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: UsefulWMLFragments]]&lt;/div&gt;</summary>
		<author><name>Meowreka</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32600</id>
		<title>WML Abilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32600"/>
		<updated>2009-10-07T20:31:55Z</updated>

		<summary type="html">&lt;p&gt;Meowreka: /* Ripped Pocket */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Remember that you must include the WML ability code in every scenario where you intend them to work. Or include them in the unit file inside the [unit_type] tag.&lt;br /&gt;
&lt;br /&gt;
Some abilities require macros from [[WML_Utilities|Utilities]]. &lt;br /&gt;
&lt;br /&gt;
=== Ripped Pocket ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_RIPPED_POCKET&lt;br /&gt;
 # Canned definition of the charm ability to be included in a&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
	id=unit_ripped_pocket&lt;br /&gt;
	name= _ &amp;quot;ripped pocket&amp;quot;&lt;br /&gt;
	name_inactive= _ &amp;quot;ripped pocket&amp;quot;&lt;br /&gt;
	description= _ &amp;quot;ripped pocket : &lt;br /&gt;
 Unit loses two gold at the end of every movement. This is regardless of how many spaces &lt;br /&gt;
 the unit moves, and happens every time they move, even in the same turn.&amp;quot;&lt;br /&gt;
	description_inactive= _ &amp;quot;ripped pocket : &lt;br /&gt;
 Unit loses two gold at the end of every movement. This is regardless of how many spaces &lt;br /&gt;
 the unit moves, and happens every time they move, even in the same turn.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 [event]&lt;br /&gt;
	name=moveto&lt;br /&gt;
	first_time_only=no	&lt;br /&gt;
	[store_unit]&lt;br /&gt;
	[filter]&lt;br /&gt;
	x,y=$x1,$y1&lt;br /&gt;
	[/filter]&lt;br /&gt;
	variable=rippedpocket&lt;br /&gt;
	mode=append&lt;br /&gt;
	[/store_unit]&lt;br /&gt;
 [gold]&lt;br /&gt;
 side=$side_number &lt;br /&gt;
 amount=-2&lt;br /&gt;
 [/gold] &lt;br /&gt;
	[unstore_unit]&lt;br /&gt;
		variable=rippedpocket&lt;br /&gt;
		text=&amp;quot;-2 gold&amp;quot;&lt;br /&gt;
		{COLOR_HARM}&lt;br /&gt;
	[/unstore_unit]&lt;br /&gt;
	&lt;br /&gt;
	{CLEAR_VARIABLE rippedpocket}&lt;br /&gt;
  [/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Knockback  ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''knockback'' attack, it is immediately pushed one hex away from the attacker, at which point the combat ends. Exception: units in villages can't be knocked out of them.&lt;br /&gt;
&lt;br /&gt;
Examples that give ''knockback'' for every Drake Glider on their slam attack, and for the Shock Trooper named Jane:&lt;br /&gt;
 {KNOCKBACK (type=Drake Glider) slam}&lt;br /&gt;
 {KNOCKBACK description=Jane mace}&lt;br /&gt;
&lt;br /&gt;
Requires the macro ''OPPOSITE_SIDE''.&lt;br /&gt;
&lt;br /&gt;
 #define KNOCKBACK FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         [sound]&lt;br /&gt;
             name=ghoul-hit.wav&lt;br /&gt;
         [/sound]&lt;br /&gt;
 &lt;br /&gt;
         {OPPOSITE_SIDE $x2 $y2 $x1 $y1 target_hex}&lt;br /&gt;
 &lt;br /&gt;
         [store_locations]&lt;br /&gt;
             x,y=$x2,$y2&lt;br /&gt;
             terrain=AaBbDeLptUVvYZ&lt;br /&gt;
             variable=defender_in_village&lt;br /&gt;
         [/store_locations]&lt;br /&gt;
         [if]&lt;br /&gt;
             [have_unit]&lt;br /&gt;
                x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
             [/have_unit]&lt;br /&gt;
             [else]&lt;br /&gt;
                 {IF_VAR defender_in_village.length not_equals 1 (&lt;br /&gt;
                     [then]&lt;br /&gt;
                         {STORE_UNIT_VAR x,y=$x2,$y2 side side_of_defender}&lt;br /&gt;
 &lt;br /&gt;
                         [teleport]&lt;br /&gt;
                             [filter]&lt;br /&gt;
                                 x,y=$x2,$y2&lt;br /&gt;
                             [/filter]&lt;br /&gt;
 &lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/teleport]&lt;br /&gt;
 &lt;br /&gt;
                         [capture_village]&lt;br /&gt;
                             side=$side_of_defender&lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/capture_village]&lt;br /&gt;
 &lt;br /&gt;
                         {CLEAR_VARIABLE side_of_defender}&lt;br /&gt;
                     [/then]&lt;br /&gt;
                 )}&lt;br /&gt;
             [/else]&lt;br /&gt;
         [/if]&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE target_hex}&lt;br /&gt;
         {CLEAR_VARIABLE defender_in_village}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Charm ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''charm'' attack, it instantly jumps to the attacker's side, and returns to it's original side at the beginning of that side's turn. A charmed unit has 1 movement point and can attack.&lt;br /&gt;
&lt;br /&gt;
Example that makes all Troll Whelps have charm on their attack:&lt;br /&gt;
&lt;br /&gt;
 {CHARM (type=Troll Whelp) fist}&lt;br /&gt;
&lt;br /&gt;
 #define CHARM FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x1,$y1 side charmer_side}&lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x2,$y2 side charmed_side}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR charmer_side not_equals $charmed_side (&lt;br /&gt;
             [then]&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 variables.real_side $charmed_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 side $charmer_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 moves 1}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
 &lt;br /&gt;
                 {VARIABLE_OP varname format &amp;quot;side_$charmed_side|_units_charmed&amp;quot;}&lt;br /&gt;
                 {VARIABLE $varname yes}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE varname}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE charmer_side}&lt;br /&gt;
         {CLEAR_VARIABLE charmed_side}&lt;br /&gt;
     [/event]&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=side turn&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         {VARIABLE_OP this_side_charmed to_variable &amp;quot;side_$side_number|_units_charmed&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR this_side_charmed equals yes (&lt;br /&gt;
             [then]&lt;br /&gt;
                 [store_unit]&lt;br /&gt;
                     [filter]&lt;br /&gt;
                         [not]&lt;br /&gt;
                             side=$side_number&lt;br /&gt;
                         [/not]&lt;br /&gt;
                     [/filter]&lt;br /&gt;
 &lt;br /&gt;
                     variable=possibly_charmed&lt;br /&gt;
                     kill=no&lt;br /&gt;
                 [/store_unit]&lt;br /&gt;
 &lt;br /&gt;
                 {FOREACH possibly_charmed i}&lt;br /&gt;
                     {VARIABLE_OP real_side format &amp;quot;0$possibly_charmed[$i].variables.real_side&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
                     {IF_VAR real_side not_equals &amp;quot;0&amp;quot; (&lt;br /&gt;
                         [then]&lt;br /&gt;
                             {IF_VAR side_number equals $possibly_charmed[$i].variables.real_side (&lt;br /&gt;
                                 [then]&lt;br /&gt;
                                     {CLEAR_VARIABLE possibly_charmed[$i].variables.real_side}&lt;br /&gt;
                                     {VARIABLE possibly_charmed[$i].side $side_number}&lt;br /&gt;
 &lt;br /&gt;
                                     [unstore_unit]&lt;br /&gt;
                                         variable=possibly_charmed[$i]&lt;br /&gt;
                                         find_vacant=no&lt;br /&gt;
                                     [/unstore_unit]&lt;br /&gt;
                                 [/then]&lt;br /&gt;
                             )}&lt;br /&gt;
                         [/then]&lt;br /&gt;
                     )}&lt;br /&gt;
                 {NEXT i}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE possibly_charmed}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Bloodlust ===&lt;br /&gt;
&lt;br /&gt;
Bloodlust is a very simple ability. If a unit that has bloodlust kills an enemy unit when attacking, it may attack again, provided that there are more enemy units adjacent to it.&lt;br /&gt;
&lt;br /&gt;
This would give the bloodlust ability to all Dwarvish Ulfserkers (making them insanely powerful):&lt;br /&gt;
&lt;br /&gt;
 {BLOODLUST (type=Dwarvish Ulfserker)}&lt;br /&gt;
&lt;br /&gt;
 #define BLOODLUST FILTER&lt;br /&gt;
     [event]&lt;br /&gt;
         name=die&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter_second]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter_second]&lt;br /&gt;
 &lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 moves 0}&lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Pickpocket ===&lt;br /&gt;
&lt;br /&gt;
This special could also be called loot. When a unit with this attack special sucessfully hits an enemy unit, it gains a certain amount of gold.&lt;br /&gt;
&lt;br /&gt;
To do this, use this code:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;#define WEAPON_SPECIAL_PICKPOCKET&amp;lt;br /&amp;gt;&lt;br /&gt;
 # Canned definition of the pickpocket ability to be included in a&amp;lt;br /&amp;gt;&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
   id=weapon_pickpocket&lt;br /&gt;
   name= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   name_inactive= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   description= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   description_inactive= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 # event that creates a &amp;quot;pickpocket has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no   &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]&lt;br /&gt;
   [set_variable]&lt;br /&gt;
      name=unit_att_with_pickpocket.variables.pickpocket_has_worked&lt;br /&gt;
      value=yes&lt;br /&gt;
   [/set_variable]&lt;br /&gt;
   [unstore_unit]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
   [/unstore_unit]   &lt;br /&gt;
   {CLEAR_VARIABLE unit_att_with_pickpocket}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no  &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketer&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x2,$y2&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketed&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [if]&lt;br /&gt;
      [variable]&lt;br /&gt;
         name=pickpocketer.variables.pickpocket_has_worked&lt;br /&gt;
         equals=yes&lt;br /&gt;
      [/variable]&lt;br /&gt;
      [then]&lt;br /&gt;
    [gold]&lt;br /&gt;
     side=$side_number&lt;br /&gt;
     amount=2&lt;br /&gt;
    [/gold]&lt;br /&gt;
         [unstore_unit]&lt;br /&gt;
            variable=pickpocketed&lt;br /&gt;
            text=&amp;quot;!&amp;quot;&lt;br /&gt;
            {COLOR_HEAL}&lt;br /&gt;
         [/unstore_unit]&lt;br /&gt;
      [/then]&lt;br /&gt;
   [/if]   &lt;br /&gt;
   {CLEAR_VARIABLE pickpocketer}&lt;br /&gt;
   {CLEAR_VARIABLE pickpocketed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 #enddef&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be placed after the [unit_type] tag, or in its own .cfg file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To change the amount of gold given per hit, change&lt;br /&gt;
    &amp;lt;code&amp;gt;[gold]&lt;br /&gt;
    side=$side_number&lt;br /&gt;
    amount='''X'''&lt;br /&gt;
    [/gold]&amp;lt;/code&amp;gt;&lt;br /&gt;
Where '''X''' is the amount of gold you want.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want the gold to be constant, given at the end of the turn if at least one of the attack hits, instead of '''X''' amount of gold per hit, change&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attacker_hits'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attack_end'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soultaker===&lt;br /&gt;
&lt;br /&gt;
Any unit with this ability will gain an additional point of damage per strike every time it kills an enemy. Coder(s) unknown, made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=19&amp;amp;t=20100).&lt;br /&gt;
&lt;br /&gt;
To give a unit the ability, place the following in any .cfg file loaded by the campaign or era:&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_SOULTAKER&lt;br /&gt;
 	[dummy]&lt;br /&gt;
 		id=soultaker&lt;br /&gt;
 		name= _ &amp;quot;soultaker&amp;quot;&lt;br /&gt;
 		description=_ &amp;quot;Soultaker:&lt;br /&gt;
 This unit gains an additional point added to its maximum damage whenever it kills a living unit.&amp;quot;&lt;br /&gt;
 	[/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/abilities]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=die&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[filter]&lt;br /&gt;
 		[not]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=&amp;quot;yes&amp;quot;&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/not]&lt;br /&gt;
 	[/filter]&lt;br /&gt;
 &lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		ability=soultaker&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 &lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		{COLOR_HEAL}&lt;br /&gt;
 		text= _ &amp;quot;+1 damage&amp;quot;&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 &lt;br /&gt;
 	[object]&lt;br /&gt;
 		silent=yes&lt;br /&gt;
 		duration=forever&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 &lt;br /&gt;
 		[effect]&lt;br /&gt;
 			apply_to=attack&lt;br /&gt;
 			range=melee&lt;br /&gt;
 			increase_damage=1&lt;br /&gt;
 			increase=1&lt;br /&gt;
 		[/effect]&lt;br /&gt;
 	[/object]&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
And the following in the unit's [abilities] tag:&lt;br /&gt;
&lt;br /&gt;
 	{ABILITY_SOULTAKER}&lt;br /&gt;
&lt;br /&gt;
===Charm (Type 2)===&lt;br /&gt;
&lt;br /&gt;
An attack special. If the attack hits, and the target is level 0 or 1, the target is converted to the attacker's side. However, if it misses, the attacker is converted to the defender's side. Maintainer is krotop, using 1.6.x syntax (and compatible with 1.7.x], made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=21&amp;amp;t=22539)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define WEAPON_SPECIAL_CHARM&lt;br /&gt;
 # Canned definition of the Charm ability to be included in a&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=weapon_charm&lt;br /&gt;
 	name= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	name_inactive= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	description_inactive= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 &lt;br /&gt;
 # event that creates a variable at the beginning of the fight to check if the attacker hit at least once by the end.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]	&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=no&lt;br /&gt;
 	[/set_variable]	&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that creates a &amp;quot;charm has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=yes&lt;br /&gt;
 	[/set_variable]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that shifts a unit to the other side&lt;br /&gt;
 # if the defending unit&lt;br /&gt;
 #       - was not lvl1 or lvl0 &lt;br /&gt;
 #       - and was not a recruiting unit &lt;br /&gt;
 #       - and was a not a &amp;quot;non-living&amp;quot; creature&lt;br /&gt;
 # then :&lt;br /&gt;
 # -&amp;gt; if the attacker missed all attacks, it goes to the defender side.&lt;br /&gt;
 # -&amp;gt; if the attacker hit once at least, the defender goes to the attacker side.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		canrecruit=no&lt;br /&gt;
 		[and]&lt;br /&gt;
 			level=0&lt;br /&gt;
 			[or]&lt;br /&gt;
 			level=1&lt;br /&gt;
 			[/or]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 		[and]&lt;br /&gt;
 			[not]&lt;br /&gt;
 			[filter_wml]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=yes&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/filter_wml]&lt;br /&gt;
 			[/not]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmer&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmed&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=charmer.variables.charm_has_worked&lt;br /&gt;
 			equals=no&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmer.side&lt;br /&gt;
 				value=$charmed.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmer&lt;br /&gt;
 				text=&amp;quot;Charm failed!&amp;quot;&lt;br /&gt;
 				{COLOR_HARM}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/then]&lt;br /&gt;
 		[else]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmed.side&lt;br /&gt;
 				value=$charmer.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmed&lt;br /&gt;
 				text=&amp;quot;Charmed!&amp;quot;&lt;br /&gt;
  				{COLOR_HEAL}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/else]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 &lt;br /&gt;
 	{CLEAR_VARIABLE charmer}&lt;br /&gt;
 	{CLEAR_VARIABLE charmed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 &lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
== Works ==&lt;br /&gt;
&lt;br /&gt;
Unit with ability ''works'' will produce 1 gold per turn.&lt;br /&gt;
&lt;br /&gt;
Put this macro into you code before the last piece of code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define ABILITY_WORKS&lt;br /&gt;
     [leadership]&lt;br /&gt;
          value=0&lt;br /&gt;
          id=peasant_works&lt;br /&gt;
          cumulative=no&lt;br /&gt;
          name=&amp;quot;works&amp;quot;&lt;br /&gt;
          description= _ &amp;quot;Works:&lt;br /&gt;
This unit produces 1 gold per turn.&amp;quot;&lt;br /&gt;
    [/leadership]&lt;br /&gt;
 #enddef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Put this event into your code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
	name=side turn&lt;br /&gt;
	first_time_only=no&lt;br /&gt;
	[store_unit]&lt;br /&gt;
		[filter]&lt;br /&gt;
	            #your filter here... for example type=Peasant&lt;br /&gt;
		[/filter]&lt;br /&gt;
		variable=worker&lt;br /&gt;
		kill=no&lt;br /&gt;
	[/store_unit]&lt;br /&gt;
&lt;br /&gt;
		{FOREACH worker i}&lt;br /&gt;
	&lt;br /&gt;
			 [gold]&lt;br /&gt;
                            side=$side_number &lt;br /&gt;
                            amount=1&lt;br /&gt;
                         [/gold] &lt;br /&gt;
			[unstore_unit]&lt;br /&gt;
				variable=worker[$i]&lt;br /&gt;
				text=&amp;quot;1&amp;quot;&lt;br /&gt;
			        red,green,blue=255,255,0 &lt;br /&gt;
			[/unstore_unit]&lt;br /&gt;
				&lt;br /&gt;
		{NEXT i}&lt;br /&gt;
	&lt;br /&gt;
	{CLEAR_VARIABLE worker}&lt;br /&gt;
 [/event]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And give the unit the ability like this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [object]&lt;br /&gt;
     silent=yes&lt;br /&gt;
     [effect]&lt;br /&gt;
	apply_to=new_ability&lt;br /&gt;
           [abilities]&lt;br /&gt;
             {ABILITY_WORKS}&lt;br /&gt;
           [/abilities]&lt;br /&gt;
     [/effect]&lt;br /&gt;
 [/object]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mind Flay  ==&lt;br /&gt;
&lt;br /&gt;
The weapon special gives an attacker 1 point of exp taken from a defender for each hit. This will violate minimum experience (i.e. defender can go below 0). &lt;br /&gt;
&lt;br /&gt;
Give this special to the attack(s) you want it to have. &lt;br /&gt;
 #define WEAPON_SPECIAL_MIND_FLAY&lt;br /&gt;
    [damage]&lt;br /&gt;
        id=mind_flay&lt;br /&gt;
        name=&amp;quot;Mind Flay&amp;quot;&lt;br /&gt;
        description=&amp;quot;When used offensively, each hit of the mind flay attack takes 1 point of experience from the defender and gives it to the attacker.&amp;quot; &lt;br /&gt;
        multiply=1&lt;br /&gt;
    [/damage]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
Include these events into your scenario.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE hit_number 0}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP hit_number add 1}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP second_unit.experience add -$hit_number}&lt;br /&gt;
 	{VARIABLE_OP unit.experience add $hit_number}&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 		text=$hit_number&lt;br /&gt;
 		blue=255&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	{CLEAR_VARIABLE hit_number}&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
Note: In dev version substitute &amp;quot;name=&amp;quot; instead of &amp;quot;weapon=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Initiative  ==&lt;br /&gt;
&lt;br /&gt;
Initiative is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_INITIATIVE TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=initiative&lt;br /&gt;
 	name= _ &amp;quot;initiative&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Initiative:&lt;br /&gt;
 Adjacent allies are granted Firststrike with all weapons.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{VARIABLE unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{VARIABLE second_unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE second_unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== Blitz ==&lt;br /&gt;
&lt;br /&gt;
Blitz is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_BLITZ TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=blitz	&lt;br /&gt;
 	name= _ &amp;quot;blitz&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Blitz:&lt;br /&gt;
 Allies that start their turn adjacent to this unit are granted Skirmisher for that turn.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=side turn&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 		&lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				&lt;br /&gt;
 				[wml_filter]&lt;br /&gt;
 					blitzed=1&lt;br /&gt;
 				[/wml_filter]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitz_refresh&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitz_refresh i}&lt;br /&gt;
 			{CLEAR_VARIABLE blitz_refresh[$i].abilities.skirmisher}&lt;br /&gt;
 			{VARIABLE blitz_refresh[$i].blitzed 0}&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=blitz_refresh[$i]&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 &lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				side=$side_number&lt;br /&gt;
 				[filter_adjacent]&lt;br /&gt;
 					type={TYPE}&lt;br /&gt;
 					is_enemy=no&lt;br /&gt;
 				[/filter_adjacent]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitzed&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitzed i}&lt;br /&gt;
 			[if]&lt;br /&gt;
 				[variable]&lt;br /&gt;
 					name=blitzed[$i].abilities.skirmisher.id&lt;br /&gt;
 					not_equals=&amp;quot;skirmisher&amp;quot;&lt;br /&gt;
 				[/variable]&lt;br /&gt;
 				[then]&lt;br /&gt;
 					{VARIABLE blitzed[$i].blitzed 1}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.id skirmisher}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.name &amp;quot;skirmisher&amp;quot;}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.description  &amp;quot;Skirmisher:&lt;br /&gt;
 This unit is skilled in moving past enemies quickly, and ignores all enemy Zones of Control.&amp;quot;}&lt;br /&gt;
 					[unstore_unit]&lt;br /&gt;
 						variable=blitzed[$i]&lt;br /&gt;
 					[/unstore_unit]&lt;br /&gt;
 				[/then]&lt;br /&gt;
 			[/if]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UsefulWMLFragments]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: UsefulWMLFragments]]&lt;/div&gt;</summary>
		<author><name>Meowreka</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32599</id>
		<title>WML Abilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32599"/>
		<updated>2009-10-07T20:30:55Z</updated>

		<summary type="html">&lt;p&gt;Meowreka: /* Ripped Pocket */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Remember that you must include the WML ability code in every scenario where you intend them to work. Or include them in the unit file inside the [unit_type] tag.&lt;br /&gt;
&lt;br /&gt;
Some abilities require macros from [[WML_Utilities|Utilities]]. &lt;br /&gt;
&lt;br /&gt;
=== Ripped Pocket ===&lt;br /&gt;
&lt;br /&gt;
=== Knockback  ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''knockback'' attack, it is immediately pushed one hex away from the attacker, at which point the combat ends. Exception: units in villages can't be knocked out of them.&lt;br /&gt;
&lt;br /&gt;
Examples that give ''knockback'' for every Drake Glider on their slam attack, and for the Shock Trooper named Jane:&lt;br /&gt;
 {KNOCKBACK (type=Drake Glider) slam}&lt;br /&gt;
 {KNOCKBACK description=Jane mace}&lt;br /&gt;
&lt;br /&gt;
Requires the macro ''OPPOSITE_SIDE''.&lt;br /&gt;
&lt;br /&gt;
 #define KNOCKBACK FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         [sound]&lt;br /&gt;
             name=ghoul-hit.wav&lt;br /&gt;
         [/sound]&lt;br /&gt;
 &lt;br /&gt;
         {OPPOSITE_SIDE $x2 $y2 $x1 $y1 target_hex}&lt;br /&gt;
 &lt;br /&gt;
         [store_locations]&lt;br /&gt;
             x,y=$x2,$y2&lt;br /&gt;
             terrain=AaBbDeLptUVvYZ&lt;br /&gt;
             variable=defender_in_village&lt;br /&gt;
         [/store_locations]&lt;br /&gt;
         [if]&lt;br /&gt;
             [have_unit]&lt;br /&gt;
                x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
             [/have_unit]&lt;br /&gt;
             [else]&lt;br /&gt;
                 {IF_VAR defender_in_village.length not_equals 1 (&lt;br /&gt;
                     [then]&lt;br /&gt;
                         {STORE_UNIT_VAR x,y=$x2,$y2 side side_of_defender}&lt;br /&gt;
 &lt;br /&gt;
                         [teleport]&lt;br /&gt;
                             [filter]&lt;br /&gt;
                                 x,y=$x2,$y2&lt;br /&gt;
                             [/filter]&lt;br /&gt;
 &lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/teleport]&lt;br /&gt;
 &lt;br /&gt;
                         [capture_village]&lt;br /&gt;
                             side=$side_of_defender&lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/capture_village]&lt;br /&gt;
 &lt;br /&gt;
                         {CLEAR_VARIABLE side_of_defender}&lt;br /&gt;
                     [/then]&lt;br /&gt;
                 )}&lt;br /&gt;
             [/else]&lt;br /&gt;
         [/if]&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE target_hex}&lt;br /&gt;
         {CLEAR_VARIABLE defender_in_village}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Charm ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''charm'' attack, it instantly jumps to the attacker's side, and returns to it's original side at the beginning of that side's turn. A charmed unit has 1 movement point and can attack.&lt;br /&gt;
&lt;br /&gt;
Example that makes all Troll Whelps have charm on their attack:&lt;br /&gt;
&lt;br /&gt;
 {CHARM (type=Troll Whelp) fist}&lt;br /&gt;
&lt;br /&gt;
 #define CHARM FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x1,$y1 side charmer_side}&lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x2,$y2 side charmed_side}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR charmer_side not_equals $charmed_side (&lt;br /&gt;
             [then]&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 variables.real_side $charmed_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 side $charmer_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 moves 1}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
 &lt;br /&gt;
                 {VARIABLE_OP varname format &amp;quot;side_$charmed_side|_units_charmed&amp;quot;}&lt;br /&gt;
                 {VARIABLE $varname yes}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE varname}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE charmer_side}&lt;br /&gt;
         {CLEAR_VARIABLE charmed_side}&lt;br /&gt;
     [/event]&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=side turn&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         {VARIABLE_OP this_side_charmed to_variable &amp;quot;side_$side_number|_units_charmed&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR this_side_charmed equals yes (&lt;br /&gt;
             [then]&lt;br /&gt;
                 [store_unit]&lt;br /&gt;
                     [filter]&lt;br /&gt;
                         [not]&lt;br /&gt;
                             side=$side_number&lt;br /&gt;
                         [/not]&lt;br /&gt;
                     [/filter]&lt;br /&gt;
 &lt;br /&gt;
                     variable=possibly_charmed&lt;br /&gt;
                     kill=no&lt;br /&gt;
                 [/store_unit]&lt;br /&gt;
 &lt;br /&gt;
                 {FOREACH possibly_charmed i}&lt;br /&gt;
                     {VARIABLE_OP real_side format &amp;quot;0$possibly_charmed[$i].variables.real_side&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
                     {IF_VAR real_side not_equals &amp;quot;0&amp;quot; (&lt;br /&gt;
                         [then]&lt;br /&gt;
                             {IF_VAR side_number equals $possibly_charmed[$i].variables.real_side (&lt;br /&gt;
                                 [then]&lt;br /&gt;
                                     {CLEAR_VARIABLE possibly_charmed[$i].variables.real_side}&lt;br /&gt;
                                     {VARIABLE possibly_charmed[$i].side $side_number}&lt;br /&gt;
 &lt;br /&gt;
                                     [unstore_unit]&lt;br /&gt;
                                         variable=possibly_charmed[$i]&lt;br /&gt;
                                         find_vacant=no&lt;br /&gt;
                                     [/unstore_unit]&lt;br /&gt;
                                 [/then]&lt;br /&gt;
                             )}&lt;br /&gt;
                         [/then]&lt;br /&gt;
                     )}&lt;br /&gt;
                 {NEXT i}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE possibly_charmed}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Bloodlust ===&lt;br /&gt;
&lt;br /&gt;
Bloodlust is a very simple ability. If a unit that has bloodlust kills an enemy unit when attacking, it may attack again, provided that there are more enemy units adjacent to it.&lt;br /&gt;
&lt;br /&gt;
This would give the bloodlust ability to all Dwarvish Ulfserkers (making them insanely powerful):&lt;br /&gt;
&lt;br /&gt;
 {BLOODLUST (type=Dwarvish Ulfserker)}&lt;br /&gt;
&lt;br /&gt;
 #define BLOODLUST FILTER&lt;br /&gt;
     [event]&lt;br /&gt;
         name=die&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter_second]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter_second]&lt;br /&gt;
 &lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 moves 0}&lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Pickpocket ===&lt;br /&gt;
&lt;br /&gt;
This special could also be called loot. When a unit with this attack special sucessfully hits an enemy unit, it gains a certain amount of gold.&lt;br /&gt;
&lt;br /&gt;
To do this, use this code:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;#define WEAPON_SPECIAL_PICKPOCKET&amp;lt;br /&amp;gt;&lt;br /&gt;
 # Canned definition of the pickpocket ability to be included in a&amp;lt;br /&amp;gt;&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
   id=weapon_pickpocket&lt;br /&gt;
   name= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   name_inactive= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   description= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   description_inactive= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 # event that creates a &amp;quot;pickpocket has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no   &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]&lt;br /&gt;
   [set_variable]&lt;br /&gt;
      name=unit_att_with_pickpocket.variables.pickpocket_has_worked&lt;br /&gt;
      value=yes&lt;br /&gt;
   [/set_variable]&lt;br /&gt;
   [unstore_unit]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
   [/unstore_unit]   &lt;br /&gt;
   {CLEAR_VARIABLE unit_att_with_pickpocket}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no  &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketer&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x2,$y2&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketed&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [if]&lt;br /&gt;
      [variable]&lt;br /&gt;
         name=pickpocketer.variables.pickpocket_has_worked&lt;br /&gt;
         equals=yes&lt;br /&gt;
      [/variable]&lt;br /&gt;
      [then]&lt;br /&gt;
    [gold]&lt;br /&gt;
     side=$side_number&lt;br /&gt;
     amount=2&lt;br /&gt;
    [/gold]&lt;br /&gt;
         [unstore_unit]&lt;br /&gt;
            variable=pickpocketed&lt;br /&gt;
            text=&amp;quot;!&amp;quot;&lt;br /&gt;
            {COLOR_HEAL}&lt;br /&gt;
         [/unstore_unit]&lt;br /&gt;
      [/then]&lt;br /&gt;
   [/if]   &lt;br /&gt;
   {CLEAR_VARIABLE pickpocketer}&lt;br /&gt;
   {CLEAR_VARIABLE pickpocketed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 #enddef&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be placed after the [unit_type] tag, or in its own .cfg file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To change the amount of gold given per hit, change&lt;br /&gt;
    &amp;lt;code&amp;gt;[gold]&lt;br /&gt;
    side=$side_number&lt;br /&gt;
    amount='''X'''&lt;br /&gt;
    [/gold]&amp;lt;/code&amp;gt;&lt;br /&gt;
Where '''X''' is the amount of gold you want.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want the gold to be constant, given at the end of the turn if at least one of the attack hits, instead of '''X''' amount of gold per hit, change&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attacker_hits'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attack_end'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soultaker===&lt;br /&gt;
&lt;br /&gt;
Any unit with this ability will gain an additional point of damage per strike every time it kills an enemy. Coder(s) unknown, made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=19&amp;amp;t=20100).&lt;br /&gt;
&lt;br /&gt;
To give a unit the ability, place the following in any .cfg file loaded by the campaign or era:&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_SOULTAKER&lt;br /&gt;
 	[dummy]&lt;br /&gt;
 		id=soultaker&lt;br /&gt;
 		name= _ &amp;quot;soultaker&amp;quot;&lt;br /&gt;
 		description=_ &amp;quot;Soultaker:&lt;br /&gt;
 This unit gains an additional point added to its maximum damage whenever it kills a living unit.&amp;quot;&lt;br /&gt;
 	[/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/abilities]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=die&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[filter]&lt;br /&gt;
 		[not]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=&amp;quot;yes&amp;quot;&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/not]&lt;br /&gt;
 	[/filter]&lt;br /&gt;
 &lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		ability=soultaker&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 &lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		{COLOR_HEAL}&lt;br /&gt;
 		text= _ &amp;quot;+1 damage&amp;quot;&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 &lt;br /&gt;
 	[object]&lt;br /&gt;
 		silent=yes&lt;br /&gt;
 		duration=forever&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 &lt;br /&gt;
 		[effect]&lt;br /&gt;
 			apply_to=attack&lt;br /&gt;
 			range=melee&lt;br /&gt;
 			increase_damage=1&lt;br /&gt;
 			increase=1&lt;br /&gt;
 		[/effect]&lt;br /&gt;
 	[/object]&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
And the following in the unit's [abilities] tag:&lt;br /&gt;
&lt;br /&gt;
 	{ABILITY_SOULTAKER}&lt;br /&gt;
&lt;br /&gt;
===Charm (Type 2)===&lt;br /&gt;
&lt;br /&gt;
An attack special. If the attack hits, and the target is level 0 or 1, the target is converted to the attacker's side. However, if it misses, the attacker is converted to the defender's side. Maintainer is krotop, using 1.6.x syntax (and compatible with 1.7.x], made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=21&amp;amp;t=22539)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define WEAPON_SPECIAL_CHARM&lt;br /&gt;
 # Canned definition of the Charm ability to be included in a&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=weapon_charm&lt;br /&gt;
 	name= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	name_inactive= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	description_inactive= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 &lt;br /&gt;
 # event that creates a variable at the beginning of the fight to check if the attacker hit at least once by the end.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]	&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=no&lt;br /&gt;
 	[/set_variable]	&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that creates a &amp;quot;charm has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=yes&lt;br /&gt;
 	[/set_variable]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that shifts a unit to the other side&lt;br /&gt;
 # if the defending unit&lt;br /&gt;
 #       - was not lvl1 or lvl0 &lt;br /&gt;
 #       - and was not a recruiting unit &lt;br /&gt;
 #       - and was a not a &amp;quot;non-living&amp;quot; creature&lt;br /&gt;
 # then :&lt;br /&gt;
 # -&amp;gt; if the attacker missed all attacks, it goes to the defender side.&lt;br /&gt;
 # -&amp;gt; if the attacker hit once at least, the defender goes to the attacker side.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		canrecruit=no&lt;br /&gt;
 		[and]&lt;br /&gt;
 			level=0&lt;br /&gt;
 			[or]&lt;br /&gt;
 			level=1&lt;br /&gt;
 			[/or]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 		[and]&lt;br /&gt;
 			[not]&lt;br /&gt;
 			[filter_wml]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=yes&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/filter_wml]&lt;br /&gt;
 			[/not]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmer&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmed&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=charmer.variables.charm_has_worked&lt;br /&gt;
 			equals=no&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmer.side&lt;br /&gt;
 				value=$charmed.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmer&lt;br /&gt;
 				text=&amp;quot;Charm failed!&amp;quot;&lt;br /&gt;
 				{COLOR_HARM}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/then]&lt;br /&gt;
 		[else]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmed.side&lt;br /&gt;
 				value=$charmer.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmed&lt;br /&gt;
 				text=&amp;quot;Charmed!&amp;quot;&lt;br /&gt;
  				{COLOR_HEAL}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/else]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 &lt;br /&gt;
 	{CLEAR_VARIABLE charmer}&lt;br /&gt;
 	{CLEAR_VARIABLE charmed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 &lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
== Works ==&lt;br /&gt;
&lt;br /&gt;
Unit with ability ''works'' will produce 1 gold per turn.&lt;br /&gt;
&lt;br /&gt;
Put this macro into you code before the last piece of code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define ABILITY_WORKS&lt;br /&gt;
     [leadership]&lt;br /&gt;
          value=0&lt;br /&gt;
          id=peasant_works&lt;br /&gt;
          cumulative=no&lt;br /&gt;
          name=&amp;quot;works&amp;quot;&lt;br /&gt;
          description= _ &amp;quot;Works:&lt;br /&gt;
This unit produces 1 gold per turn.&amp;quot;&lt;br /&gt;
    [/leadership]&lt;br /&gt;
 #enddef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Put this event into your code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
	name=side turn&lt;br /&gt;
	first_time_only=no&lt;br /&gt;
	[store_unit]&lt;br /&gt;
		[filter]&lt;br /&gt;
	            #your filter here... for example type=Peasant&lt;br /&gt;
		[/filter]&lt;br /&gt;
		variable=worker&lt;br /&gt;
		kill=no&lt;br /&gt;
	[/store_unit]&lt;br /&gt;
&lt;br /&gt;
		{FOREACH worker i}&lt;br /&gt;
	&lt;br /&gt;
			 [gold]&lt;br /&gt;
                            side=$side_number &lt;br /&gt;
                            amount=1&lt;br /&gt;
                         [/gold] &lt;br /&gt;
			[unstore_unit]&lt;br /&gt;
				variable=worker[$i]&lt;br /&gt;
				text=&amp;quot;1&amp;quot;&lt;br /&gt;
			        red,green,blue=255,255,0 &lt;br /&gt;
			[/unstore_unit]&lt;br /&gt;
				&lt;br /&gt;
		{NEXT i}&lt;br /&gt;
	&lt;br /&gt;
	{CLEAR_VARIABLE worker}&lt;br /&gt;
 [/event]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And give the unit the ability like this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [object]&lt;br /&gt;
     silent=yes&lt;br /&gt;
     [effect]&lt;br /&gt;
	apply_to=new_ability&lt;br /&gt;
           [abilities]&lt;br /&gt;
             {ABILITY_WORKS}&lt;br /&gt;
           [/abilities]&lt;br /&gt;
     [/effect]&lt;br /&gt;
 [/object]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mind Flay  ==&lt;br /&gt;
&lt;br /&gt;
The weapon special gives an attacker 1 point of exp taken from a defender for each hit. This will violate minimum experience (i.e. defender can go below 0). &lt;br /&gt;
&lt;br /&gt;
Give this special to the attack(s) you want it to have. &lt;br /&gt;
 #define WEAPON_SPECIAL_MIND_FLAY&lt;br /&gt;
    [damage]&lt;br /&gt;
        id=mind_flay&lt;br /&gt;
        name=&amp;quot;Mind Flay&amp;quot;&lt;br /&gt;
        description=&amp;quot;When used offensively, each hit of the mind flay attack takes 1 point of experience from the defender and gives it to the attacker.&amp;quot; &lt;br /&gt;
        multiply=1&lt;br /&gt;
    [/damage]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
Include these events into your scenario.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE hit_number 0}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP hit_number add 1}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP second_unit.experience add -$hit_number}&lt;br /&gt;
 	{VARIABLE_OP unit.experience add $hit_number}&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 		text=$hit_number&lt;br /&gt;
 		blue=255&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	{CLEAR_VARIABLE hit_number}&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
Note: In dev version substitute &amp;quot;name=&amp;quot; instead of &amp;quot;weapon=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Initiative  ==&lt;br /&gt;
&lt;br /&gt;
Initiative is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_INITIATIVE TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=initiative&lt;br /&gt;
 	name= _ &amp;quot;initiative&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Initiative:&lt;br /&gt;
 Adjacent allies are granted Firststrike with all weapons.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{VARIABLE unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{VARIABLE second_unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE second_unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== Blitz ==&lt;br /&gt;
&lt;br /&gt;
Blitz is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_BLITZ TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=blitz	&lt;br /&gt;
 	name= _ &amp;quot;blitz&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Blitz:&lt;br /&gt;
 Allies that start their turn adjacent to this unit are granted Skirmisher for that turn.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=side turn&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 		&lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				&lt;br /&gt;
 				[wml_filter]&lt;br /&gt;
 					blitzed=1&lt;br /&gt;
 				[/wml_filter]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitz_refresh&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitz_refresh i}&lt;br /&gt;
 			{CLEAR_VARIABLE blitz_refresh[$i].abilities.skirmisher}&lt;br /&gt;
 			{VARIABLE blitz_refresh[$i].blitzed 0}&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=blitz_refresh[$i]&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 &lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				side=$side_number&lt;br /&gt;
 				[filter_adjacent]&lt;br /&gt;
 					type={TYPE}&lt;br /&gt;
 					is_enemy=no&lt;br /&gt;
 				[/filter_adjacent]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitzed&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitzed i}&lt;br /&gt;
 			[if]&lt;br /&gt;
 				[variable]&lt;br /&gt;
 					name=blitzed[$i].abilities.skirmisher.id&lt;br /&gt;
 					not_equals=&amp;quot;skirmisher&amp;quot;&lt;br /&gt;
 				[/variable]&lt;br /&gt;
 				[then]&lt;br /&gt;
 					{VARIABLE blitzed[$i].blitzed 1}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.id skirmisher}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.name &amp;quot;skirmisher&amp;quot;}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.description  &amp;quot;Skirmisher:&lt;br /&gt;
 This unit is skilled in moving past enemies quickly, and ignores all enemy Zones of Control.&amp;quot;}&lt;br /&gt;
 					[unstore_unit]&lt;br /&gt;
 						variable=blitzed[$i]&lt;br /&gt;
 					[/unstore_unit]&lt;br /&gt;
 				[/then]&lt;br /&gt;
 			[/if]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UsefulWMLFragments]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: UsefulWMLFragments]]&lt;/div&gt;</summary>
		<author><name>Meowreka</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32598</id>
		<title>WML Abilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32598"/>
		<updated>2009-10-07T20:30:32Z</updated>

		<summary type="html">&lt;p&gt;Meowreka: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Remember that you must include the WML ability code in every scenario where you intend them to work. Or include them in the unit file inside the [unit_type] tag.&lt;br /&gt;
&lt;br /&gt;
Some abilities require macros from [[WML_Utilities|Utilities]]. &lt;br /&gt;
&lt;br /&gt;
== Ripped Pocket ==&lt;br /&gt;
&lt;br /&gt;
=== Knockback  ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''knockback'' attack, it is immediately pushed one hex away from the attacker, at which point the combat ends. Exception: units in villages can't be knocked out of them.&lt;br /&gt;
&lt;br /&gt;
Examples that give ''knockback'' for every Drake Glider on their slam attack, and for the Shock Trooper named Jane:&lt;br /&gt;
 {KNOCKBACK (type=Drake Glider) slam}&lt;br /&gt;
 {KNOCKBACK description=Jane mace}&lt;br /&gt;
&lt;br /&gt;
Requires the macro ''OPPOSITE_SIDE''.&lt;br /&gt;
&lt;br /&gt;
 #define KNOCKBACK FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         [sound]&lt;br /&gt;
             name=ghoul-hit.wav&lt;br /&gt;
         [/sound]&lt;br /&gt;
 &lt;br /&gt;
         {OPPOSITE_SIDE $x2 $y2 $x1 $y1 target_hex}&lt;br /&gt;
 &lt;br /&gt;
         [store_locations]&lt;br /&gt;
             x,y=$x2,$y2&lt;br /&gt;
             terrain=AaBbDeLptUVvYZ&lt;br /&gt;
             variable=defender_in_village&lt;br /&gt;
         [/store_locations]&lt;br /&gt;
         [if]&lt;br /&gt;
             [have_unit]&lt;br /&gt;
                x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
             [/have_unit]&lt;br /&gt;
             [else]&lt;br /&gt;
                 {IF_VAR defender_in_village.length not_equals 1 (&lt;br /&gt;
                     [then]&lt;br /&gt;
                         {STORE_UNIT_VAR x,y=$x2,$y2 side side_of_defender}&lt;br /&gt;
 &lt;br /&gt;
                         [teleport]&lt;br /&gt;
                             [filter]&lt;br /&gt;
                                 x,y=$x2,$y2&lt;br /&gt;
                             [/filter]&lt;br /&gt;
 &lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/teleport]&lt;br /&gt;
 &lt;br /&gt;
                         [capture_village]&lt;br /&gt;
                             side=$side_of_defender&lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/capture_village]&lt;br /&gt;
 &lt;br /&gt;
                         {CLEAR_VARIABLE side_of_defender}&lt;br /&gt;
                     [/then]&lt;br /&gt;
                 )}&lt;br /&gt;
             [/else]&lt;br /&gt;
         [/if]&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE target_hex}&lt;br /&gt;
         {CLEAR_VARIABLE defender_in_village}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Charm ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''charm'' attack, it instantly jumps to the attacker's side, and returns to it's original side at the beginning of that side's turn. A charmed unit has 1 movement point and can attack.&lt;br /&gt;
&lt;br /&gt;
Example that makes all Troll Whelps have charm on their attack:&lt;br /&gt;
&lt;br /&gt;
 {CHARM (type=Troll Whelp) fist}&lt;br /&gt;
&lt;br /&gt;
 #define CHARM FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x1,$y1 side charmer_side}&lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x2,$y2 side charmed_side}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR charmer_side not_equals $charmed_side (&lt;br /&gt;
             [then]&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 variables.real_side $charmed_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 side $charmer_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 moves 1}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
 &lt;br /&gt;
                 {VARIABLE_OP varname format &amp;quot;side_$charmed_side|_units_charmed&amp;quot;}&lt;br /&gt;
                 {VARIABLE $varname yes}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE varname}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE charmer_side}&lt;br /&gt;
         {CLEAR_VARIABLE charmed_side}&lt;br /&gt;
     [/event]&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=side turn&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         {VARIABLE_OP this_side_charmed to_variable &amp;quot;side_$side_number|_units_charmed&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR this_side_charmed equals yes (&lt;br /&gt;
             [then]&lt;br /&gt;
                 [store_unit]&lt;br /&gt;
                     [filter]&lt;br /&gt;
                         [not]&lt;br /&gt;
                             side=$side_number&lt;br /&gt;
                         [/not]&lt;br /&gt;
                     [/filter]&lt;br /&gt;
 &lt;br /&gt;
                     variable=possibly_charmed&lt;br /&gt;
                     kill=no&lt;br /&gt;
                 [/store_unit]&lt;br /&gt;
 &lt;br /&gt;
                 {FOREACH possibly_charmed i}&lt;br /&gt;
                     {VARIABLE_OP real_side format &amp;quot;0$possibly_charmed[$i].variables.real_side&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
                     {IF_VAR real_side not_equals &amp;quot;0&amp;quot; (&lt;br /&gt;
                         [then]&lt;br /&gt;
                             {IF_VAR side_number equals $possibly_charmed[$i].variables.real_side (&lt;br /&gt;
                                 [then]&lt;br /&gt;
                                     {CLEAR_VARIABLE possibly_charmed[$i].variables.real_side}&lt;br /&gt;
                                     {VARIABLE possibly_charmed[$i].side $side_number}&lt;br /&gt;
 &lt;br /&gt;
                                     [unstore_unit]&lt;br /&gt;
                                         variable=possibly_charmed[$i]&lt;br /&gt;
                                         find_vacant=no&lt;br /&gt;
                                     [/unstore_unit]&lt;br /&gt;
                                 [/then]&lt;br /&gt;
                             )}&lt;br /&gt;
                         [/then]&lt;br /&gt;
                     )}&lt;br /&gt;
                 {NEXT i}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE possibly_charmed}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Bloodlust ===&lt;br /&gt;
&lt;br /&gt;
Bloodlust is a very simple ability. If a unit that has bloodlust kills an enemy unit when attacking, it may attack again, provided that there are more enemy units adjacent to it.&lt;br /&gt;
&lt;br /&gt;
This would give the bloodlust ability to all Dwarvish Ulfserkers (making them insanely powerful):&lt;br /&gt;
&lt;br /&gt;
 {BLOODLUST (type=Dwarvish Ulfserker)}&lt;br /&gt;
&lt;br /&gt;
 #define BLOODLUST FILTER&lt;br /&gt;
     [event]&lt;br /&gt;
         name=die&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter_second]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter_second]&lt;br /&gt;
 &lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 moves 0}&lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Pickpocket ===&lt;br /&gt;
&lt;br /&gt;
This special could also be called loot. When a unit with this attack special sucessfully hits an enemy unit, it gains a certain amount of gold.&lt;br /&gt;
&lt;br /&gt;
To do this, use this code:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;#define WEAPON_SPECIAL_PICKPOCKET&amp;lt;br /&amp;gt;&lt;br /&gt;
 # Canned definition of the pickpocket ability to be included in a&amp;lt;br /&amp;gt;&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
   id=weapon_pickpocket&lt;br /&gt;
   name= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   name_inactive= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   description= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   description_inactive= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 # event that creates a &amp;quot;pickpocket has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no   &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]&lt;br /&gt;
   [set_variable]&lt;br /&gt;
      name=unit_att_with_pickpocket.variables.pickpocket_has_worked&lt;br /&gt;
      value=yes&lt;br /&gt;
   [/set_variable]&lt;br /&gt;
   [unstore_unit]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
   [/unstore_unit]   &lt;br /&gt;
   {CLEAR_VARIABLE unit_att_with_pickpocket}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no  &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketer&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x2,$y2&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketed&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [if]&lt;br /&gt;
      [variable]&lt;br /&gt;
         name=pickpocketer.variables.pickpocket_has_worked&lt;br /&gt;
         equals=yes&lt;br /&gt;
      [/variable]&lt;br /&gt;
      [then]&lt;br /&gt;
    [gold]&lt;br /&gt;
     side=$side_number&lt;br /&gt;
     amount=2&lt;br /&gt;
    [/gold]&lt;br /&gt;
         [unstore_unit]&lt;br /&gt;
            variable=pickpocketed&lt;br /&gt;
            text=&amp;quot;!&amp;quot;&lt;br /&gt;
            {COLOR_HEAL}&lt;br /&gt;
         [/unstore_unit]&lt;br /&gt;
      [/then]&lt;br /&gt;
   [/if]   &lt;br /&gt;
   {CLEAR_VARIABLE pickpocketer}&lt;br /&gt;
   {CLEAR_VARIABLE pickpocketed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 #enddef&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be placed after the [unit_type] tag, or in its own .cfg file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To change the amount of gold given per hit, change&lt;br /&gt;
    &amp;lt;code&amp;gt;[gold]&lt;br /&gt;
    side=$side_number&lt;br /&gt;
    amount='''X'''&lt;br /&gt;
    [/gold]&amp;lt;/code&amp;gt;&lt;br /&gt;
Where '''X''' is the amount of gold you want.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want the gold to be constant, given at the end of the turn if at least one of the attack hits, instead of '''X''' amount of gold per hit, change&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attacker_hits'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attack_end'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soultaker===&lt;br /&gt;
&lt;br /&gt;
Any unit with this ability will gain an additional point of damage per strike every time it kills an enemy. Coder(s) unknown, made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=19&amp;amp;t=20100).&lt;br /&gt;
&lt;br /&gt;
To give a unit the ability, place the following in any .cfg file loaded by the campaign or era:&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_SOULTAKER&lt;br /&gt;
 	[dummy]&lt;br /&gt;
 		id=soultaker&lt;br /&gt;
 		name= _ &amp;quot;soultaker&amp;quot;&lt;br /&gt;
 		description=_ &amp;quot;Soultaker:&lt;br /&gt;
 This unit gains an additional point added to its maximum damage whenever it kills a living unit.&amp;quot;&lt;br /&gt;
 	[/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/abilities]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=die&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[filter]&lt;br /&gt;
 		[not]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=&amp;quot;yes&amp;quot;&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/not]&lt;br /&gt;
 	[/filter]&lt;br /&gt;
 &lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		ability=soultaker&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 &lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		{COLOR_HEAL}&lt;br /&gt;
 		text= _ &amp;quot;+1 damage&amp;quot;&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 &lt;br /&gt;
 	[object]&lt;br /&gt;
 		silent=yes&lt;br /&gt;
 		duration=forever&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 &lt;br /&gt;
 		[effect]&lt;br /&gt;
 			apply_to=attack&lt;br /&gt;
 			range=melee&lt;br /&gt;
 			increase_damage=1&lt;br /&gt;
 			increase=1&lt;br /&gt;
 		[/effect]&lt;br /&gt;
 	[/object]&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
And the following in the unit's [abilities] tag:&lt;br /&gt;
&lt;br /&gt;
 	{ABILITY_SOULTAKER}&lt;br /&gt;
&lt;br /&gt;
===Charm (Type 2)===&lt;br /&gt;
&lt;br /&gt;
An attack special. If the attack hits, and the target is level 0 or 1, the target is converted to the attacker's side. However, if it misses, the attacker is converted to the defender's side. Maintainer is krotop, using 1.6.x syntax (and compatible with 1.7.x], made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=21&amp;amp;t=22539)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define WEAPON_SPECIAL_CHARM&lt;br /&gt;
 # Canned definition of the Charm ability to be included in a&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=weapon_charm&lt;br /&gt;
 	name= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	name_inactive= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	description_inactive= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 &lt;br /&gt;
 # event that creates a variable at the beginning of the fight to check if the attacker hit at least once by the end.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]	&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=no&lt;br /&gt;
 	[/set_variable]	&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that creates a &amp;quot;charm has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=yes&lt;br /&gt;
 	[/set_variable]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that shifts a unit to the other side&lt;br /&gt;
 # if the defending unit&lt;br /&gt;
 #       - was not lvl1 or lvl0 &lt;br /&gt;
 #       - and was not a recruiting unit &lt;br /&gt;
 #       - and was a not a &amp;quot;non-living&amp;quot; creature&lt;br /&gt;
 # then :&lt;br /&gt;
 # -&amp;gt; if the attacker missed all attacks, it goes to the defender side.&lt;br /&gt;
 # -&amp;gt; if the attacker hit once at least, the defender goes to the attacker side.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		canrecruit=no&lt;br /&gt;
 		[and]&lt;br /&gt;
 			level=0&lt;br /&gt;
 			[or]&lt;br /&gt;
 			level=1&lt;br /&gt;
 			[/or]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 		[and]&lt;br /&gt;
 			[not]&lt;br /&gt;
 			[filter_wml]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=yes&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/filter_wml]&lt;br /&gt;
 			[/not]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmer&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmed&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=charmer.variables.charm_has_worked&lt;br /&gt;
 			equals=no&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmer.side&lt;br /&gt;
 				value=$charmed.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmer&lt;br /&gt;
 				text=&amp;quot;Charm failed!&amp;quot;&lt;br /&gt;
 				{COLOR_HARM}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/then]&lt;br /&gt;
 		[else]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmed.side&lt;br /&gt;
 				value=$charmer.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmed&lt;br /&gt;
 				text=&amp;quot;Charmed!&amp;quot;&lt;br /&gt;
  				{COLOR_HEAL}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/else]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 &lt;br /&gt;
 	{CLEAR_VARIABLE charmer}&lt;br /&gt;
 	{CLEAR_VARIABLE charmed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 &lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
== Works ==&lt;br /&gt;
&lt;br /&gt;
Unit with ability ''works'' will produce 1 gold per turn.&lt;br /&gt;
&lt;br /&gt;
Put this macro into you code before the last piece of code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define ABILITY_WORKS&lt;br /&gt;
     [leadership]&lt;br /&gt;
          value=0&lt;br /&gt;
          id=peasant_works&lt;br /&gt;
          cumulative=no&lt;br /&gt;
          name=&amp;quot;works&amp;quot;&lt;br /&gt;
          description= _ &amp;quot;Works:&lt;br /&gt;
This unit produces 1 gold per turn.&amp;quot;&lt;br /&gt;
    [/leadership]&lt;br /&gt;
 #enddef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Put this event into your code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
	name=side turn&lt;br /&gt;
	first_time_only=no&lt;br /&gt;
	[store_unit]&lt;br /&gt;
		[filter]&lt;br /&gt;
	            #your filter here... for example type=Peasant&lt;br /&gt;
		[/filter]&lt;br /&gt;
		variable=worker&lt;br /&gt;
		kill=no&lt;br /&gt;
	[/store_unit]&lt;br /&gt;
&lt;br /&gt;
		{FOREACH worker i}&lt;br /&gt;
	&lt;br /&gt;
			 [gold]&lt;br /&gt;
                            side=$side_number &lt;br /&gt;
                            amount=1&lt;br /&gt;
                         [/gold] &lt;br /&gt;
			[unstore_unit]&lt;br /&gt;
				variable=worker[$i]&lt;br /&gt;
				text=&amp;quot;1&amp;quot;&lt;br /&gt;
			        red,green,blue=255,255,0 &lt;br /&gt;
			[/unstore_unit]&lt;br /&gt;
				&lt;br /&gt;
		{NEXT i}&lt;br /&gt;
	&lt;br /&gt;
	{CLEAR_VARIABLE worker}&lt;br /&gt;
 [/event]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And give the unit the ability like this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [object]&lt;br /&gt;
     silent=yes&lt;br /&gt;
     [effect]&lt;br /&gt;
	apply_to=new_ability&lt;br /&gt;
           [abilities]&lt;br /&gt;
             {ABILITY_WORKS}&lt;br /&gt;
           [/abilities]&lt;br /&gt;
     [/effect]&lt;br /&gt;
 [/object]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mind Flay  ==&lt;br /&gt;
&lt;br /&gt;
The weapon special gives an attacker 1 point of exp taken from a defender for each hit. This will violate minimum experience (i.e. defender can go below 0). &lt;br /&gt;
&lt;br /&gt;
Give this special to the attack(s) you want it to have. &lt;br /&gt;
 #define WEAPON_SPECIAL_MIND_FLAY&lt;br /&gt;
    [damage]&lt;br /&gt;
        id=mind_flay&lt;br /&gt;
        name=&amp;quot;Mind Flay&amp;quot;&lt;br /&gt;
        description=&amp;quot;When used offensively, each hit of the mind flay attack takes 1 point of experience from the defender and gives it to the attacker.&amp;quot; &lt;br /&gt;
        multiply=1&lt;br /&gt;
    [/damage]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
Include these events into your scenario.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE hit_number 0}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP hit_number add 1}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP second_unit.experience add -$hit_number}&lt;br /&gt;
 	{VARIABLE_OP unit.experience add $hit_number}&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 		text=$hit_number&lt;br /&gt;
 		blue=255&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	{CLEAR_VARIABLE hit_number}&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
Note: In dev version substitute &amp;quot;name=&amp;quot; instead of &amp;quot;weapon=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Initiative  ==&lt;br /&gt;
&lt;br /&gt;
Initiative is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_INITIATIVE TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=initiative&lt;br /&gt;
 	name= _ &amp;quot;initiative&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Initiative:&lt;br /&gt;
 Adjacent allies are granted Firststrike with all weapons.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{VARIABLE unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{VARIABLE second_unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE second_unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== Blitz ==&lt;br /&gt;
&lt;br /&gt;
Blitz is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_BLITZ TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=blitz	&lt;br /&gt;
 	name= _ &amp;quot;blitz&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Blitz:&lt;br /&gt;
 Allies that start their turn adjacent to this unit are granted Skirmisher for that turn.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=side turn&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 		&lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				&lt;br /&gt;
 				[wml_filter]&lt;br /&gt;
 					blitzed=1&lt;br /&gt;
 				[/wml_filter]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitz_refresh&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitz_refresh i}&lt;br /&gt;
 			{CLEAR_VARIABLE blitz_refresh[$i].abilities.skirmisher}&lt;br /&gt;
 			{VARIABLE blitz_refresh[$i].blitzed 0}&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=blitz_refresh[$i]&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 &lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				side=$side_number&lt;br /&gt;
 				[filter_adjacent]&lt;br /&gt;
 					type={TYPE}&lt;br /&gt;
 					is_enemy=no&lt;br /&gt;
 				[/filter_adjacent]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitzed&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitzed i}&lt;br /&gt;
 			[if]&lt;br /&gt;
 				[variable]&lt;br /&gt;
 					name=blitzed[$i].abilities.skirmisher.id&lt;br /&gt;
 					not_equals=&amp;quot;skirmisher&amp;quot;&lt;br /&gt;
 				[/variable]&lt;br /&gt;
 				[then]&lt;br /&gt;
 					{VARIABLE blitzed[$i].blitzed 1}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.id skirmisher}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.name &amp;quot;skirmisher&amp;quot;}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.description  &amp;quot;Skirmisher:&lt;br /&gt;
 This unit is skilled in moving past enemies quickly, and ignores all enemy Zones of Control.&amp;quot;}&lt;br /&gt;
 					[unstore_unit]&lt;br /&gt;
 						variable=blitzed[$i]&lt;br /&gt;
 					[/unstore_unit]&lt;br /&gt;
 				[/then]&lt;br /&gt;
 			[/if]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UsefulWMLFragments]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: UsefulWMLFragments]]&lt;/div&gt;</summary>
		<author><name>Meowreka</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32587</id>
		<title>WML Abilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=WML_Abilities&amp;diff=32587"/>
		<updated>2009-10-07T04:56:18Z</updated>

		<summary type="html">&lt;p&gt;Meowreka: /* Pickpocket */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Remember that you must include the WML ability code in every scenario where you intend them to work. Or include them in the unit file inside the [unit_type] tag.&lt;br /&gt;
&lt;br /&gt;
Some abilities require macros from [[WML_Utilities|Utilities]]. &lt;br /&gt;
&lt;br /&gt;
=== Knockback  ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''knockback'' attack, it is immediately pushed one hex away from the attacker, at which point the combat ends. Exception: units in villages can't be knocked out of them.&lt;br /&gt;
&lt;br /&gt;
Examples that give ''knockback'' for every Drake Glider on their slam attack, and for the Shock Trooper named Jane:&lt;br /&gt;
 {KNOCKBACK (type=Drake Glider) slam}&lt;br /&gt;
 {KNOCKBACK description=Jane mace}&lt;br /&gt;
&lt;br /&gt;
Requires the macro ''OPPOSITE_SIDE''.&lt;br /&gt;
&lt;br /&gt;
 #define KNOCKBACK FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         [sound]&lt;br /&gt;
             name=ghoul-hit.wav&lt;br /&gt;
         [/sound]&lt;br /&gt;
 &lt;br /&gt;
         {OPPOSITE_SIDE $x2 $y2 $x1 $y1 target_hex}&lt;br /&gt;
 &lt;br /&gt;
         [store_locations]&lt;br /&gt;
             x,y=$x2,$y2&lt;br /&gt;
             terrain=AaBbDeLptUVvYZ&lt;br /&gt;
             variable=defender_in_village&lt;br /&gt;
         [/store_locations]&lt;br /&gt;
         [if]&lt;br /&gt;
             [have_unit]&lt;br /&gt;
                x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
             [/have_unit]&lt;br /&gt;
             [else]&lt;br /&gt;
                 {IF_VAR defender_in_village.length not_equals 1 (&lt;br /&gt;
                     [then]&lt;br /&gt;
                         {STORE_UNIT_VAR x,y=$x2,$y2 side side_of_defender}&lt;br /&gt;
 &lt;br /&gt;
                         [teleport]&lt;br /&gt;
                             [filter]&lt;br /&gt;
                                 x,y=$x2,$y2&lt;br /&gt;
                             [/filter]&lt;br /&gt;
 &lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/teleport]&lt;br /&gt;
 &lt;br /&gt;
                         [capture_village]&lt;br /&gt;
                             side=$side_of_defender&lt;br /&gt;
                             x,y=$target_hex.x,$target_hex.y&lt;br /&gt;
                         [/capture_village]&lt;br /&gt;
 &lt;br /&gt;
                         {CLEAR_VARIABLE side_of_defender}&lt;br /&gt;
                     [/then]&lt;br /&gt;
                 )}&lt;br /&gt;
             [/else]&lt;br /&gt;
         [/if]&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE target_hex}&lt;br /&gt;
         {CLEAR_VARIABLE defender_in_village}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Charm ===&lt;br /&gt;
&lt;br /&gt;
When a unit is hit with a ''charm'' attack, it instantly jumps to the attacker's side, and returns to it's original side at the beginning of that side's turn. A charmed unit has 1 movement point and can attack.&lt;br /&gt;
&lt;br /&gt;
Example that makes all Troll Whelps have charm on their attack:&lt;br /&gt;
&lt;br /&gt;
 {CHARM (type=Troll Whelp) fist}&lt;br /&gt;
&lt;br /&gt;
 #define CHARM FILTER WEAPON&lt;br /&gt;
     [event]&lt;br /&gt;
         name=attacker_hits&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter]&lt;br /&gt;
 &lt;br /&gt;
         [special_filter]&lt;br /&gt;
             weapon={WEAPON}&lt;br /&gt;
         [/special_filter]&lt;br /&gt;
 &lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x1,$y1 side charmer_side}&lt;br /&gt;
         {STORE_UNIT_VAR x,y=$x2,$y2 side charmed_side}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR charmer_side not_equals $charmed_side (&lt;br /&gt;
             [then]&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 variables.real_side $charmed_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 side $charmer_side}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 moves 1}&lt;br /&gt;
                 {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
 &lt;br /&gt;
                 {VARIABLE_OP varname format &amp;quot;side_$charmed_side|_units_charmed&amp;quot;}&lt;br /&gt;
                 {VARIABLE $varname yes}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE varname}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
 &lt;br /&gt;
         {CLEAR_VARIABLE charmer_side}&lt;br /&gt;
         {CLEAR_VARIABLE charmed_side}&lt;br /&gt;
     [/event]&lt;br /&gt;
 &lt;br /&gt;
     [event]&lt;br /&gt;
         name=side turn&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         {VARIABLE_OP this_side_charmed to_variable &amp;quot;side_$side_number|_units_charmed&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
         {IF_VAR this_side_charmed equals yes (&lt;br /&gt;
             [then]&lt;br /&gt;
                 [store_unit]&lt;br /&gt;
                     [filter]&lt;br /&gt;
                         [not]&lt;br /&gt;
                             side=$side_number&lt;br /&gt;
                         [/not]&lt;br /&gt;
                     [/filter]&lt;br /&gt;
 &lt;br /&gt;
                     variable=possibly_charmed&lt;br /&gt;
                     kill=no&lt;br /&gt;
                 [/store_unit]&lt;br /&gt;
 &lt;br /&gt;
                 {FOREACH possibly_charmed i}&lt;br /&gt;
                     {VARIABLE_OP real_side format &amp;quot;0$possibly_charmed[$i].variables.real_side&amp;quot;}&lt;br /&gt;
 &lt;br /&gt;
                     {IF_VAR real_side not_equals &amp;quot;0&amp;quot; (&lt;br /&gt;
                         [then]&lt;br /&gt;
                             {IF_VAR side_number equals $possibly_charmed[$i].variables.real_side (&lt;br /&gt;
                                 [then]&lt;br /&gt;
                                     {CLEAR_VARIABLE possibly_charmed[$i].variables.real_side}&lt;br /&gt;
                                     {VARIABLE possibly_charmed[$i].side $side_number}&lt;br /&gt;
 &lt;br /&gt;
                                     [unstore_unit]&lt;br /&gt;
                                         variable=possibly_charmed[$i]&lt;br /&gt;
                                         find_vacant=no&lt;br /&gt;
                                     [/unstore_unit]&lt;br /&gt;
                                 [/then]&lt;br /&gt;
                             )}&lt;br /&gt;
                         [/then]&lt;br /&gt;
                     )}&lt;br /&gt;
                 {NEXT i}&lt;br /&gt;
 &lt;br /&gt;
                 {CLEAR_VARIABLE possibly_charmed}&lt;br /&gt;
             [/then]&lt;br /&gt;
         )}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Bloodlust ===&lt;br /&gt;
&lt;br /&gt;
Bloodlust is a very simple ability. If a unit that has bloodlust kills an enemy unit when attacking, it may attack again, provided that there are more enemy units adjacent to it.&lt;br /&gt;
&lt;br /&gt;
This would give the bloodlust ability to all Dwarvish Ulfserkers (making them insanely powerful):&lt;br /&gt;
&lt;br /&gt;
 {BLOODLUST (type=Dwarvish Ulfserker)}&lt;br /&gt;
&lt;br /&gt;
 #define BLOODLUST FILTER&lt;br /&gt;
     [event]&lt;br /&gt;
         name=die&lt;br /&gt;
         first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
         [filter_second]&lt;br /&gt;
             {FILTER}&lt;br /&gt;
         [/filter_second]&lt;br /&gt;
 &lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 moves 0}&lt;br /&gt;
         {MODIFY_UNIT x,y=$x2,$y2 attacks_left 1}&lt;br /&gt;
     [/event]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
=== Pickpocket ===&lt;br /&gt;
&lt;br /&gt;
This special could also be called loot. When a unit with this attack special sucessfully hits an enemy unit, it gains a certain amount of gold.&lt;br /&gt;
&lt;br /&gt;
To do this, use this code:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;#define WEAPON_SPECIAL_PICKPOCKET&amp;lt;br /&amp;gt;&lt;br /&gt;
 # Canned definition of the pickpocket ability to be included in a&amp;lt;br /&amp;gt;&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
   id=weapon_pickpocket&lt;br /&gt;
   name= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   name_inactive= _ &amp;quot;pickpocket&amp;quot;&lt;br /&gt;
   description= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   description_inactive= _ &amp;quot;pickpocket :&lt;br /&gt;
 Gain money for attacking your foe. Each strike scores you one gold.&amp;quot;&lt;br /&gt;
   apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 # event that creates a &amp;quot;pickpocket has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no   &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]&lt;br /&gt;
   [set_variable]&lt;br /&gt;
      name=unit_att_with_pickpocket.variables.pickpocket_has_worked&lt;br /&gt;
      value=yes&lt;br /&gt;
   [/set_variable]&lt;br /&gt;
   [unstore_unit]&lt;br /&gt;
      variable=unit_att_with_pickpocket&lt;br /&gt;
   [/unstore_unit]   &lt;br /&gt;
   {CLEAR_VARIABLE unit_att_with_pickpocket}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
   name=attacker_hits&lt;br /&gt;
   first_time_only=no  &lt;br /&gt;
   [filter_attack]&lt;br /&gt;
      special=weapon_pickpocket&lt;br /&gt;
   [/filter_attack]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x1,$y1&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketer&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [store_unit]&lt;br /&gt;
      [filter]&lt;br /&gt;
         x,y=$x2,$y2&lt;br /&gt;
      [/filter]&lt;br /&gt;
      variable=pickpocketed&lt;br /&gt;
      mode=append&lt;br /&gt;
   [/store_unit]   &lt;br /&gt;
   [if]&lt;br /&gt;
      [variable]&lt;br /&gt;
         name=pickpocketer.variables.pickpocket_has_worked&lt;br /&gt;
         equals=yes&lt;br /&gt;
      [/variable]&lt;br /&gt;
      [then]&lt;br /&gt;
    [gold]&lt;br /&gt;
     side=$side_number&lt;br /&gt;
     amount=2&lt;br /&gt;
    [/gold]&lt;br /&gt;
         [unstore_unit]&lt;br /&gt;
            variable=pickpocketed&lt;br /&gt;
            text=&amp;quot;!&amp;quot;&lt;br /&gt;
            {COLOR_HEAL}&lt;br /&gt;
         [/unstore_unit]&lt;br /&gt;
      [/then]&lt;br /&gt;
   [/if]   &lt;br /&gt;
   {CLEAR_VARIABLE pickpocketer}&lt;br /&gt;
   {CLEAR_VARIABLE pickpocketed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 #enddef&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It can be placed after the [unit_type] tag, or in its own .cfg file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To change the amount of gold given per hit, change&lt;br /&gt;
    &amp;lt;code&amp;gt;[gold]&lt;br /&gt;
    side=$side_number&lt;br /&gt;
    amount='''X'''&lt;br /&gt;
    [/gold]&amp;lt;/code&amp;gt;&lt;br /&gt;
Where '''X''' is the amount of gold you want.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want the gold to be constant, given at the end of the turn if at least one of the attack hits, instead of '''X''' amount of gold per hit, change&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attacker_hits'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;code&amp;gt;[event]&lt;br /&gt;
   '''name=attack_end'''&lt;br /&gt;
   first_time_only=no&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Soultaker===&lt;br /&gt;
&lt;br /&gt;
Any unit with this ability will gain an additional point of damage per strike every time it kills an enemy. Coder(s) unknown, made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=19&amp;amp;t=20100).&lt;br /&gt;
&lt;br /&gt;
To give a unit the ability, place the following in any .cfg file loaded by the campaign or era:&lt;br /&gt;
&lt;br /&gt;
 #define ABILITY_SOULTAKER&lt;br /&gt;
 	[dummy]&lt;br /&gt;
 		id=soultaker&lt;br /&gt;
 		name= _ &amp;quot;soultaker&amp;quot;&lt;br /&gt;
 		description=_ &amp;quot;Soultaker:&lt;br /&gt;
 This unit gains an additional point added to its maximum damage whenever it kills a living unit.&amp;quot;&lt;br /&gt;
 	[/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/abilities]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=die&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[filter]&lt;br /&gt;
 		[not]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=&amp;quot;yes&amp;quot;&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/not]&lt;br /&gt;
 	[/filter]&lt;br /&gt;
 &lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		ability=soultaker&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 &lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		{COLOR_HEAL}&lt;br /&gt;
 		text= _ &amp;quot;+1 damage&amp;quot;&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 &lt;br /&gt;
 	[object]&lt;br /&gt;
 		silent=yes&lt;br /&gt;
 		duration=forever&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 &lt;br /&gt;
 		[effect]&lt;br /&gt;
 			apply_to=attack&lt;br /&gt;
 			range=melee&lt;br /&gt;
 			increase_damage=1&lt;br /&gt;
 			increase=1&lt;br /&gt;
 		[/effect]&lt;br /&gt;
 	[/object]&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
And the following in the unit's [abilities] tag:&lt;br /&gt;
&lt;br /&gt;
 	{ABILITY_SOULTAKER}&lt;br /&gt;
&lt;br /&gt;
===Charm (Type 2)===&lt;br /&gt;
&lt;br /&gt;
An attack special. If the attack hits, and the target is level 0 or 1, the target is converted to the attacker's side. However, if it misses, the attacker is converted to the defender's side. Maintainer is krotop, using 1.6.x syntax (and compatible with 1.7.x], made for Melon's Youkai faction (http://www.wesnoth.org/forum/viewtopic.php?f=21&amp;amp;t=22539)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 #define WEAPON_SPECIAL_CHARM&lt;br /&gt;
 # Canned definition of the Charm ability to be included in a&lt;br /&gt;
 # [specials] clause.&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # dummy weapon special used to describe the effect to the user&lt;br /&gt;
 # and filter on special's id&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=weapon_charm&lt;br /&gt;
 	name= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	name_inactive= _ &amp;quot;charm&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	description_inactive= _ &amp;quot;Charm : &lt;br /&gt;
 Turns a living level 1 or level 0 unit to your side. Beware  if all of your attacks miss, the charm user turns to the defender side, even if it is your leader. You can not charm an ennemy leader or a non-living creature.&amp;quot; &lt;br /&gt;
 	apply_to=opponent&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 &lt;br /&gt;
 [/specials]&lt;br /&gt;
 [/attack]&lt;br /&gt;
 &lt;br /&gt;
 # event that creates a variable at the beginning of the fight to check if the attacker hit at least once by the end.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]	&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=no&lt;br /&gt;
 	[/set_variable]	&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that creates a &amp;quot;charm has worked&amp;quot; variable&lt;br /&gt;
 # and sets it to &amp;quot;yes&amp;quot; if the attacker hits at least once.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	[set_variable]&lt;br /&gt;
 		name=unit_att_with_charm.variables.charm_has_worked&lt;br /&gt;
 		value=yes&lt;br /&gt;
 	[/set_variable]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit_att_with_charm&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	{CLEAR_VARIABLE unit_att_with_charm}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 # event that shifts a unit to the other side&lt;br /&gt;
 # if the defending unit&lt;br /&gt;
 #       - was not lvl1 or lvl0 &lt;br /&gt;
 #       - and was not a recruiting unit &lt;br /&gt;
 #       - and was a not a &amp;quot;non-living&amp;quot; creature&lt;br /&gt;
 # then :&lt;br /&gt;
 # -&amp;gt; if the attacker missed all attacks, it goes to the defender side.&lt;br /&gt;
 # -&amp;gt; if the attacker hit once at least, the defender goes to the attacker side.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	&lt;br /&gt;
 	[filter_attack]&lt;br /&gt;
 		special=weapon_charm&lt;br /&gt;
 	[/filter_attack]&lt;br /&gt;
 	[filter_second]&lt;br /&gt;
 		canrecruit=no&lt;br /&gt;
 		[and]&lt;br /&gt;
 			level=0&lt;br /&gt;
 			[or]&lt;br /&gt;
 			level=1&lt;br /&gt;
 			[/or]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 		[and]&lt;br /&gt;
 			[not]&lt;br /&gt;
 			[filter_wml]&lt;br /&gt;
 				[status]&lt;br /&gt;
 					not_living=yes&lt;br /&gt;
 				[/status]&lt;br /&gt;
 			[/filter_wml]&lt;br /&gt;
 			[/not]&lt;br /&gt;
 		[/and]&lt;br /&gt;
 	[/filter_second]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x1,$y1&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmer&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[store_unit]&lt;br /&gt;
 		[filter]&lt;br /&gt;
 			x,y=$x2,$y2&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		variable=charmed&lt;br /&gt;
 		mode=append&lt;br /&gt;
 	[/store_unit]&lt;br /&gt;
 	&lt;br /&gt;
 	[if]&lt;br /&gt;
 		[variable]&lt;br /&gt;
 			name=charmer.variables.charm_has_worked&lt;br /&gt;
 			equals=no&lt;br /&gt;
 		[/variable]&lt;br /&gt;
 		[then]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmer.side&lt;br /&gt;
 				value=$charmed.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmer&lt;br /&gt;
 				text=&amp;quot;Charm failed!&amp;quot;&lt;br /&gt;
 				{COLOR_HARM}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/then]&lt;br /&gt;
 		[else]&lt;br /&gt;
 			[set_variable]&lt;br /&gt;
 				name=charmed.side&lt;br /&gt;
 				value=$charmer.side&lt;br /&gt;
 			[/set_variable]&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=charmed&lt;br /&gt;
 				text=&amp;quot;Charmed!&amp;quot;&lt;br /&gt;
  				{COLOR_HEAL}&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		[/else]&lt;br /&gt;
 	[/if]&lt;br /&gt;
 &lt;br /&gt;
 	{CLEAR_VARIABLE charmer}&lt;br /&gt;
 	{CLEAR_VARIABLE charmed}&lt;br /&gt;
 [/event]&lt;br /&gt;
 &lt;br /&gt;
 [+attack]&lt;br /&gt;
 [+specials]&lt;br /&gt;
 &lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
== Works ==&lt;br /&gt;
&lt;br /&gt;
Unit with ability ''works'' will produce 1 gold per turn.&lt;br /&gt;
&lt;br /&gt;
Put this macro into you code before the last piece of code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define ABILITY_WORKS&lt;br /&gt;
     [leadership]&lt;br /&gt;
          value=0&lt;br /&gt;
          id=peasant_works&lt;br /&gt;
          cumulative=no&lt;br /&gt;
          name=&amp;quot;works&amp;quot;&lt;br /&gt;
          description= _ &amp;quot;Works:&lt;br /&gt;
This unit produces 1 gold per turn.&amp;quot;&lt;br /&gt;
    [/leadership]&lt;br /&gt;
 #enddef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Put this event into your code.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[event]&lt;br /&gt;
	name=side turn&lt;br /&gt;
	first_time_only=no&lt;br /&gt;
	[store_unit]&lt;br /&gt;
		[filter]&lt;br /&gt;
	            #your filter here... for example type=Peasant&lt;br /&gt;
		[/filter]&lt;br /&gt;
		variable=worker&lt;br /&gt;
		kill=no&lt;br /&gt;
	[/store_unit]&lt;br /&gt;
&lt;br /&gt;
		{FOREACH worker i}&lt;br /&gt;
	&lt;br /&gt;
			 [gold]&lt;br /&gt;
                            side=$side_number &lt;br /&gt;
                            amount=1&lt;br /&gt;
                         [/gold] &lt;br /&gt;
			[unstore_unit]&lt;br /&gt;
				variable=worker[$i]&lt;br /&gt;
				text=&amp;quot;1&amp;quot;&lt;br /&gt;
			        red,green,blue=255,255,0 &lt;br /&gt;
			[/unstore_unit]&lt;br /&gt;
				&lt;br /&gt;
		{NEXT i}&lt;br /&gt;
	&lt;br /&gt;
	{CLEAR_VARIABLE worker}&lt;br /&gt;
 [/event]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And give the unit the ability like this&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 [object]&lt;br /&gt;
     silent=yes&lt;br /&gt;
     [effect]&lt;br /&gt;
	apply_to=new_ability&lt;br /&gt;
           [abilities]&lt;br /&gt;
             {ABILITY_WORKS}&lt;br /&gt;
           [/abilities]&lt;br /&gt;
     [/effect]&lt;br /&gt;
 [/object]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mind Flay  ==&lt;br /&gt;
&lt;br /&gt;
The weapon special gives an attacker 1 point of exp taken from a defender for each hit. This will violate minimum experience (i.e. defender can go below 0). &lt;br /&gt;
&lt;br /&gt;
Give this special to the attack(s) you want it to have. &lt;br /&gt;
 #define WEAPON_SPECIAL_MIND_FLAY&lt;br /&gt;
    [damage]&lt;br /&gt;
        id=mind_flay&lt;br /&gt;
        name=&amp;quot;Mind Flay&amp;quot;&lt;br /&gt;
        description=&amp;quot;When used offensively, each hit of the mind flay attack takes 1 point of experience from the defender and gives it to the attacker.&amp;quot; &lt;br /&gt;
        multiply=1&lt;br /&gt;
    [/damage]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
Include these events into your scenario.&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE hit_number 0}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attacker_hits&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP hit_number add 1}&lt;br /&gt;
 [/event]&lt;br /&gt;
 [event]&lt;br /&gt;
 	name=attack_end&lt;br /&gt;
 	first_time_only=no&lt;br /&gt;
 	[special_filter]&lt;br /&gt;
 		weapon=mind flay&lt;br /&gt;
 	[/special_filter]&lt;br /&gt;
 	{VARIABLE_OP second_unit.experience add -$hit_number}&lt;br /&gt;
 	{VARIABLE_OP unit.experience add $hit_number}&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 		text=$hit_number&lt;br /&gt;
 		blue=255&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	[unstore_unit]&lt;br /&gt;
 		variable=second_unit&lt;br /&gt;
 		find_vacant=no&lt;br /&gt;
 	[/unstore_unit]&lt;br /&gt;
 	{CLEAR_VARIABLE hit_number}&lt;br /&gt;
 [/event]&lt;br /&gt;
&lt;br /&gt;
Note: In dev version substitute &amp;quot;name=&amp;quot; instead of &amp;quot;weapon=&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Initiative  ==&lt;br /&gt;
&lt;br /&gt;
Initiative is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_INITIATIVE TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=initiative&lt;br /&gt;
 	name= _ &amp;quot;initiative&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Initiative:&lt;br /&gt;
 Adjacent allies are granted Firststrike with all weapons.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{VARIABLE unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[filter_adjacent]&lt;br /&gt;
 				type={TYPE}&lt;br /&gt;
 				is_enemy=no&lt;br /&gt;
 			[/filter_adjacent]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{VARIABLE second_unit.attack[$i].specials.firststrike.id &amp;quot;firststrike&amp;quot;}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=attack_end&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 &lt;br /&gt;
 		[filter_second]&lt;br /&gt;
 			[wml_filter]&lt;br /&gt;
 				[attack]&lt;br /&gt;
 					[specials]&lt;br /&gt;
 						[firststrike]&lt;br /&gt;
 							id=firststrike&lt;br /&gt;
 						[/firststrike]&lt;br /&gt;
 					[/specials]&lt;br /&gt;
 				[/attack]&lt;br /&gt;
 			[/wml_filter]&lt;br /&gt;
 		[/filter_second]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH second_unit.attack i}&lt;br /&gt;
 			{CLEAR_VARIABLE second_unit.attack[$i].specials.firststrike}&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 		&lt;br /&gt;
 		[unstore_unit]&lt;br /&gt;
 			variable=second_unit&lt;br /&gt;
 		[/unstore_unit]&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== Blitz ==&lt;br /&gt;
&lt;br /&gt;
Blitz is an aura ability. Much like Leadership, it effects adjacent allies but not the unit itself.&lt;br /&gt;
&lt;br /&gt;
 #define AURA_BLITZ TYPE&lt;br /&gt;
 [dummy]&lt;br /&gt;
 	id=blitz	&lt;br /&gt;
 	name= _ &amp;quot;blitz&amp;quot;&lt;br /&gt;
 	description= _ &amp;quot;Blitz:&lt;br /&gt;
 Allies that start their turn adjacent to this unit are granted Skirmisher for that turn.&amp;quot;&lt;br /&gt;
 [/dummy]&lt;br /&gt;
 [/abilities]&lt;br /&gt;
 	[event]&lt;br /&gt;
 		name=side turn&lt;br /&gt;
 		first_time_only=no&lt;br /&gt;
 		&lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				&lt;br /&gt;
 				[wml_filter]&lt;br /&gt;
 					blitzed=1&lt;br /&gt;
 				[/wml_filter]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitz_refresh&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitz_refresh i}&lt;br /&gt;
 			{CLEAR_VARIABLE blitz_refresh[$i].abilities.skirmisher}&lt;br /&gt;
 			{VARIABLE blitz_refresh[$i].blitzed 0}&lt;br /&gt;
 			[unstore_unit]&lt;br /&gt;
 				variable=blitz_refresh[$i]&lt;br /&gt;
 			[/unstore_unit]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 &lt;br /&gt;
 		[store_unit]&lt;br /&gt;
 			[filter]&lt;br /&gt;
 				side=$side_number&lt;br /&gt;
 				[filter_adjacent]&lt;br /&gt;
 					type={TYPE}&lt;br /&gt;
 					is_enemy=no&lt;br /&gt;
 				[/filter_adjacent]&lt;br /&gt;
 			[/filter]&lt;br /&gt;
 			variable=blitzed&lt;br /&gt;
 		[/store_unit]&lt;br /&gt;
 		&lt;br /&gt;
 		{FOREACH blitzed i}&lt;br /&gt;
 			[if]&lt;br /&gt;
 				[variable]&lt;br /&gt;
 					name=blitzed[$i].abilities.skirmisher.id&lt;br /&gt;
 					not_equals=&amp;quot;skirmisher&amp;quot;&lt;br /&gt;
 				[/variable]&lt;br /&gt;
 				[then]&lt;br /&gt;
 					{VARIABLE blitzed[$i].blitzed 1}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.id skirmisher}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.name &amp;quot;skirmisher&amp;quot;}&lt;br /&gt;
 					{VARIABLE blitzed[$i].abilities.skirmisher.description  &amp;quot;Skirmisher:&lt;br /&gt;
 This unit is skilled in moving past enemies quickly, and ignores all enemy Zones of Control.&amp;quot;}&lt;br /&gt;
 					[unstore_unit]&lt;br /&gt;
 						variable=blitzed[$i]&lt;br /&gt;
 					[/unstore_unit]&lt;br /&gt;
 				[/then]&lt;br /&gt;
 			[/if]&lt;br /&gt;
 		{NEXT i}&lt;br /&gt;
 	[/event]&lt;br /&gt;
 [+abilities]&lt;br /&gt;
 #enddef&lt;br /&gt;
&lt;br /&gt;
A WML filter may be added instead of the type if you want some units of that type to not have the ability.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[UsefulWMLFragments]]&lt;br /&gt;
* [[ReferenceWML]]&lt;br /&gt;
&lt;br /&gt;
[[Category: UsefulWMLFragments]]&lt;/div&gt;</summary>
		<author><name>Meowreka</name></author>
		
	</entry>
</feed>