More aspects exposed to Lua(http://wiki.wesnoth.org/LuaAI)
This commit is contained in:
parent
cea5fe7618
commit
65db78e77d
4 changed files with 112 additions and 17 deletions
|
@ -195,29 +195,39 @@ Gs^Fp , Gs^Fp , Wwf , Wwf , Mm , Rd
|
|||
|
||||
[ai]
|
||||
[aspect]
|
||||
id=aggression
|
||||
id=number_of_possible_recruits_to_force_recruit
|
||||
engine=lua
|
||||
value="0.34"
|
||||
[/aspect]
|
||||
[aspect]
|
||||
id=attack_depth
|
||||
id=passive_leader
|
||||
engine=lua
|
||||
value="2"
|
||||
value="true"
|
||||
[/aspect]
|
||||
[aspect]
|
||||
id=caution
|
||||
id=passive_leader_shares_keep
|
||||
engine=lua
|
||||
value="0.35"
|
||||
code="return true"
|
||||
[/aspect]
|
||||
[aspect]
|
||||
id=leader_aggression
|
||||
id=scout_village_targeting
|
||||
engine=lua
|
||||
value="0.36"
|
||||
[/aspect]
|
||||
[aspect]
|
||||
id=leader_value
|
||||
id=simple_targeting
|
||||
engine=lua
|
||||
value="0.37"
|
||||
value="true"
|
||||
[/aspect]
|
||||
[aspect]
|
||||
id=recruitment_ignore_bad_combat
|
||||
engine=lua
|
||||
value="false"
|
||||
[/aspect]
|
||||
[aspect]
|
||||
id=recruitment_ignore_bad_movement
|
||||
engine=lua
|
||||
value="true"
|
||||
[/aspect]
|
||||
version=10710
|
||||
[engine]
|
||||
|
@ -257,11 +267,14 @@ end
|
|||
|
||||
|
||||
function my_ai:do_moves()
|
||||
wesnoth.message('Aggression: ' .. ai.get_aggression())
|
||||
wesnoth.message('Att. depth: ' .. ai.get_attack_depth())
|
||||
wesnoth.message('Caution: ' .. ai.get_caution())
|
||||
wesnoth.message('Leader aggression: ' .. ai.get_leader_aggression())
|
||||
wesnoth.message('Leader value: ' .. ai.get_leader_value())
|
||||
|
||||
wesnoth.message('Passive leader: ', tostring(ai.get_passive_leader()))
|
||||
wesnoth.message('Passive leader shares keep: ', tostring(ai.get_passive_leader_shares_keep()))
|
||||
wesnoth.message('Simple targeting: ', tostring(ai.get_simple_targeting()))
|
||||
wesnoth.message('Scout village targ.: ' , ai.get_scout_village_targeting())
|
||||
wesnoth.message('Recruit. ignore bc: ' , tostring(ai.get_recruitment_ignore_bad_combat()))
|
||||
wesnoth.message('Recruit. ignore bm: ' , tostring(ai.get_recruitment_ignore_bad_movement()))
|
||||
wesnoth.message('nofprtfr: ' , ai.get_number_of_possible_recruits_to_force_recruit())
|
||||
|
||||
my_leader = wesnoth.get_units({canrecruit = true, side = ai.side})[1]
|
||||
x,y = ai.suitable_keep(my_leader)
|
||||
|
|
|
@ -405,7 +405,11 @@ public:
|
|||
std::string value;
|
||||
if (cfg.has_attribute("value"))
|
||||
{
|
||||
value = cfg["value"].str();
|
||||
value = cfg["value"].str();
|
||||
if (value == "yes") // @TODO for Nephro or Crab: get rid of this workaround
|
||||
{
|
||||
value = "true";
|
||||
}
|
||||
value = "return (" + value + ")";
|
||||
}
|
||||
else if (cfg.has_attribute("code"))
|
||||
|
|
|
@ -283,6 +283,56 @@ static int cfun_ai_get_leader_value(lua_State *L)
|
|||
return 1;
|
||||
}
|
||||
|
||||
static int cfun_ai_get_passive_leader(lua_State *L)
|
||||
{
|
||||
bool passive_leader = get_readonly_context(L).get_passive_leader();
|
||||
lua_pushboolean(L, passive_leader);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int cfun_ai_get_passive_leader_shares_keep(lua_State *L)
|
||||
{
|
||||
bool passive_leader_shares_keep = get_readonly_context(L).get_passive_leader_shares_keep();
|
||||
lua_pushboolean(L, passive_leader_shares_keep);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int cfun_ai_get_number_of_possible_recruits_to_force_recruit(lua_State *L)
|
||||
{
|
||||
double noprtfr = get_readonly_context(L).get_number_of_possible_recruits_to_force_recruit(); // @note: abbreviation
|
||||
lua_pushnumber(L, noprtfr);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int cfun_ai_get_recruitment_ignore_bad_combat(lua_State *L)
|
||||
{
|
||||
bool recruitment_ignore_bad_combat = get_readonly_context(L).get_recruitment_ignore_bad_combat();
|
||||
lua_pushboolean(L, recruitment_ignore_bad_combat);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int cfun_ai_get_recruitment_ignore_bad_movement(lua_State *L)
|
||||
{
|
||||
bool recruitment_ignore_bad_movement = get_readonly_context(L).get_recruitment_ignore_bad_movement();
|
||||
lua_pushboolean(L, recruitment_ignore_bad_movement);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int cfun_ai_get_scout_village_targeting(lua_State *L)
|
||||
{
|
||||
double scout_village_targeting = get_readonly_context(L).get_scout_village_targeting();
|
||||
lua_pushnumber(L, scout_village_targeting);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int cfun_ai_get_simple_targeting(lua_State *L)
|
||||
{
|
||||
bool simple_targeting = get_readonly_context(L).get_simple_targeting();
|
||||
lua_pushboolean(L, simple_targeting);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
lua_ai_context* lua_ai_context::create(lua_State *L, char const *code, ai::engine_lua *engine)
|
||||
{
|
||||
int res_ai = luaL_loadstring(L, code);//stack size is now 1 [ -1: ai_context]
|
||||
|
@ -307,6 +357,13 @@ lua_ai_context* lua_ai_context::create(lua_State *L, char const *code, ai::engin
|
|||
{ "get_caution", &cfun_ai_get_caution },
|
||||
{ "get_leader_aggression", &cfun_ai_get_leader_aggression },
|
||||
{ "get_leader_value", &cfun_ai_get_leader_value },
|
||||
{ "get_number_of_possible_recruits_to_force_recruit", &cfun_ai_get_number_of_possible_recruits_to_force_recruit},
|
||||
{ "get_passive_leader", &cfun_ai_get_passive_leader},
|
||||
{ "get_passive_leader_shares_keep", &cfun_ai_get_passive_leader_shares_keep},
|
||||
{ "get_recruitment_ignore_bad_combat", &cfun_ai_get_recruitment_ignore_bad_combat},
|
||||
{ "get_recruitment_ignore_bad_movement", &cfun_ai_get_recruitment_ignore_bad_movement},
|
||||
{ "get_scout_village_targeting", &cfun_ai_get_scout_village_targeting},
|
||||
{ "get_simple_targeting", &cfun_ai_get_simple_targeting},
|
||||
{ "move", &cfun_ai_execute_move_partial },
|
||||
{ "move_full", &cfun_ai_execute_move_full },
|
||||
{ "recall", &cfun_ai_execute_recall },
|
||||
|
|
|
@ -364,16 +364,37 @@ static register_lua_aspect_factory< lua_aspect<double> >
|
|||
|
||||
static register_lua_aspect_factory< lua_aspect<int> >
|
||||
attack_depth__lua_aspect_factory("attack_depth*lua_aspect");
|
||||
|
||||
|
||||
static register_lua_aspect_factory< lua_aspect<double> >
|
||||
caution__lua_aspect_factory("caution*lua_aspect");
|
||||
|
||||
|
||||
static register_lua_aspect_factory< lua_aspect<double> >
|
||||
leader_aggression__lua_aspect_factory("leader_aggression*lua_aspect");
|
||||
|
||||
|
||||
static register_lua_aspect_factory< lua_aspect<double> >
|
||||
leader_value__lua_aspect_factory("leader_value*lua_aspect");
|
||||
|
||||
static register_lua_aspect_factory< lua_aspect<double> >
|
||||
number_of_possible_recruits_to_force_recruit__lua_aspect_factory("number_of_possible_recruits_to_force_recruit*lua_aspect");
|
||||
|
||||
static register_lua_aspect_factory< lua_aspect<bool> >
|
||||
passive_leader__lua_aspect_factory("passive_leader*lua_aspect");
|
||||
|
||||
static register_lua_aspect_factory< lua_aspect<bool> >
|
||||
passive_leader_shares_keep__lua_aspect_factory("passive_leader_shares_keep*lua_aspect");
|
||||
|
||||
static register_lua_aspect_factory< lua_aspect<bool> >
|
||||
recruitment_ignore_bad_combat__lua_aspect_factory("recruitment_ignore_bad_combat*lua_aspect");
|
||||
|
||||
static register_lua_aspect_factory< lua_aspect<bool> >
|
||||
recruitment_ignore_bad_movement__lua_aspect_factory("recruitment_ignore_bad_movement*lua_aspect");
|
||||
|
||||
static register_lua_aspect_factory< lua_aspect<double> >
|
||||
scout_village_targeting__lua_aspect_factory("scout_village_targeting*lua_aspect");
|
||||
|
||||
static register_lua_aspect_factory< lua_aspect<bool> >
|
||||
simple_targeting__lua_aspect_factory("simple_targeting*lua_aspect");
|
||||
|
||||
void registry::init()
|
||||
{
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue