#textdomain wesnoth-ai
# @file data/scenario-luaai.cfg

[test]
    name= _ "Lua AI Test scenario (old syntax)"
    id=lua_ai_old_syntax
    turns=90
    {DEFAULT_SCHEDULE}

    map_data="
Hh          , Hh          , Gg          , Wwf         , Wwf         , Gs^Fp       , Mm          , Hh          , Gg          , Gs^Fp       , Gg          , Hh          , Gg          , Mm          , Hh          , Mm          , Wwf         , Wwf         , Hh          , Gs^Fp       , Hh          , Mm          , Mm
Hh          , Hh          , Gg^Ve       , Wwf         , Wwf         , Gs^Fp       , Mm          , Hh          , Gg          , Gs^Fp       , Gg          , Hh          , Gg          , Mm          , Hh          , Mm          , Wwf         , Wwf         , Hh          , Gs^Fp       , Hh          , Mm          , Mm
Wwf         , Wwf         , Wwf         , Wwf         , Gg          , Wwf         , Wwf         , Hh          , Gg          , Gg          , Wwf         , Ch          , Wwf         , Gs^Fp       , Wwf         , Wwf         , Re          , Re          , Hh          , Mm          , Wwf         , Mm          , Mm
Mm          , Mm          , Wwf         , Gs^Fp       , Gg^Vh       , Wwf         , Gg          , Gg          , Wwf         , Wwf         , Wwf         , 1 Kh        , Ch          , Wwf         , Re          , Re          , Rd          , Rd          , Wwf         , Wwf         , Gs^Fp       , Wwf         , Wwf
Wwf         , Wwf         , Mm          , Wwf         , Gs^Fp       , Wwf         , Wwf         , Wwf         , Gg^Vh       , Gg          , Wwf         , Ch          , Wwf         , Ch          , Rd          , Rd          , Wwf         , Wwf         , Gg^Vh       , Gs^Fp       , Re^Gvs      , Hh          , Hh
Hh          , Hh          , Wwf         , Gs^Fp       , Wwf         , Wwf         , Gg          , Gg          , Gg          , Gg          , Wwf         , Ch          , Gg          , Wwf         , Wwf         , Wwf         , Mm          , Gs^Fp       , Re          , Re^Gvs      , Gg^Wm       , Re^Gvs      , Re^Gvs
Wwf         , Wwf         , Mm          , Wwf         , Hh          , Gs^Fp       , Rd          , Rd          , Gg          , Gg          , Wwf         , Wwf         , Gs^Fp       , Gg          , Hh          , Gg          , Re          , Re          , Rd          , Rd          , Gg          , Hh          , Hh
Hh          , Hh          , Gs^Fp       , Gg          , Gg          , Rd          , Gg          , Gg          , Wwf         , Wwf         , Gs^Fp       , Wwf         , Gs^Fp       , Mm          , Re          , Re          , Rd          , Rd          , Gg          , Gg^Efm      , Mm          , Gs^Fp       , Gs^Fp
Gs^Fp       , Gs^Fp       , Gg          , Gg          , Wwf         , Gg          , Wwf         , Wwf         , Mm          , Hh          , Wwf         , Wwf         , Re          , Re          , Rd          , Rd          , Rd          , Gg          , Gs^Fp       , Gs^Fp       , Gs^Fp       , Hh          , Hh
Hh          , Hh          , Wwf         , Wwf         , Hh          , Wwf         , Gg          , Gg          , Gg          , Gg          , Wwf         , Re          , Re          , Rd          , Gg          , Gg          , Gg          , Gg^Vh       , Hh          , Gg          , Wwf         , Gg^Efm      , Gg^Efm
Wwf         , Wwf         , Hh          , Gg^Efm      , Gs^Fp       , Hh^Vhh      , Gg          , Gg          , Gg          , Ss^Vhs      , Hh          , Ww          , Gs^Fp       , Gg          , Gs^Fp       , Hh          , Wwf         , Wwf         , Wwf         , Wwf         , Gg          , Wwf         , Wwf
Hh          , Hh          , Gg          , Gg          , Re          , Gg          , Re          , Re          , Gg          , Ss          , Gs^Fp       , Ww          , Hh          , Mm          , Ww          , Wwf         , Gg          , Gg          , Ds          , Gg          , Gg          , Gs^Fp       , Gs^Fp
Gs^Fp       , Gs^Fp       , Gg          , Rd          , Rd          , Re          , Rd          , Re          , Hh          , Mm          , Wwf         , Ww          , Ww          , Ww          , Gg          , Gg          , Hh          , Gs^Fp       , Rd          , Rd          , Hh          , Gg          , Gg
Rd          , Rd          , Gs^Fp       , Hh          , Rd          , Rd          , Gs^Fp       , Re          , Gg          , Gg          , Wwf         , Gg          , Wwf         , Gg          , Gg          , Re          , Gs^Fp       , Hh          , Rd          , Mm          , Gs^Fp       , Rd          , Rd
Rd          , Rd          , Hh          , Mm          , Rd          , Hh          , Hh          , Re          , Gg          , Gg          , Ww          , Gg          , Wwf         , Gg          , Hh          , Re          , Rd          , Rd          , Rd          , Hh          , Gg          , Rd          , Rd
Gg          , Gg          , Gg          , Rd          , Ds          , Gs^Fp       , Gg          , Gg          , Ww          , Ww          , Hh          , Ww          , Gs^Fp       , Mm          , Gg          , Re          , Re          , Re          , Re          , Rd          , Gg          , Gs^Fp       , Gs^Fp
Gs^Fp       , Gs^Fp       , Gg          , Gg          , Wwf         , Gg          , Wwf         , Wwf         , Gs^Fp       , Mm          , Gs^Fp       , Ww          , Hh          , Ss          , Gg          , Re          , Gg          , Gg          , Gs^Fp       , Gg          , Hh          , Hh          , Hh
Wwf         , Wwf         , Wwf         , Wwf         , Hh          , Wwf         , Gg          , Hh          , Gg          , Gg          , Re          , Ww          , Wwf         , Ss^Vhs      , Gg          , Gg          , Gg          , Hh^Vhh      , Hh          , Gg^Efm      , Wwf         , Wwf         , Wwf
Gg^Efm      , Gg^Efm      , Gs^Fp       , Gg          , Gs^Fp       , Gg^Vh       , Rd          , Gg          , Rd          , Rd          , Re          , Re          , Wwf         , Gg          , Mm          , Gg          , Wwf         , Wwf         , Wwf         , Wwf         , Gg          , Mm          , Mm
Hh          , Hh          , Mm          , Gs^Fp       , Gg          , Gg          , Rd          , Rd          , Re          , Re          , Gs^Fp       , Wwf         , Gs^Fp       , Hh          , Wwf         , Wwf         , Gg          , Gg          , Gg          , Gg          , Gs^Fp       , Gs^Fp       , Gs^Fp
Gs^Fp       , Gs^Fp       , Gg          , Gg^Efm      , Rd          , Rd          , Re          , Re          , Hh          , Mm          , Gg          , Wwf         , Wwf         , Wwf         , Gg          , Gg          , Rd          , Rd          , Hh          , Gg          , Mm          , Hh          , Hh
Hh          , Hh          , Gg^Wm       , Rd          , Re          , Re          , Mm          , Gg          , Wwf         , Wwf         , Wwf         , Ch          , Gg          , Gg          , Gg          , Rd          , Gg          , Gs^Fp       , Wwf         , Wwf         , Wwf         , Wwf         , Wwf
Re^Gvs      , Re^Gvs      , Re^Gvs      , Re^Gvs      , Gg^Vh       , Gs^Fp       , Wwf         , Wwf         , Rd          , Ch          , Ch          , Ch          , Gg          , Gg          , Gg^Vh       , Gg          , Wwf         , Wwf         , Gs^Fp       , Gs^Fp       , Gg^Ve       , Gg          , Gg
Hh          , Hh          , Gs^Fp       , Gs^Fp       , Wwf         , Wwf         , Rd          , Rd          , Re          , Re          , Wwf         , 2 Kh        , Wwf         , Gg          , Wwf         , Wwf         , Gg          , Wwf         , Wwf         , Wwf         , Wwf         , Gs^Fp       , Gs^Fp
Gs^Fp       , Gs^Fp       , Wwf         , Wwf         , Mm          , Rd          , Gs^Fp       , Hh          , Wwf         , Wwf         , Gg          , Ch          , Gg          , Wwf         , Hh          , Gg          , Wwf         , Wwf         , Gg^Vh       , Gg          , Wwf         , Mm          , Mm
Gs^Fp       , Gs^Fp       , Wwf         , Wwf         , Mm          , Rd          , Gs^Fp       , Wwf         , Wwf         , Gg          , Gg          , Gg          , Gg          , Gg          , Hh          , Gg          , Wwf         , Wwf         , Gg          , Gg          , Wwf         , Mm          , Mm
"

    [side]
        side=1
        controller=human
        suppress_end_turn_confirmation=yes
        id=side_1_leader
        type=Dwarvish Steelclad
        canrecruit=yes
        recruit=Dwarvish Guardsman,Dwarvish Fighter,Dwarvish Thunderer,Thief,Poacher,Footpad
        gold=100

        [unit]
            x,y=3,12
            type="Elvish Fighter"
            random_traits=no
            generate_name=yes
            [modifications]
                [trait]
                    id=move
                    [effect]
                        apply_to=movement
                        set=0
                    [/effect]
                [/trait]
                [trait]
                    id=hp
                    [effect]
                        apply_to=hitpoints
                        increase_total=120
                    [/effect]
                [/trait]
            [/modifications]
        [/unit]
    [/side]

    [side]
        side=2
        controller=ai
        id=LuaAI
        name=LuaAI
        type=Dark Sorcerer
        canrecruit=yes
        recruit=Skeleton,Skeleton Archer,Walking Corpse,Ghost,Vampire Bat,Dark Adept,Ghoul
        gold=100

        [unit]
            placement=recall
            type="Skeletal Dragon"
            id="Kiressh"
            name= _ "Kiressh"
        [/unit]

        [unit]
            x,y=3,11
            type="Goblin Spearman"
            generate_name=yes
        [/unit]

        [unit]
            x,y=3,13
            type="Goblin Spearman"
            generate_name=yes
        [/unit]

        [unit]
            x,y=2,12
            type="Goblin Spearman"
            generate_name=yes
        [/unit]

        [ai]
            [engine]
                name="lua"
                code=<<
