wesnoth/data/ai/scenarios/scenario-lua_ai_old_syntax.cfg
2021-06-19 12:09:46 -05:00

191 lines
12 KiB
INI

#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.interface.add_chat_message('Lua AI stage says hello.')
std_print('Lua AI stage says hello.')
end
function my_ai:candidate_action_evaluation_hello()
wesnoth.interface.add_chat_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.interface.add_chat_message('Hello from candidate action execution!')
std_print('Hello from candidate action execution!')
end
function my_ai:candidate_action_evaluation_hello2()
wesnoth.interface.add_chat_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.interface.add_chat_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]