LuaAI

From The Battle for Wesnoth Wiki
Revision as of 10:23, 2 June 2011 by Nephro (talk | contribs)

A page containing information on configuring the AI using Lua. NB: previous contents of the page moved to http://wiki.wesnoth.org/LuaAI(old)

Aspects

Patch r49721 enabled users to write aspects using Lua. This simplifies the definition of aspects that are meant to change depending on the game state. A good example could be aggression, which changes depending on the time of the day(since ToD affects the actual battle performance of your forces).
Static aggression:

[aspect]
	id="aggression"
	engine="lua"
	value="0.3"
[/aspect]

Dynamic aggression:

[aspect]
	id=aggression
	engine=lua
	     
	code=<<
		wesnoth.fire("store_time_of_day")
		local value = 0
		tod = tostring(wesnoth.get_variable('time_of_day').name) 
		if (tod == 'Morning') then
			value = 0.2
		else
			value = 1
		end
	
		wesnoth.fire("clear_variable", {name = "time_of_day"})
		return value
	>>      
[/aspect]

Note: the way of getting the ToD is hacky here, but I will create a more elegant method soon(Nephro).
Also note the difference between 'code' and 'value' attributes, this is important.

Stages

Candidate actions