Difference between revisions of "WML Abilities"
From The Battle for Wesnoth Wiki
(Added knockback) |
m |
||
Line 1: | Line 1: | ||
− | |||
− | |||
Remember that you must include the WML ability code in every scenario where you intend them to work. | Remember that you must include the WML ability code in every scenario where you intend them to work. | ||
Line 11: | Line 9: | ||
{KNOCKBACK description=Jane mace} | {KNOCKBACK description=Jane mace} | ||
+ | Note that this uses the macros ''OPPOSITE_SIDE'', ''IF'', ''IF_HAVE_UNIT'' and ''STORE_UNIT_VAR'' from the [[WML Macros]] page. | ||
#define KNOCKBACK FILTER WEAPON | #define KNOCKBACK FILTER WEAPON |
Revision as of 10:47, 16 February 2006
Remember that you must include the WML ability code in every scenario where you intend them to work.
Knockback Template:DevFeature
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.
Examples that give knockback for every Drake Glider on their slam attack, and for the Shock Trooper named Jane:
{KNOCKBACK (type=Drake Glider) slam} {KNOCKBACK description=Jane mace}
Note that this uses the macros OPPOSITE_SIDE, IF, IF_HAVE_UNIT and STORE_UNIT_VAR from the WML Macros page.
#define KNOCKBACK FILTER WEAPON [event] name=attacker_hits first_time_only=no [filter] {FILTER} [/filter] [special_filter] weapon={WEAPON} [/special_filter] [sound] name=ghoul-hit.wav [/sound] {OPPOSITE_SIDE $x2 $y2 $x1 $y1 target_hex} [store_locations] x,y=$x2,$y2 terrain=AaBbDeLptUVvYZ variable=defender_in_village [/store_locations] {IF_HAVE_UNIT x,y=$target_hex.x,$target_hex.y ( [else] {IF defender_in_village.length not_equals 1 ( [then] {STORE_UNIT_VAR x,y=$x2,$y2 side side_of_defender} [teleport] [filter] x,y=$x2,$y2 [/filter] x,y=$target_hex.x,$target_hex.y [/teleport] [capture_village] side=$side_of_defender x,y=$target_hex.x,$target_hex.y [/capture_village] {CLEAR_VARIABLE side_of_defender} [/then] )} [/else] )} {CLEAR_VARIABLE target_hex} {CLEAR_VARIABLE defender_in_village} [/event] #enddef