#textdomain wesnoth

#define AI_CONTROLLER AFFIX PLAYER_SIDE ALLY_SIDES VARIABLES
    # expects $order_type to be set
    [event]
        name=apply_ai_params
        first_time_only=no

        [set_variables]
            name=new_ai_params

            [insert_tag]
                name=literal
                variable=ai_controller_{AFFIX}.$order_type|.ai
            [/insert_tag]
        [/set_variables]

        [if]
            [variable]
                name=ai_controller_{AFFIX}.$order_type|.type
                equals=behaviour
            [/variable]

            [variable]
                name=ai_controller.side_$ally_side|_current_settings.current_objective
                boolean_equals=yes
            [/variable]

            [then]
                [set_variables]
                    name=new_ai_params
                    mode=append

                    [insert_tag]
                        name=literal
                        variable=ai_controller_{AFFIX}.$ai_controller.side_$ally_side|_current_settings.current_objective|.ai
                    [/insert_tag]
                [/set_variables]
            [/then]
        [/if]

        [if]
            [variable]
                name=ai_controller_{AFFIX}.$order_type|.type
                equals=objective
            [/variable]

            [variable]
                name=ai_controller.side_$ally_side|_current_settings.current_behaviour
                boolean_equals=yes
            [/variable]

            [then]
                [set_variables]
                    name=new_ai_params
                    mode=append

                    [insert_tag]
                        name=literal
                        variable=ai_controller_{AFFIX}.$ai_controller.side_$ally_side|_current_settings.current_behaviour|.ai
                    [/insert_tag]
                [/set_variables]
            [/then]
        [/if]

        [if]
            [and]
                [variable]
                    name=ai_controller_{AFFIX}.$ai_controller.side_$ally_side|_current_settings.current_behaviour|.mode
                    equals=append
                [/variable]

                [or]
                    [variable]
                        name=ai_controller_{AFFIX}.$ai_controller.side_$ally_side|_current_settings.current_behaviour|.mode
                        equals=$empty
                    [/variable]
                [/or]
            [/and]

            [and]
                [variable]
                    name=ai_controller_{AFFIX}.$ai_controller.side_$ally_side|_current_settings.current_objective|.mode
                    equals=append
                [/variable]

                [or]
                    [variable]
                        name=ai_controller_{AFFIX}.$ai_controller.side_$ally_side|_current_settings.current_objective|.mode
                        equals=$empty
                    [/variable]
                [/or]
            [/and]

            [then]
                [set_variables]
                    name=new_ai_params
                    mode=append

                    [insert_tag]
                        name=literal
                        variable=ai_controller.side_$ally_side|_original_settings.ai_settings.ai
                    [/insert_tag]
                [/set_variables]
            [/then]
        [/if]

        [modify_side]
            side=$ally_side

            [insert_tag]
                name=ai
                variable=new_ai_params
            [/insert_tag]
        [/modify_side]

        {CLEAR_VARIABLE new_ai_params}
    [/event]

    [event]
        name=prestart

        [set_variables]
            name=ai_controller_{AFFIX}

            # This block contains all the default settings and options.
            [literal]
                enabled=yes
                player_side={PLAYER_SIDE}
                ally_sides={ALLY_SIDES}
                disabled_for_sides=0

                ################

                [aggression]
                    type=behaviour

                    [ai]
                        aggression=0.9
                        caution=0.1
                    [/ai]

                    [option]
                        message= _ "Be more aggressive"

                        [show_if]
                            [variable]
                                name=ai_controller_{AFFIX}.aggression.disabled
                                not_equals=yes
                            [/variable]
                        [/show_if]

                        [command]
                            {VARIABLE order_type aggression}

                            [fire_event]
                                name=apply_ai_params
                            [/fire_event]

                            {VARIABLE ai_controller.side_$ally_side|_current_settings.current_behaviour aggression}
                            {VARIABLE ai_controller.side_$ally_side|_current_settings.currently_doing_behaviour_description _"aggressive."}
                        [/command]
                    [/option]
                [/aggression]

                ################

                [caution]
                    type=behaviour

                    [ai]
                        aggression=0.1
                        caution=1.0
                        grouping=defensive
                    [/ai]

                    [option]
                        message= _ "Be more defensive"

                        [show_if]
                            [variable]
                                name=ai_controller_{AFFIX}.caution.disabled
                                not_equals=yes
                            [/variable]
                        [/show_if]

                        [command]
                            {VARIABLE order_type caution}

                            {VARIABLE ai_controller.side_$ally_side|_current_settings.current_behaviour caution}
                            {VARIABLE ai_controller.side_$ally_side|_current_settings.currently_doing_behaviour_description _"defensive."}

                            [fire_event]
                                name=apply_ai_params
                            [/fire_event]
                        [/command]
                    [/option]
                [/caution]

                ################

                [focus_on_enemy]
                    type=objective

                    [ai]
                        [target]
                            side=$temp_i
                            value=20
                        [/target]
                    [/ai]

                    [option]
                        message= _ "Focus on defeating..."

                        [show_if]
                            [variable]
                                name=ai_controller_{AFFIX}.focus_on_enemy.disabled
                                not_equals=yes
                            [/variable]
                        [/show_if]

                        [command]
                            [set_variables]
                                name=focus_on_enemy_options_message

                                [literal]
                                    caption= _"Instruct ally"
                                    speaker=narrator
                                    image=wesnoth-icon.png
                                    message= _"Which enemy side to focus on?"
                                [/literal]
                            [/set_variables]

                            [store_side]
                                side=$ally_side
                                variable=stored_ally_side
                            [/store_side]

                            {VARIABLE temp_i 1}

                            [while]
                                [variable]
                                    name=temp_i
                                    less_than=10
                                [/variable]

                                [do]
                                    [store_side]
                                        side=$temp_i
                                        variable=stored_other_side
                                    [/store_side]

                                    [if]
                                        [variable]
                                            name=stored_ally_side.team_name
                                            not_equals=$stored_other_side.team_name
                                        [/variable]

                                        [have_unit]
                                            side=$temp_i
                                        [/have_unit]

                                        [then]
                                            [if]
                                                [have_unit]
                                                    side=$temp_i
                                                    canrecruit=yes

                                                    [filter_vision]
                                                        viewing_side=$side_number
                                                        visible=yes
                                                    [/filter_vision]
                                                [/have_unit]

                                                [then]
                                                    [store_unit]
                                                        [filter]
                                                            side=$temp_i
                                                            canrecruit=yes
                                                        [/filter]

                                                        kill=no
                                                        variable=side_i_leader
                                                    [/store_unit]

                                                    {VARIABLE this_enemy_txt_img_description "&$side_i_leader.image~TC($temp_i|,$side_i_leader.flag_rgb|)=$side_i_leader.name|="+_"(side $temp_i|)"+"=<0,0,0>-"}

                                                    {VARIABLE this_enemy_description _"$side_i_leader.name (side $temp_i|)"}
                                                [/then]

                                                [else]
                                                    {VARIABLE this_enemy_txt_img_description "&misc/blank-hex.png= ="+_"(side $temp_i|)"}
                                                    {VARIABLE this_enemy_description _"side $temp_i"}
                                                [/else]
                                            [/if]

                                            [set_variables]
                                                name=focus_on_enemy_options_message.option
                                                mode=append

                                                [value]
                                                    message=$this_enemy_txt_img_description

                                                    [command]
                                                        {VARIABLE order_type focus_on_enemy}

                                                        {VARIABLE ai_controller.side_$ally_side|_current_settings.focus_on_enemy.side $temp_i}
                                                        {VARIABLE ai_controller.side_$ally_side|_current_settings.current_objective focus_on_enemy}
                                                        {VARIABLE ai_controller.side_$ally_side|_current_settings.currently_doing_objective_description _"focusing on defeating $this_enemy_description|."}

                                                        [fire_event]
                                                            name=apply_ai_params
                                                        [/fire_event]
                                                    [/command]
                                                [/value]
                                            [/set_variables]
                                        [/then]
                                    [/if]

                                    {VARIABLE_OP temp_i add 1}
                                [/do]
                            [/while]

                            [set_variables]
                                name=focus_on_enemy_options_message.option
                                mode=append

                                [value]
                                    message="*"+_"Back"

                                    [command]
                                    [/command]
                                [/value]
                            [/set_variables]

                            [insert_tag]
                                name=message
                                variable=focus_on_enemy_options_message
                            [/insert_tag]

                            {CLEAR_VARIABLE stored_other_side,focus_on_enemy_options_message,side_i_leader,this_enemy_description}
                        [/command]
                    [/option]
                [/focus_on_enemy]

                ################

                [protect]
                    type=objective

                    [ai]
                        [target]
                            side=$temp_i
                            value=20
                        [/target]
                    [/ai]

                    [option]
                        message= _ "Focus on protecting..."

                        [show_if]
                            [variable]
                                name=ai_controller_{AFFIX}.protect.disabled
                                not_equals=yes
                            [/variable]
                        [/show_if]

                        [command]
                            [set_variables]
                                name=protect_options_message

                                [literal]
                                    caption= _"Instruct ally"
                                    speaker=narrator
                                    image=wesnoth-icon.png
                                    message= _"Which friendly side to protect?"
                                [/literal]
                            [/set_variables]

                            [store_side]
                                side=$ally_side
                                variable=stored_ally_side
                            [/store_side]

                            {VARIABLE temp_i 1}

                            [while]
                                [variable]
                                    name=temp_i
                                    less_than=10
                                [/variable]

                                [do]
                                    [store_side]
                                        side=$temp_i
                                        variable=stored_other_side
                                    [/store_side]

                                    [if]
                                        [variable]
                                            name=ally_side
                                            not_equals=$temp_i
                                        [/variable]

                                        [variable]
                                            name=stored_ally_side.team_name
                                            equals=$stored_other_side.team_name
                                        [/variable]

                                        [have_unit]
                                            side=$temp_i
                                        [/have_unit]

                                        [then]
                                            [if]
                                                [have_unit]
                                                    side=$temp_i
                                                    canrecruit=yes
                                                [/have_unit]

                                                [then]
                                                    [store_unit]
                                                        [filter]
                                                            side=$temp_i
                                                            canrecruit=yes

                                                            [filter_vision]
                                                                viewing_side=$side_number
                                                                visible=yes
                                                            [/filter_vision]
                                                        [/filter]

                                                        kill=no
                                                        variable=side_i_leader
                                                    [/store_unit]

                                                    {VARIABLE this_ally_txt_img_description "&$side_i_leader.image~TC($temp_i|,$side_i_leader.flag_rgb|)=$side_i_leader.name|="+_"(side $temp_i|)"+"=<0,0,0>-"}
                                                    {VARIABLE this_ally_description _"$side_i_leader.name (side $temp_i|)"}
                                                [/then]

                                                [else]
                                                    {VARIABLE this_ally_txt_img_description "&misc/blank-hex.png= ="+_"(side $temp_i|)"}
                                                    {VARIABLE this_ally_description _"side $temp_i"}
                                                [/else]
                                            [/if]

                                            [set_variables]
                                                name=protect_options_message.option
                                                mode=append

                                                [value]
                                                    message=$this_ally_txt_img_description

                                                    [command]
                                                        {VARIABLE order_type protect}

                                                        {VARIABLE ai_controller.side_$ally_side|_current_settings.protect.side $temp_i}
                                                        {VARIABLE ai_controller.side_$ally_side|_current_settings.current_objective protect}
                                                        {VARIABLE ai_controller.side_$ally_side|_current_settings.currently_doing_objective_description _"focusing on protecting $this_ally_description|."}

                                                        [fire_event]
                                                            name=apply_ai_params
                                                        [/fire_event]
                                                    [/command]
                                                [/value]
                                            [/set_variables]
                                        [/then]
                                    [/if]

                                    {VARIABLE_OP temp_i add 1}
                                [/do]
                            [/while]

                            [set_variables]
                                name=protect_options_message.option
                                mode=append

                                [value]
                                    message="*"+_"Back"

                                    [command]
                                    [/command]
                                [/value]
                            [/set_variables]

                            [insert_tag]
                                name=message
                                variable=protect_options_message
                            [/insert_tag]

                            {CLEAR_VARIABLE stored_other_side,side_i_leader,this_ally_description,protect_options_message}
                        [/command]
                    [/option]
                [/protect]

                ################

                [defend_location]
                    type=objective

                    [ai]
                        [protect_location]
                            x=$ai_controller.side_$ally_side|_current_settings.defend_location.x
                            y=$ai_controller.side_$ally_side|_current_settings.defend_location.y
                            radius=6
                            value=20
                        [/protect_location]
                    [/ai]

                    [option]
                        message= _ "Defend a location..."

                        [show_if]
                            [variable]
                                name=ai_controller_{AFFIX}.defend_location.disabled
                                not_equals=yes
                            [/variable]
                        [/show_if]

                        [command]
                            {VARIABLE ai_controller_{AFFIX}.defend_location.picker_active yes}
                            {VARIABLE ai_controller_{AFFIX}.defend_location.original_controller_invokation_x $x1}
                            {VARIABLE ai_controller_{AFFIX}.defend_location.original_controller_invokation_y $y1}
                            {VARIABLE ai_controller_finished yes}

                            [print]
                                text= _ "Right-click to select a location to defend"
                                duration=100
                                {COLOR_WHITE}
                            [/print]

                            [set_menu_item]
                                id=ai_controller_defend_location_picker
                                description= _ "Defend this location"

                                [show_if]
                                    [variable]
                                        name=ai_controller_{AFFIX}.defend_location.picker_active
                                        boolean_equals=yes
                                    [/variable]
                                [/show_if]

                                [command]
                                    {VARIABLE ai_controller.side_$ally_side|_current_settings.defend_location.x $x1}
                                    {VARIABLE ai_controller.side_$ally_side|_current_settings.defend_location.y $y1}
                                    {VARIABLE ai_controller_{AFFIX}.defend_location.picker_active no}

                                    {VARIABLE order_type defend_location}

                                    {VARIABLE ai_controller.side_$ally_side|_current_settings.current_objective defend_location}
                                    {VARIABLE ai_controller.side_$ally_side|_current_settings.currently_doing_objective_description _"focusing on defending the area around $x1|,$y1|."}

                                    [fire_event]
                                        name=apply_ai_params
                                    [/fire_event]

                                    [print]
                                        text=" "	# wmllint: ignore
                                        duration=1
                                    [/print]

                                    [fire_event]
                                        name=menu item ai_controller

                                        [primary_unit]
                                            x=$ai_controller_{AFFIX}.defend_location.original_controller_invokation_x
                                            y=$ai_controller_{AFFIX}.defend_location.original_controller_invokation_y
                                        [/primary_unit]
                                    [/fire_event]
                                [/command]
                            [/set_menu_item]

                            [event]
                                name=select,recruit,recall,side turn,menu item ai_controller

                                [if]
                                    [variable]
                                        name=ai_controller_{AFFIX}.defend_location.picker_active
                                        boolean_equals=yes
                                    [/variable]

                                    [then]
                                        {VARIABLE ai_controller_{AFFIX}.defend_location.picker_active no}

                                        [print]
                                            text= _ "Location selection canceled"
                                            duration=100
                                            {COLOR_WHITE}
                                        [/print]
                                    [/then]
                                [/if]
                            [/event]
                        [/command]
                    [/option]
                [/defend_location]

                ################

                [revoke_objective_orders]
                    [option]
                        message= _ "Clear objective orders"

                        [show_if]
                            [variable]
                                name=ai_controller_{AFFIX}.revoke_objective_orders.disabled
                                not_equals=yes
                            [/variable]
                        [/show_if]

                        [command]
                            [insert_tag]
                                name=modify_side
                                variable=ai_controller.side_$ally_side|_original_settings.ai_settings
                            [/insert_tag]

                            {CLEAR_VARIABLE ai_controller.side_$ally_side|_current_settings.current_objective}
                        [/command]
                    [/option]
                [/revoke_objective_orders]

                ################

                [revoke_behaviour_orders]
                    [option]
                        message= _ "Clear behavior orders"

                        [show_if]
                            [variable]
                                name=ai_controller_{AFFIX}.revoke_behaviour_orders.disabled
                                not_equals=yes
                            [/variable]
                        [/show_if]

                        [command]
                            [insert_tag]
                                name=modify_side
                                variable=ai_controller.side_$ally_side|_original_settings.ai_settings
                            [/insert_tag]

                            {CLEAR_VARIABLE ai_controller.side_$ally_side|_current_settings.current_behaviour}
                        [/command]
                    [/option]
                [/revoke_behaviour_orders]

                ################

                [revoke_all_orders]
                    [option]
                        message= _ "Clear all orders"

                        [show_if]
                            [variable]
                                name=ai_controller_{AFFIX}.revoke_orders.disabled
                                not_equals=yes
                            [/variable]
                        [/show_if]

                        [command]
                            [insert_tag]
                                name=modify_side
                                variable=ai_controller.side_$ally_side|_original_settings.ai_settings
                            [/insert_tag]

                            {CLEAR_VARIABLE ai_controller.side_$ally_side|_current_settings}
                        [/command]
                    [/option]
                [/revoke_all_orders]
            [/literal]
        [/set_variables]

        [set_variables]
            name=ai_controller_{AFFIX}
            mode=merge

            [literal]
                {VARIABLES}
            [/literal]
        [/set_variables]

        [set_menu_item]
            id=ai_controller
            description= _ "Instruct ally"

            [show_if]
                [have_unit]
                    side=$ai_controller_{AFFIX}.ally_sides
                    x,y=$x1,$y1

                    [not]
                        side=$ai_controller_{AFFIX}.disabled_for_sides
                    [/not]
                [/have_unit]

                [variable]
                    name=ai_controller_{AFFIX}.enabled
                    equals=yes
                [/variable]

                [variable]
                    name=ai_controller_{AFFIX}.player_side
                    contains=$side_number
                [/variable]

                [variable]
                    name=ai_controller_{AFFIX}.defend_location.picker_active
                    boolean_equals=no
                [/variable]
            [/show_if]

            [command]
                [store_unit]
                    [filter]
                        x,y=$x1,$y1
                    [/filter]

                    kill=no
                    variable=ally_unit
                [/store_unit]

                [store_unit]
                    [filter]
                        side=$ally_unit.side
                        canrecruit=yes
                    [/filter]

                    kill=no
                    variable=ally_leader
                [/store_unit]

                {VARIABLE ally_side $ally_leader.side}

                [if]
                    [variable]
                        name=ai_controller.side_$ally_side|_original_settings.side
                        equals=$empty
                    [/variable]

                    [then]
                        [store_side]
                            side=$ally_side
                            variable=ai_controller.side_$ally_side|_original_settings
                        [/store_side]

                        [set_variables]
                            name=ai_controller.side_$ally_side|_original_settings.ai_settings

                            [value]
                                side=$ally_side

                                [insert_tag]
                                    name=ai
                                    variable=ally_leader.ai
                                [/insert_tag]
                            [/value]
                        [/set_variables]
                    [/then]
                [/if]

                {CLEAR_VARIABLE ai_controller_finished}

                [while]
                    [variable]
                        name=ai_controller_finished
                        not_equals=yes
                    [/variable]

                    [do]
                        [if]
                            [variable]
                                name=ai_controller.side_$ally_side|_current_settings.current_objective
                                equals=$empty
                            [/variable]

                            [then]
                                {VARIABLE ai_controller.side_$ally_side|_current_settings.currently_doing_objective_description _"none set."}
                            [/then]
                        [/if]

                        [if]
                            [variable]
                                name=ai_controller.side_$ally_side|_current_settings.current_behaviour
                                equals=$empty
                            [/variable]

                            [then]
                                {VARIABLE ai_controller.side_$ally_side|_current_settings.currently_doing_behaviour_description _"none set."}
                            [/then]
                        [/if]

                        [if]
                            [variable]
                                name=ai_controller.side_$ally_side|_current_settings.current_objective
                                equals=$empty
                            [/variable]

                            [variable]
                                name=ai_controller.side_$ally_side|_current_settings.current_behaviour
                                equals=$empty
                            [/variable]

                            [then]
                                [set_variables]
                                    name=ai_controller_{AFFIX}.main_menu_message

                                    [value]
                                        speaker=narrator
                                        caption= _ "Instruct ally"
                                        message= _ "$ally_leader.name (side $ally_side|) has not been given any instructions and is acting normally."+"