--! ==============================================================
local my_ai = { }


function my_ai:stage_hello()
    wesnoth.message('Lua AI stage says hello.')
    std_print('Lua AI stage says hello.')
end

function my_ai:candidate_action_evaluation_hello()
    wesnoth.message('Hello from candidate action evaluation!')
    std_print('Hello from candidate action evaluation!')

    return 42
end

function my_ai:candidate_action_execution_hello(cfg)
    wesnoth.message('Hello from candidate action execution!')
    std_print('Hello from candidate action execution!')
end

function my_ai:candidate_action_evaluation_hello2()
    wesnoth.message('Hello from second candidate action evaluation!')
    std_print('Hello from second candidate action evaluation!')

    return 99
end

function my_ai:candidate_action_execution_hello2()
       wesnoth.message('Hello from second candidate action execution!')
       std_print('Hello from second candidate action execution!')

       self:do_moves()
end

function my_ai:do_moves()
    -- Note that there is no check whether these actions are possible.
    -- The CA will therefore be blacklisted the second time it gets called.

    ai.attack(2, 12, 3, 12, 1, 1)
    ai.attack(3, 13, 3, 12, 2, 1)
    ai.attack(3, 11, 3, 12)

    if wesnoth.current.turn==1 then
        ai.recruit("Vampire Bat", 10, 22)
        ai.recall("Kiressh", 11, 21)
    end
end

return my_ai
--! ==============================================================
                >>
            [/engine]
            [stage]
                name=ai_default_rca::candidate_action_evaluation_loop
                id=ca_loop
                [candidate_action]
                    engine=lua
                    name=first_CA
                    id=first_CA
                    evaluation="return (...):candidate_action_evaluation_hello()"
                    execution="(...):candidate_action_execution_hello()"
                [/candidate_action]
                [candidate_action]
                    engine=lua
                    id=second_CA
                    name=second_CA
                    evaluation="return (...):candidate_action_evaluation_hello2()"
                    execution="(...):candidate_action_execution_hello2()"
                [/candidate_action]
            [/stage]
            [stage]
                name="another_stage"
                engine="lua"
                code= "(...):stage_hello()"
            [/stage]
        [/ai]
    [/side]
[/test]
