#textdomain wesnoth
# This file contains shortcuts for common WML events (such as prestart, side
# turn, and such), which can be used to write events faster and in less space.
#
# It is recommended that you only use these if you're confident you could write
# the expanded form as well; these are mostly intended as shortcuts for
# experienced WML authors.

# These don't depend on any other macros.  Please don't change this.
# ! in comments is used in generating HTML documentation, ignore it otherwise.

#define ON_EVENT NAME ACTION_WML
    # Creates a generic event.  Strictly a syntactic shortcut
    [event]
        name={NAME}
        {ACTION_WML}
    [/event]
#enddef

#define ON_PRESTART ACTION_WML
    # Creates an event that triggers when the scenario starts but before the user
    # gets any visible output.  Strictly a syntactic shortcut.
    #
    # For example, you can make side 2 start the scenario with ownership of the
    # village at 13,15:
    #
    #! {ON_PRESTART (
    #!   [capture_village]
    #!       side=2
    #!       x,y=13,15
    #!   [/capture_village]
    #! )}
    [event]
        name=prestart
        {ACTION_WML}
    [/event]
#enddef

#define ON_START ACTION_WML
    # Creates an event that triggers when the scenario starts, after the map is
    # displayed but before the player can act.  Strictly a syntactic shortcut.
    #
    # For example you could display some dialogue when the scenario starts:
    #
    #! {ON_START (
    #!   [message]
    #!       speaker=Konrad
    #!       message= _ "Hey, I can see some enemies up ahead!"
    #!   [/message]
    #!
    #!   [message]
    #!       speaker=Delfador
    #!       message= _ "Yes, so it would seem. Charge!"
    #!   [/message]
    #! )}
    [event]
        name=start
        {ACTION_WML}
    [/event]
#enddef

#define ON_SIDETURN ACTION_WML
    # Creates an event that triggers at the start of every players turn
    # For example, you could set each players gold to a fixed amount every turn.
    #! {ON_SIDETURN (
    #!   [modify_side]
    #!       side=3
    #!       gold=0
    #!   [/modify_side]
    #! )}
    [event]
        name=side turn
        first_time_only=no
        {ACTION_WML}
    [/event]
#enddef

#define ON_TURN TURN ACTION_WML
    # Creates an event that triggers at the start of turn TURN
    # For example you can create a Wose belonging to player 1 at turn 3:
    # Strictly a syntactic shortcut.
    #! {ON_TURN 3 (
    #!   [unit]
    #!       side=1
    #!       type=wose
    #!       x,y=12,4
    #!   [/unit]
    #! )}
    [event]
        name=turn {TURN}
        {ACTION_WML}
    [/event]
#enddef

#define ON_VICTORY ACTION_WML
    # Creates an event that triggers when a player wins the game, before
    # the game ends.  Strictly a syntactic shortcut.
    #
    # For example you could congratulate the player:
    #! {ON_VICTORY (
    #!   [message]
    #!       speaker=narrator
    #!       message="Congratulations!"
    #!   [/message]
    #! )}
    [event]
        name=victory
        {ACTION_WML}
    [/event]
#enddef

#define ON_DEFEAT ACTION_WML
    # Creates an event that triggers when a player wins the game, before
    # the game ends.  Strictly a syntactic shortcut.
    #
    # For example you could suggest an easier difficulty
    # the player:
    #! {ON_DEFEAT (
    #!   [message]
    #!   speaker=narrator
    #!   message="Aww.. you lost. Try again with 800g and +40g income?"
    #!   [/message]
    #! )}
    [event]
        name=defeat
        {ACTION_WML}
    [/event]
#enddef

#define ALLOW_UNDO
    # Allows the player to undo the effects of a moveto event.
    # Strictly a syntactic shortcut.
    #
    # For example, let's allow undoing reading a note:
    #! {ON_TILE 5 7 () (
    #! 	[message]
    #! 		speaker=narrator
    #! 		message="This is a note."
    #! 	[/message]
    #! 	{ALLOW_UNDO}
    #! )}
    [allow_undo]
    [/allow_undo]
#enddef

#define ON_TILE_ONCE X Y FILTER ACTION_WML
    # Creates an event that triggers the first time a unit steps on a
    # given tile.  The filter can be used to only affect special units, or
    # units of a given player.
    #
    # For example we could make a text-message
    # that is only readable once:
    #! {ON_TILE_ONCE 5 7 () (
    #!   [message]
    #!       speaker=narrator
    #!       message="This is a note."
    #!   [/message]
    #! )}
    [event]
        name=moveto
        first_time_only=yes
        [filter]
            x={X}
            y={Y}
            {FILTER}
        [/filter]
        {ACTION_WML}
    [/event]
#enddef

#define CALL_FUNCTION EVENT_NAME PARAMETER_WML
    # This will fire an event with a set of parameters, for example:
    #! {CALL_FUNCTION my_event a,b,c=1,2,3}
    #
    # That example would fire an event with name "my_event"
    # and inside that event, $param.c will be equal to "3"
    # This will hold true even if the event is fired recursively
    [set_variables]
        mode=insert
        name=param[0]
        [value]
            {PARAMETER_WML}
        [/value]
    [/set_variables]
    [fire_event]
        name={EVENT_NAME}
        [primary_unit]
            x,y=$unit.x,$unit.y
        [/primary_unit]
        [second_unit]
            x,y=$second_unit.x,$second_unit.y
        [/second_unit]
    [/fire_event]
    [clear_variable]
        name=param[0]
    [/clear_variable]
#enddef