<0,0,0>-"+"
"+_"Objective: $ai_controller.side_$ally_side|_current_settings.currently_doing_objective_description
Behavior: $ai_controller.side_$ally_side|_current_settings.currently_doing_behaviour_description"+"
<0,0,0>-"
                                        image=wesnoth-icon.png
                                    [/value]
                                [/set_variables]
                            [/then]

                            [else]
                                [set_variables]
                                    name=ai_controller_{AFFIX}.main_menu_message

                                    [value]
                                        speaker=narrator
                                        caption= _ "Instruct ally"
                                        message= _ "$ally_leader.name (side $ally_side|) is carrying out the following instructions:"+"
<0,0,0>-"+"
"+_"Objective: $ai_controller.side_$ally_side|_current_settings.currently_doing_objective_description
Behavior: $ai_controller.side_$ally_side|_current_settings.currently_doing_behaviour_description"+"
<0,0,0>-"
                                        image=wesnoth-icon.png
                                    [/value]
                                [/set_variables]
                            [/else]
                        [/if]

                        [set_variables]
                            name=ai_controller_{AFFIX}.main_menu_message.option

                            [literal]
                                message= _ "Set objective..."

                                [command]
                                    [message]
                                        speaker=narrator
                                        caption= _ "Instruct ally"
                                        message=$ai_controller_{AFFIX}.main_menu_message.message
                                        image=wesnoth-icon.png

                                        [insert_tag]
                                            name=option
                                            variable=ai_controller_{AFFIX}.focus_on_enemy.option
                                        [/insert_tag]

                                        [insert_tag]
                                            name=option
                                            variable=ai_controller_{AFFIX}.protect.option
                                        [/insert_tag]

                                        [insert_tag]
                                            name=option
                                            variable=ai_controller_{AFFIX}.defend_location.option
                                        [/insert_tag]

                                        [insert_tag]
                                            name=option
                                            variable=ai_controller_{AFFIX}.revoke_objective_orders.option
                                        [/insert_tag]

                                        [option]
                                            message="*"+_"Back"

                                            [command]
                                            [/command]
                                        [/option]
                                    [/message]
                                [/command]
                            [/literal]

                            [literal]
                                message= _ "Set behavior..."

                                [command]
                                    [message]
                                        speaker=narrator
                                        caption= _ "Instruct ally"
                                        message=$ai_controller_{AFFIX}.main_menu_message.message
                                        image=wesnoth-icon.png

                                        [insert_tag]
                                            name=option
                                            variable=ai_controller_{AFFIX}.aggression.option
                                        [/insert_tag]

                                        [insert_tag]
                                            name=option
                                            variable=ai_controller_{AFFIX}.caution.option
                                        [/insert_tag]

                                        [insert_tag]
                                            name=option
                                            variable=ai_controller_{AFFIX}.revoke_behaviour_orders.option
                                        [/insert_tag]

                                        [option]
                                            message="*"+_"Back"

                                            [command]
                                            [/command]
                                        [/option]
                                    [/message]
                                [/command]
                            [/literal]

                            [insert_tag]
                                name=literal
                                variable=ai_controller_{AFFIX}.revoke_all_orders.option
                            [/insert_tag]

                            [literal]
                                message="*"+_"Exit"

                                [command]
                                    {VARIABLE ai_controller_finished yes}

