mirror of
https://github.com/wesnoth/wesnoth
synced 2025-04-25 02:01:34 +00:00
191 lines
12 KiB
INI
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]
|