diff --git a/src/ai/composite/engine_lua.cpp b/src/ai/composite/engine_lua.cpp index 4132f3688848..2fc6fe35d8c9 100644 --- a/src/ai/composite/engine_lua.cpp +++ b/src/ai/composite/engine_lua.cpp @@ -126,8 +126,13 @@ class lua_candidate_action_wrapper : public lua_candidate_action_wrapper_base { class lua_candidate_action_wrapper_external : public lua_candidate_action_wrapper_base { public: lua_candidate_action_wrapper_external(rca_context& context, const config& cfg, lua_ai_context &lua_ai_ctx) - : lua_candidate_action_wrapper_base(context,cfg), location_(cfg["location"]), eval_parms_(cfg["eval_parms"]), exec_parms_(cfg["exec_parms"]) + : lua_candidate_action_wrapper_base(context,cfg), location_(cfg["location"]), use_parms_(false) { + if (cfg.has_attribute("exec_parms") || cfg.has_attribute("eval_parms")) { + use_parms_ = true; + exec_parms_ = cfg["exec_parms"].str(); + eval_parms_ = cfg["eval_parms"].str(); + } std::string eval_code; std::string exec_code; generate_code(eval_code, exec_code); @@ -142,8 +147,10 @@ class lua_candidate_action_wrapper_external : public lua_candidate_action_wrappe { config cfg = lua_candidate_action_wrapper_base::to_config(); cfg["location"] = location_; - cfg["eval_parms"] = eval_parms_; - cfg["exec_parms"] = exec_parms_; + if (use_parms_) { + cfg["eval_parms"] = eval_parms_; + cfg["exec_parms"] = exec_parms_; + } return cfg; } @@ -151,12 +158,18 @@ class lua_candidate_action_wrapper_external : public lua_candidate_action_wrappe std::string location_; std::string eval_parms_; std::string exec_parms_; + bool use_parms_; void generate_code(std::string& eval, std::string& exec) { std::string preamble = "local params, data, state = ...\n"; std::string load = "wesnoth.require(\"" + location_ + "\")"; - eval = preamble + "return " + load + ":evaluation(ai, {" + eval_parms_ + "}, {data = data})"; - exec = preamble + load + ":execution(ai, {" + exec_parms_ + "}, {data = data})"; + if (use_parms_) { + eval = preamble + "return " + load + ":evaluation(ai, {" + eval_parms_ + "}, {data = data})"; + exec = preamble + load + ":execution(ai, {" + exec_parms_ + "}, {data = data})"; + } else { + eval = preamble + "return " + load + ".evaluation(params, data, state)"; + exec = preamble + load + ".execution(params, data, state)"; + } } };