#ifndef MULTIPLAYER
                                    [allow_undo]
                                    [/allow_undo]
#endif
                                [/command]
                            [/literal]
                        [/set_variables]

                        [insert_tag]
                            name=message
                            variable=ai_controller_{AFFIX}.main_menu_message
                        [/insert_tag]
                    [/do]
                [/while]

                {CLEAR_VARIABLE ally_unit,ally_leader,ai_controller_{AFFIX}.main_menu_message}
            [/command]
        [/set_menu_item]
    [/event]

    [event]
        name=victory

        {CLEAR_VARIABLE ai_controller,ai_controller_{AFFIX}}
    [/event]
#enddef

#define DISABLE_AI_CONTROLLER AFFIX
    {VARIABLE ai_controller_{AFFIX}.enabled no}
#enddef

#define DISABLE_AI_CONTROLLER_FOR_SIDE AFFIX SIDE
    [if]
        [variable]
            name=ai_controller_{AFFIX}.disabled_for_sides
            equals=0
        [/variable]

        [not]
            [variable]
                name=ai_controller_{AFFIX}.disabled_for_sides
                contains={SIDE}
            [/variable]
        [/not]

        [then]
            {VARIABLE ai_controller_{AFFIX}.disabled_for_sides {SIDE}}
        [/then]

        [else]
            [if]
                [variable]
                    name=ai_controller_{AFFIX}.disabled_for_sides
                    contains={SIDE}
                [/variable]

                [else]
                    {VARIABLE ai_controller_{AFFIX}.disabled_for_sides $ai_controller_{AFFIX}.disabled_for_sides|,{SIDE}}
                [/else]
            [/if]
        [/else]
    [/if]
