ExpAI recruiting: make high_level_fraction parameter configurable
This also sets its default value to zero, in order to have consistent default behavior with versions from before this parameter was introduced. It also provides a macro so that the ExpAI can be used with custom parameters in a scenario config, and adds high_level_fraction as an optional parameter to the Recruit Rushers Micro AI.
This commit is contained in:
parent
b8d1ef94f0
commit
6dc199d4f8
5 changed files with 76 additions and 2 deletions
|
@ -35,6 +35,7 @@ wesnoth.require("ai/lua/generic_recruit_engine.lua").init(dummy_engine, params)
|
|||
local ca_recruit_rushers = {}
|
||||
|
||||
function ca_recruit_rushers:evaluation(cfg, data)
|
||||
params.high_level_fraction = cfg.high_level_fraction
|
||||
return dummy_engine:recruit_rushers_eval()
|
||||
end
|
||||
|
||||
|
|
|
@ -785,7 +785,7 @@ return {
|
|||
local randomness = params.randomness or 0.1
|
||||
|
||||
-- Bonus for higher-level units, as unit cost is penalized otherwise
|
||||
local high_level_fraction = 0.33
|
||||
local high_level_fraction = params.high_level_fraction or 0
|
||||
local all_units = AH.get_live_units {
|
||||
side = wesnoth.current.side,
|
||||
{ "not", { canrecruit = "yes" }}
|
||||
|
|
|
@ -9,6 +9,7 @@ wesnoth.require("ai/lua/generic_recruit_engine.lua").init(internal_recruit_cas,
|
|||
local ca_recruit_rushers = {}
|
||||
|
||||
function ca_recruit_rushers:evaluation(cfg)
|
||||
internal_params.high_level_fraction = cfg.high_level_fraction
|
||||
internal_params.randomness = cfg.randomness
|
||||
internal_params.score_function = function() return cfg.ca_score end
|
||||
return internal_recruit_cas:recruit_rushers_eval()
|
||||
|
|
|
@ -18,7 +18,7 @@ local function handle_default_recruitment(cfg)
|
|||
end
|
||||
|
||||
function wesnoth.micro_ais.recruit_rushers(cfg)
|
||||
local optional_keys = { "randomness" }
|
||||
local optional_keys = { "high_level_fraction", "randomness" }
|
||||
local CA_parms = {
|
||||
ai_id = 'mai_rusher_recruit',
|
||||
{ ca_id = "move", location = 'ca_recruit_rushers.lua', score = cfg.ca_score or 180000 }
|
||||
|
|
|
@ -590,3 +590,75 @@
|
|||
[/candidate_action]
|
||||
[/stage]
|
||||
#enddef
|
||||
|
||||
#define CUSTOMIZABLE_EXPERIMENTAL_AI ARGS
|
||||
# Use the Experimental AI with custom parameter setting
|
||||
# Put this into the [side][ai] tag.
|
||||
# Does not work in [modify_side][ai] or [modify_ai] at the moment.
|
||||
[stage]
|
||||
id=main_loop
|
||||
name=ai_default_rca::candidate_action_evaluation_loop
|
||||
{AI_CA_GOTO}
|
||||
#{AI_CA_RECRUITMENT}
|
||||
{AI_CA_MOVE_LEADER_TO_GOALS}
|
||||
{AI_CA_MOVE_LEADER_TO_KEEP}
|
||||
{AI_CA_HIGH_XP_ATTACK}
|
||||
{AI_CA_COMBAT}
|
||||
{AI_CA_HEALING}
|
||||
{AI_CA_VILLAGES}
|
||||
{AI_CA_RETREAT}
|
||||
{AI_CA_MOVE_TO_TARGETS}
|
||||
{AI_CA_LEADER_SHARES_KEEP}
|
||||
[candidate_action]
|
||||
engine=lua
|
||||
name=recruit_rushers
|
||||
max_score=300000
|
||||
location="ai/lua/ca_recruit_rushers.lua"
|
||||
[args]
|
||||
{ARGS}
|
||||
[/args]
|
||||
[/candidate_action]
|
||||
[candidate_action]
|
||||
engine=lua
|
||||
name=switch_castle
|
||||
max_score=290000
|
||||
location="ai/lua/ca_castle_switch.lua"
|
||||
[/candidate_action]
|
||||
[candidate_action]
|
||||
engine=lua
|
||||
name=retreat_injured
|
||||
max_score=205000
|
||||
location="ai/lua/ca_retreat_injured.lua"
|
||||
[/candidate_action]
|
||||
[candidate_action]
|
||||
engine=lua
|
||||
name=grab_villages
|
||||
max_score=200000
|
||||
location="ai/lua/ca_grab_villages.lua"
|
||||
[/candidate_action]
|
||||
[candidate_action]
|
||||
engine=lua
|
||||
name=spread_poison
|
||||
max_score=190000
|
||||
location="ai/lua/ca_spread_poison.lua"
|
||||
[/candidate_action]
|
||||
[candidate_action]
|
||||
engine=lua
|
||||
name=place_healers
|
||||
max_score=95000
|
||||
location="ai/lua/ca_place_healers.lua"
|
||||
[/candidate_action]
|
||||
[candidate_action]
|
||||
engine=lua
|
||||
name=village_hunt
|
||||
max_score=30000
|
||||
location="ai/lua/ca_village_hunt.lua"
|
||||
[/candidate_action]
|
||||
[candidate_action]
|
||||
engine=lua
|
||||
name=move_to_any_enemy
|
||||
max_score=1
|
||||
location="ai/lua/ca_move_to_any_enemy.lua"
|
||||
[/candidate_action]
|
||||
[/stage]
|
||||
#enddef
|
||||
|
|
Loading…
Add table
Reference in a new issue