#enddef

#define ENABLE_AI_CONTROLLER_FOR_SIDE AFFIX SIDE
    [if]
        [variable]
            name=ai_controller_{AFFIX}.disabled_for_sides
            contains={SIDE}
        [/variable]

        [then]
            [set_variables]
                name=disabled_for_sides_array

                [split]
                    list=ai_controller_{AFFIX}.disabled_for_sides
                    key=side
                    separator=,
                [/split]
            [/set_variables]

            {FOREACH disabled_for_sides_array disabled_for_side_i}
                [if]
                    [variable]
                        name=disabled_for_sides_array[$disabled_for_side_i].side
                        equals={SIDE}
                    [/variable]

                    [then]
                        {CLEAR_VARIABLE disabled_for_sides_array[$disabled_for_side_i]}
                    [/then]
                [/if]
            {NEXT disabled_for_side_i}

            [set_variable]
                name=ai_controller_{AFFIX}.disabled_for_sides

                [join]
                    variable=disabled_for_sides_array
                    key=side
                    separator=,
                [/join]
            [/set_variable]

            {CLEAR_VARIABLE disabled_for_sides_array}
        [/then]

        [else]
            {VARIABLE ai_controller_{AFFIX}.ally_sides $ai_controller_{AFFIX}.ally_sides|,{SIDE}}
        [/else]
    [/if]
#enddef

# A stub for scenario 7 of LoW
#define AI_LOCATION AFFIX STRING RADIUS X Y
    {SET_LABEL {X} {Y} ({STRING})}
#enddef
